openapi: 3.1.0 info: title: Sovereign Event Bus (SEB) API version: 1.0.0 description: | REST API specification for the Sovereign Event Bus (SEB). SEB provides deterministic, verifiable event routing with cryptographic sealing and WORM chain integration. This API allows clients to submit events, query status, and retrieve execution results. Generated from: SEB_SOVEREIGN_EVENT_BUS_MASTER_SPECIFICATION.xml contact: name: SnapKitty Team url: https://snapkitty.dev license: name: Proprietary url: https://snapkitty.dev/license servers: - url: https://api.snapkitty.dev/seb/v1 description: Production server - url: https://staging-api.snapkitty.dev/seb/v1 description: Staging server - url: http://localhost:8080/seb/v1 description: Local development server security: - bearerAuth: [] - apiKey: [] tags: - name: events description: Event submission and management - name: status description: Event status queries - name: health description: Service health checks paths: /events: post: tags: - events summary: Submit an event envelope description: | Submit a new event envelope to the SEB for processing. The envelope will be validated, routed through policy gates, and executed by the appropriate adapter. operationId: submitEvent requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EventEnvelope' examples: verifyProof: summary: Verify proof bundle value: type: snapkitty.intent.verify_proof version: "1.0.0" id: 01J4XQZM8K7N6P5R4S3T2V1W0X timestamp: "2026-07-25T04:00:00Z" intent: action: verify_proof subject: "bundle:01J..." parameters: {} context: environment: production constraints: network: deny max_runtime_ms: 5000 max_memory_bytes: 1048576 filesystem: readonly metadata: {} authority: principal: "user:alice" credentials: credential_type: api_key value: sk_... scope: - read - verify evidence: [] responses: '201': description: Event accepted and queued for processing content: application/json: schema: $ref: '#/components/schemas/EventSubmissionResponse' '400': description: Invalid event envelope content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden - policy denied content: application/json: schema: $ref: '#/components/schemas/Error' '429': description: Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/Error' /events/{eventId}: get: tags: - status summary: Get event status description: Query the current status and result of an event operationId: getEventStatus parameters: - name: eventId in: path required: true schema: type: string pattern: '^[0-9A-HJKMNP-TV-Z]{26}$' description: ULID of the event responses: '200': description: Event status retrieved content: application/json: schema: $ref: '#/components/schemas/EventStatusResponse' '404': description: Event not found content: application/json: schema: $ref: '#/components/schemas/Error' /health: get: tags: - health summary: Health check description: Check if the SEB service is healthy operationId: healthCheck security: [] responses: '200': description: Service is healthy content: application/json: schema: $ref: '#/components/schemas/HealthResponse' components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT apiKey: type: apiKey in: header name: X-API-Key schemas: EventEnvelope: type: object required: - type - version - id - timestamp - intent - context - authority properties: type: type: string description: Event type identifier example: snapkitty.intent.verify_proof version: type: string description: Schema version example: "1.0.0" id: type: string pattern: '^[0-9A-HJKMNP-TV-Z]{26}$' description: Unique event identifier (ULID) timestamp: type: string format: date-time description: Event creation timestamp (ISO 8601) intent: $ref: '#/components/schemas/Intent' context: $ref: '#/components/schemas/Context' authority: $ref: '#/components/schemas/Authority' continuation: $ref: '#/components/schemas/Continuation' evidence: type: array items: $ref: '#/components/schemas/Evidence' default: [] seal: $ref: '#/components/schemas/Seal' Intent: type: object required: - action - subject - parameters properties: action: type: string minLength: 1 description: Action to perform subject: type: string minLength: 1 description: Subject of the action parameters: type: object additionalProperties: true description: Action parameters Context: type: object required: - environment - constraints - metadata properties: environment: type: string minLength: 1 description: Execution environment example: production constraints: $ref: '#/components/schemas/Constraints' metadata: type: object additionalProperties: true Constraints: type: object required: - network - max_runtime_ms - max_memory_bytes - filesystem properties: network: type: string enum: [allow, deny, restricted] max_runtime_ms: type: integer minimum: 1 description: Maximum runtime in milliseconds max_memory_bytes: type: integer minimum: 1 description: Maximum memory in bytes filesystem: type: string enum: [readonly, readwrite, deny] Authority: type: object required: - principal - credentials - scope properties: principal: type: string minLength: 1 description: Principal identifier credentials: $ref: '#/components/schemas/Credentials' scope: type: array items: type: string description: Authority scope Credentials: type: object required: - credential_type - value properties: credential_type: type: string minLength: 1 value: type: string minLength: 1 signature: type: string Continuation: type: object required: - step - total_steps - state properties: step: type: integer minimum: 1 total_steps: type: integer minimum: 1 state: type: object additionalProperties: true Evidence: type: object required: - evidence_type - hash - signature - timestamp properties: evidence_type: type: string minLength: 1 hash: type: string minLength: 1 signature: type: string minLength: 1 timestamp: type: string format: date-time Seal: type: object required: - hash - signature - public_key - timestamp - algorithm properties: hash: type: string minLength: 1 signature: type: string minLength: 1 public_key: type: string minLength: 1 timestamp: type: string format: date-time algorithm: type: string minLength: 1 example: ed25519 EventSubmissionResponse: type: object required: - id - status properties: id: type: string pattern: '^[0-9A-HJKMNP-TV-Z]{26}$' description: Event ID status: type: string enum: [queued, processing] message: type: string EventStatusResponse: type: object required: - id - status - result properties: id: type: string pattern: '^[0-9A-HJKMNP-TV-Z]{26}$' status: type: string enum: [queued, processing, completed, failed] result: $ref: '#/components/schemas/ExecutionResult' ExecutionResult: type: object required: - status - output - evidence - metrics properties: status: type: string enum: [success, failure, timeout, denied] output: type: object additionalProperties: true evidence: type: array items: $ref: '#/components/schemas/Evidence' metrics: $ref: '#/components/schemas/ExecutionMetrics' ExecutionMetrics: type: object required: - duration_ms - memory_used_bytes - network_calls - filesystem_operations properties: duration_ms: type: integer minimum: 0 memory_used_bytes: type: integer minimum: 0 network_calls: type: integer minimum: 0 filesystem_operations: type: integer minimum: 0 HealthResponse: type: object required: - status - version properties: status: type: string enum: [healthy, degraded, unhealthy] version: type: string uptime_seconds: type: integer minimum: 0 Error: type: object required: - error - message properties: error: type: string description: Error code message: type: string description: Human-readable error message details: type: object additionalProperties: true