sov-kernel-monster / seb /contracts /openapi.template
SNAPKITTYWEST's picture
chore: push full sov-kernel-monster content from local build
9425aed verified
Raw
History Blame Contribute Delete
12.3 kB
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