41 lines
2.9 KiB
JSON
41 lines
2.9 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://agent-call.invalid/contracts/mq.schema.json",
|
|
"title": "agent-call MQ command and event envelope",
|
|
"oneOf": [{"$ref": "#/$defs/executeCommand"}, {"$ref": "#/$defs/event"}],
|
|
"$defs": {
|
|
"id": {"type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[^\\s/\\\\]+$"},
|
|
"tenantKey": {"type": "string", "minLength": 1},
|
|
"time": {"type": "string", "format": "date-time"},
|
|
"executeCommand": {
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["schema_version", "command_type", "command_id", "tenant_id", "tenant_key", "trace_id", "issued_at", "not_after", "payload"],
|
|
"properties": {
|
|
"schema_version": {"const": "1.0"}, "command_type": {"const": "call.execute"}, "command_id": {"$ref": "#/$defs/id"},
|
|
"tenant_id": {"$ref": "#/$defs/id"}, "tenant_key": {"$ref": "#/$defs/tenantKey"}, "trace_id": {"$ref": "#/$defs/id"},
|
|
"issued_at": {"$ref": "#/$defs/time"}, "not_after": {"$ref": "#/$defs/time"}, "payload": {"$ref": "#/$defs/executePayload"}
|
|
}
|
|
},
|
|
"executePayload": {
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["execution_id", "task_id", "task_item_id", "task_revision", "callee", "route_policy_id", "caller_profile_id", "agent_version_id", "variables", "ring_timeout_ms", "max_call_duration_ms"],
|
|
"properties": {
|
|
"execution_id": {"$ref": "#/$defs/id"}, "task_id": {"$ref": "#/$defs/id"}, "task_item_id": {"$ref": "#/$defs/id"},
|
|
"task_revision": {"type": "integer", "minimum": 1}, "callee": {"type": "string", "minLength": 1, "maxLength": 256},
|
|
"route_policy_id": {"$ref": "#/$defs/id"}, "caller_profile_id": {"$ref": "#/$defs/id"}, "agent_version_id": {"$ref": "#/$defs/id"},
|
|
"variables": {"type": "object", "additionalProperties": true}, "ring_timeout_ms": {"type": "integer", "minimum": 1}, "max_call_duration_ms": {"type": "integer", "minimum": 1}
|
|
}
|
|
},
|
|
"event": {
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["schema_version", "event_id", "event_type", "tenant_id", "tenant_key", "trace_id", "occurred_at", "aggregate_type", "aggregate_id", "aggregate_version", "payload"],
|
|
"properties": {
|
|
"schema_version": {"const": "1.0"}, "event_id": {"$ref": "#/$defs/id"},
|
|
"event_type": {"enum": ["command.result", "call.status", "transcript.updated", "call.finished", "recording.ready", "recording.failed", "transcript.failed", "contact.opt_out"]},
|
|
"tenant_id": {"$ref": "#/$defs/id"}, "tenant_key": {"$ref": "#/$defs/tenantKey"}, "trace_id": {"$ref": "#/$defs/id"}, "occurred_at": {"$ref": "#/$defs/time"},
|
|
"aggregate_type": {"enum": ["command", "call", "transcript_segment", "recording"]}, "aggregate_id": {"$ref": "#/$defs/id"}, "aggregate_version": {"type": "integer", "minimum": 1}, "payload": {"type": "object"}
|
|
}
|
|
}
|
|
}
|
|
}
|