@zarel-ai/sdk 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +412 -0
- package/dist/_internal/auth-headers.d.ts +19 -0
- package/dist/_internal/auth-headers.d.ts.map +1 -0
- package/dist/_internal/auth-headers.js +30 -0
- package/dist/_internal/auth-headers.js.map +1 -0
- package/dist/_internal/confirmation.d.ts +24 -0
- package/dist/_internal/confirmation.d.ts.map +1 -0
- package/dist/_internal/confirmation.js +54 -0
- package/dist/_internal/confirmation.js.map +1 -0
- package/dist/_internal/event-iterator.d.ts +18 -0
- package/dist/_internal/event-iterator.d.ts.map +1 -0
- package/dist/_internal/event-iterator.js +151 -0
- package/dist/_internal/event-iterator.js.map +1 -0
- package/dist/_internal/fetch-client.d.ts +141 -0
- package/dist/_internal/fetch-client.d.ts.map +1 -0
- package/dist/_internal/fetch-client.js +471 -0
- package/dist/_internal/fetch-client.js.map +1 -0
- package/dist/_internal/interceptors.d.ts +40 -0
- package/dist/_internal/interceptors.d.ts.map +1 -0
- package/dist/_internal/interceptors.js +28 -0
- package/dist/_internal/interceptors.js.map +1 -0
- package/dist/_internal/mcp.d.ts +11 -0
- package/dist/_internal/mcp.d.ts.map +1 -0
- package/dist/_internal/mcp.js +79 -0
- package/dist/_internal/mcp.js.map +1 -0
- package/dist/_internal/pagination.d.ts +71 -0
- package/dist/_internal/pagination.d.ts.map +1 -0
- package/dist/_internal/pagination.js +130 -0
- package/dist/_internal/pagination.js.map +1 -0
- package/dist/_internal/require-token.d.ts +17 -0
- package/dist/_internal/require-token.d.ts.map +1 -0
- package/dist/_internal/require-token.js +25 -0
- package/dist/_internal/require-token.js.map +1 -0
- package/dist/_internal/retry-after.d.ts +2 -0
- package/dist/_internal/retry-after.d.ts.map +1 -0
- package/dist/_internal/retry-after.js +34 -0
- package/dist/_internal/retry-after.js.map +1 -0
- package/dist/_internal/sse-client.d.ts +43 -0
- package/dist/_internal/sse-client.d.ts.map +1 -0
- package/dist/_internal/sse-client.js +250 -0
- package/dist/_internal/sse-client.js.map +1 -0
- package/dist/_internal/version.d.ts +5 -0
- package/dist/_internal/version.d.ts.map +1 -0
- package/dist/_internal/version.js +12 -0
- package/dist/_internal/version.js.map +1 -0
- package/dist/client.d.ts +74 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +86 -0
- package/dist/client.js.map +1 -0
- package/dist/contract/_singleton.d.ts +18 -0
- package/dist/contract/_singleton.d.ts.map +1 -0
- package/dist/contract/_singleton.js +27 -0
- package/dist/contract/_singleton.js.map +1 -0
- package/dist/contract/actions.d.ts +18 -0
- package/dist/contract/actions.d.ts.map +1 -0
- package/dist/contract/actions.js +36 -0
- package/dist/contract/actions.js.map +1 -0
- package/dist/contract/assistant.d.ts +65 -0
- package/dist/contract/assistant.d.ts.map +1 -0
- package/dist/contract/assistant.js +44 -0
- package/dist/contract/assistant.js.map +1 -0
- package/dist/contract/batch.d.ts +27 -0
- package/dist/contract/batch.d.ts.map +1 -0
- package/dist/contract/batch.js +20 -0
- package/dist/contract/batch.js.map +1 -0
- package/dist/contract/capabilities.d.ts +21 -0
- package/dist/contract/capabilities.d.ts.map +1 -0
- package/dist/contract/capabilities.js +31 -0
- package/dist/contract/capabilities.js.map +1 -0
- package/dist/contract/constraints.d.ts +21 -0
- package/dist/contract/constraints.d.ts.map +1 -0
- package/dist/contract/constraints.js +31 -0
- package/dist/contract/constraints.js.map +1 -0
- package/dist/contract/events.d.ts +33 -0
- package/dist/contract/events.d.ts.map +1 -0
- package/dist/contract/events.js +56 -0
- package/dist/contract/events.js.map +1 -0
- package/dist/contract/flows.d.ts +44 -0
- package/dist/contract/flows.d.ts.map +1 -0
- package/dist/contract/flows.js +109 -0
- package/dist/contract/flows.js.map +1 -0
- package/dist/contract/governance.d.ts +6 -0
- package/dist/contract/governance.d.ts.map +1 -0
- package/dist/contract/governance.js +17 -0
- package/dist/contract/governance.js.map +1 -0
- package/dist/contract/index.d.ts +137 -0
- package/dist/contract/index.d.ts.map +1 -0
- package/dist/contract/index.js +177 -0
- package/dist/contract/index.js.map +1 -0
- package/dist/contract/metadata.d.ts +26 -0
- package/dist/contract/metadata.d.ts.map +1 -0
- package/dist/contract/metadata.js +25 -0
- package/dist/contract/metadata.js.map +1 -0
- package/dist/contract/process-model.d.ts +31 -0
- package/dist/contract/process-model.d.ts.map +1 -0
- package/dist/contract/process-model.js +51 -0
- package/dist/contract/process-model.js.map +1 -0
- package/dist/contract/roots/channels.d.ts +27 -0
- package/dist/contract/roots/channels.d.ts.map +1 -0
- package/dist/contract/roots/channels.js +53 -0
- package/dist/contract/roots/channels.js.map +1 -0
- package/dist/contract/roots/events.d.ts +7 -0
- package/dist/contract/roots/events.d.ts.map +1 -0
- package/dist/contract/roots/events.js +19 -0
- package/dist/contract/roots/events.js.map +1 -0
- package/dist/contract/roots/index.d.ts +15 -0
- package/dist/contract/roots/index.d.ts.map +1 -0
- package/dist/contract/roots/index.js +38 -0
- package/dist/contract/roots/index.js.map +1 -0
- package/dist/contract/roots/mcp-servers.d.ts +46 -0
- package/dist/contract/roots/mcp-servers.d.ts.map +1 -0
- package/dist/contract/roots/mcp-servers.js +68 -0
- package/dist/contract/roots/mcp-servers.js.map +1 -0
- package/dist/contract/roots/profiles.d.ts +18 -0
- package/dist/contract/roots/profiles.d.ts.map +1 -0
- package/dist/contract/roots/profiles.js +31 -0
- package/dist/contract/roots/profiles.js.map +1 -0
- package/dist/contract/roots/timezone.d.ts +10 -0
- package/dist/contract/roots/timezone.d.ts.map +1 -0
- package/dist/contract/roots/timezone.js +19 -0
- package/dist/contract/roots/timezone.js.map +1 -0
- package/dist/contract/roots/treatment.d.ts +11 -0
- package/dist/contract/roots/treatment.d.ts.map +1 -0
- package/dist/contract/roots/treatment.js +37 -0
- package/dist/contract/roots/treatment.js.map +1 -0
- package/dist/contract/roots/vocabulary.d.ts +18 -0
- package/dist/contract/roots/vocabulary.d.ts.map +1 -0
- package/dist/contract/roots/vocabulary.js +31 -0
- package/dist/contract/roots/vocabulary.js.map +1 -0
- package/dist/contract/schemas.d.ts +18 -0
- package/dist/contract/schemas.d.ts.map +1 -0
- package/dist/contract/schemas.js +31 -0
- package/dist/contract/schemas.js.map +1 -0
- package/dist/contract/skills.d.ts +20 -0
- package/dist/contract/skills.d.ts.map +1 -0
- package/dist/contract/skills.js +36 -0
- package/dist/contract/skills.js.map +1 -0
- package/dist/errors.d.ts +65 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +80 -0
- package/dist/errors.js.map +1 -0
- package/dist/generated/contract.d.ts +7688 -0
- package/dist/generated/contract.d.ts.map +1 -0
- package/dist/generated/contract.js +7 -0
- package/dist/generated/contract.js.map +1 -0
- package/dist/generated/index.d.ts +41 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +3 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/generated/runtime.d.ts +4020 -0
- package/dist/generated/runtime.d.ts.map +1 -0
- package/dist/generated/runtime.js +7 -0
- package/dist/generated/runtime.js.map +1 -0
- package/dist/generated/unwrap-map.d.ts +989 -0
- package/dist/generated/unwrap-map.d.ts.map +1 -0
- package/dist/generated/unwrap-map.js +344 -0
- package/dist/generated/unwrap-map.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/resources/actions.d.ts +33 -0
- package/dist/resources/actions.d.ts.map +1 -0
- package/dist/resources/actions.js +52 -0
- package/dist/resources/actions.js.map +1 -0
- package/dist/resources/audit.d.ts +52 -0
- package/dist/resources/audit.d.ts.map +1 -0
- package/dist/resources/audit.js +86 -0
- package/dist/resources/audit.js.map +1 -0
- package/dist/resources/authorization-ceiling.d.ts +25 -0
- package/dist/resources/authorization-ceiling.d.ts.map +1 -0
- package/dist/resources/authorization-ceiling.js +26 -0
- package/dist/resources/authorization-ceiling.js.map +1 -0
- package/dist/resources/authorization-operation-ids.d.ts +15 -0
- package/dist/resources/authorization-operation-ids.d.ts.map +1 -0
- package/dist/resources/authorization-operation-ids.js +31 -0
- package/dist/resources/authorization-operation-ids.js.map +1 -0
- package/dist/resources/authorization.d.ts +60 -0
- package/dist/resources/authorization.d.ts.map +1 -0
- package/dist/resources/authorization.js +51 -0
- package/dist/resources/authorization.js.map +1 -0
- package/dist/resources/authorizations.d.ts +38 -0
- package/dist/resources/authorizations.d.ts.map +1 -0
- package/dist/resources/authorizations.js +19 -0
- package/dist/resources/authorizations.js.map +1 -0
- package/dist/resources/channels.d.ts +36 -0
- package/dist/resources/channels.d.ts.map +1 -0
- package/dist/resources/channels.js +61 -0
- package/dist/resources/channels.js.map +1 -0
- package/dist/resources/contracts.d.ts +46 -0
- package/dist/resources/contracts.d.ts.map +1 -0
- package/dist/resources/contracts.js +86 -0
- package/dist/resources/contracts.js.map +1 -0
- package/dist/resources/conversation-sessions.d.ts +62 -0
- package/dist/resources/conversation-sessions.d.ts.map +1 -0
- package/dist/resources/conversation-sessions.js +48 -0
- package/dist/resources/conversation-sessions.js.map +1 -0
- package/dist/resources/conversation.d.ts +48 -0
- package/dist/resources/conversation.d.ts.map +1 -0
- package/dist/resources/conversation.js +104 -0
- package/dist/resources/conversation.js.map +1 -0
- package/dist/resources/embedding-credentials.d.ts +60 -0
- package/dist/resources/embedding-credentials.d.ts.map +1 -0
- package/dist/resources/embedding-credentials.js +53 -0
- package/dist/resources/embedding-credentials.js.map +1 -0
- package/dist/resources/entities.d.ts +66 -0
- package/dist/resources/entities.d.ts.map +1 -0
- package/dist/resources/entities.js +106 -0
- package/dist/resources/entities.js.map +1 -0
- package/dist/resources/events.d.ts +45 -0
- package/dist/resources/events.d.ts.map +1 -0
- package/dist/resources/events.js +71 -0
- package/dist/resources/events.js.map +1 -0
- package/dist/resources/flows.d.ts +45 -0
- package/dist/resources/flows.d.ts.map +1 -0
- package/dist/resources/flows.js +82 -0
- package/dist/resources/flows.js.map +1 -0
- package/dist/resources/imports.d.ts +8 -0
- package/dist/resources/imports.d.ts.map +1 -0
- package/dist/resources/imports.js +14 -0
- package/dist/resources/imports.js.map +1 -0
- package/dist/resources/index.d.ts +24 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +41 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/llm-credentials.d.ts +47 -0
- package/dist/resources/llm-credentials.d.ts.map +1 -0
- package/dist/resources/llm-credentials.js +46 -0
- package/dist/resources/llm-credentials.js.map +1 -0
- package/dist/resources/llm-services.d.ts +46 -0
- package/dist/resources/llm-services.d.ts.map +1 -0
- package/dist/resources/llm-services.js +41 -0
- package/dist/resources/llm-services.js.map +1 -0
- package/dist/resources/mcp.d.ts +8 -0
- package/dist/resources/mcp.d.ts.map +1 -0
- package/dist/resources/mcp.js +25 -0
- package/dist/resources/mcp.js.map +1 -0
- package/dist/resources/receipts.d.ts +25 -0
- package/dist/resources/receipts.d.ts.map +1 -0
- package/dist/resources/receipts.js +54 -0
- package/dist/resources/receipts.js.map +1 -0
- package/dist/resources/records.d.ts +51 -0
- package/dist/resources/records.d.ts.map +1 -0
- package/dist/resources/records.js +103 -0
- package/dist/resources/records.js.map +1 -0
- package/dist/resources/role-assignments.d.ts +27 -0
- package/dist/resources/role-assignments.d.ts.map +1 -0
- package/dist/resources/role-assignments.js +40 -0
- package/dist/resources/role-assignments.js.map +1 -0
- package/dist/resources/roles.d.ts +39 -0
- package/dist/resources/roles.d.ts.map +1 -0
- package/dist/resources/roles.js +42 -0
- package/dist/resources/roles.js.map +1 -0
- package/dist/resources/runtime-entities.d.ts +23 -0
- package/dist/resources/runtime-entities.d.ts.map +1 -0
- package/dist/resources/runtime-entities.js +29 -0
- package/dist/resources/runtime-entities.js.map +1 -0
- package/dist/resources/state-machine.d.ts +45 -0
- package/dist/resources/state-machine.d.ts.map +1 -0
- package/dist/resources/state-machine.js +86 -0
- package/dist/resources/state-machine.js.map +1 -0
- package/dist/resources/system.d.ts +12 -0
- package/dist/resources/system.d.ts.map +1 -0
- package/dist/resources/system.js +26 -0
- package/dist/resources/system.js.map +1 -0
- package/dist/resources/tools.d.ts +22 -0
- package/dist/resources/tools.d.ts.map +1 -0
- package/dist/resources/tools.js +33 -0
- package/dist/resources/tools.js.map +1 -0
- package/dist/resources/traces.d.ts +65 -0
- package/dist/resources/traces.d.ts.map +1 -0
- package/dist/resources/traces.js +97 -0
- package/dist/resources/traces.js.map +1 -0
- package/dist/runtime/index.d.ts +128 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +210 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/types/actions.d.ts +32 -0
- package/dist/types/actions.d.ts.map +1 -0
- package/dist/types/actions.js +9 -0
- package/dist/types/actions.js.map +1 -0
- package/dist/types/audit.d.ts +65 -0
- package/dist/types/audit.d.ts.map +1 -0
- package/dist/types/audit.js +14 -0
- package/dist/types/audit.js.map +1 -0
- package/dist/types/channels.d.ts +37 -0
- package/dist/types/channels.d.ts.map +1 -0
- package/dist/types/channels.js +6 -0
- package/dist/types/channels.js.map +1 -0
- package/dist/types/confirmation.d.ts +53 -0
- package/dist/types/confirmation.d.ts.map +1 -0
- package/dist/types/confirmation.js +17 -0
- package/dist/types/confirmation.js.map +1 -0
- package/dist/types/contracts.d.ts +194 -0
- package/dist/types/contracts.d.ts.map +1 -0
- package/dist/types/contracts.js +10 -0
- package/dist/types/contracts.js.map +1 -0
- package/dist/types/conversation-sessions.d.ts +58 -0
- package/dist/types/conversation-sessions.d.ts.map +1 -0
- package/dist/types/conversation-sessions.js +6 -0
- package/dist/types/conversation-sessions.js.map +1 -0
- package/dist/types/conversation.d.ts +96 -0
- package/dist/types/conversation.d.ts.map +1 -0
- package/dist/types/conversation.js +3 -0
- package/dist/types/conversation.js.map +1 -0
- package/dist/types/entities.d.ts +22 -0
- package/dist/types/entities.d.ts.map +1 -0
- package/dist/types/entities.js +4 -0
- package/dist/types/entities.js.map +1 -0
- package/dist/types/events-stream.d.ts +82 -0
- package/dist/types/events-stream.d.ts.map +1 -0
- package/dist/types/events-stream.js +65 -0
- package/dist/types/events-stream.js.map +1 -0
- package/dist/types/flows-contract.d.ts +8 -0
- package/dist/types/flows-contract.d.ts.map +1 -0
- package/dist/types/flows-contract.js +7 -0
- package/dist/types/flows-contract.js.map +1 -0
- package/dist/types/flows.d.ts +66 -0
- package/dist/types/flows.d.ts.map +1 -0
- package/dist/types/flows.js +25 -0
- package/dist/types/flows.js.map +1 -0
- package/dist/types/imports.d.ts +57 -0
- package/dist/types/imports.d.ts.map +1 -0
- package/dist/types/imports.js +3 -0
- package/dist/types/imports.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/locale.d.ts +24 -0
- package/dist/types/locale.d.ts.map +1 -0
- package/dist/types/locale.js +17 -0
- package/dist/types/locale.js.map +1 -0
- package/dist/types/mcp.d.ts +28 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +12 -0
- package/dist/types/mcp.js.map +1 -0
- package/dist/types/platform.d.ts +51 -0
- package/dist/types/platform.d.ts.map +1 -0
- package/dist/types/platform.js +4 -0
- package/dist/types/platform.js.map +1 -0
- package/dist/types/receipt.d.ts +79 -0
- package/dist/types/receipt.d.ts.map +1 -0
- package/dist/types/receipt.js +15 -0
- package/dist/types/receipt.js.map +1 -0
- package/dist/types/records.d.ts +45 -0
- package/dist/types/records.d.ts.map +1 -0
- package/dist/types/records.js +4 -0
- package/dist/types/records.js.map +1 -0
- package/dist/types/spec.d.ts +6 -0
- package/dist/types/spec.d.ts.map +1 -0
- package/dist/types/spec.js +3 -0
- package/dist/types/spec.js.map +1 -0
- package/dist/types/state-machine.d.ts +100 -0
- package/dist/types/state-machine.d.ts.map +1 -0
- package/dist/types/state-machine.js +9 -0
- package/dist/types/state-machine.js.map +1 -0
- package/dist/types/system.d.ts +28 -0
- package/dist/types/system.d.ts.map +1 -0
- package/dist/types/system.js +3 -0
- package/dist/types/system.js.map +1 -0
- package/dist/types/tools.d.ts +188 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +22 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/types/traces.d.ts +77 -0
- package/dist/types/traces.d.ts.map +1 -0
- package/dist/types/traces.js +11 -0
- package/dist/types/traces.js.map +1 -0
- package/dist/types/workflows.d.ts +42 -0
- package/dist/types/workflows.d.ts.map +1 -0
- package/dist/types/workflows.js +11 -0
- package/dist/types/workflows.js.map +1 -0
- package/package.json +103 -0
|
@@ -0,0 +1,4020 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was auto-generated by openapi-typescript.
|
|
3
|
+
* Do not make direct changes to the file.
|
|
4
|
+
*/
|
|
5
|
+
export interface paths {
|
|
6
|
+
"/runtime/llm/services": {
|
|
7
|
+
parameters: {
|
|
8
|
+
query?: never;
|
|
9
|
+
header?: never;
|
|
10
|
+
path?: never;
|
|
11
|
+
cookie?: never;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* List the LLM services the actor is authorized to use in `?scope=`
|
|
15
|
+
* @description FR-B02 no-leak: returns ONLY services for which the actor has a
|
|
16
|
+
* `use` policy in the requested scope. There is no separate
|
|
17
|
+
* "all services" endpoint — operators see everything because their
|
|
18
|
+
* contract policies grant them `use` on every service.
|
|
19
|
+
*/
|
|
20
|
+
get: operations["listLlmServices"];
|
|
21
|
+
put?: never;
|
|
22
|
+
post?: never;
|
|
23
|
+
delete?: never;
|
|
24
|
+
options?: never;
|
|
25
|
+
head?: never;
|
|
26
|
+
patch?: never;
|
|
27
|
+
trace?: never;
|
|
28
|
+
};
|
|
29
|
+
"/runtime/llm/services/{name}": {
|
|
30
|
+
parameters: {
|
|
31
|
+
query?: never;
|
|
32
|
+
header?: never;
|
|
33
|
+
path: {
|
|
34
|
+
name: string;
|
|
35
|
+
};
|
|
36
|
+
cookie?: never;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Get one LLM service by name (only if authorized in `?scope=`)
|
|
40
|
+
* @description FR-B02 no-leak: a service the actor cannot use in `?scope=` returns
|
|
41
|
+
* 404 indistinguishable from "doesn't exist". The response body never
|
|
42
|
+
* reveals whether the row exists for unauthorized actors.
|
|
43
|
+
*/
|
|
44
|
+
get: operations["getLlmService"];
|
|
45
|
+
put?: never;
|
|
46
|
+
post?: never;
|
|
47
|
+
delete?: never;
|
|
48
|
+
options?: never;
|
|
49
|
+
head?: never;
|
|
50
|
+
patch?: never;
|
|
51
|
+
trace?: never;
|
|
52
|
+
};
|
|
53
|
+
"/runtime/llm/credentials": {
|
|
54
|
+
parameters: {
|
|
55
|
+
query?: never;
|
|
56
|
+
header?: never;
|
|
57
|
+
path?: never;
|
|
58
|
+
cookie?: never;
|
|
59
|
+
};
|
|
60
|
+
/** List masked metadata for credentials the actor can manage */
|
|
61
|
+
get: operations["listLlmCredentials"];
|
|
62
|
+
put?: never;
|
|
63
|
+
post?: never;
|
|
64
|
+
delete?: never;
|
|
65
|
+
options?: never;
|
|
66
|
+
head?: never;
|
|
67
|
+
patch?: never;
|
|
68
|
+
trace?: never;
|
|
69
|
+
};
|
|
70
|
+
"/runtime/llm/credentials/{service_name}": {
|
|
71
|
+
parameters: {
|
|
72
|
+
query?: never;
|
|
73
|
+
header?: never;
|
|
74
|
+
path: {
|
|
75
|
+
service_name: string;
|
|
76
|
+
};
|
|
77
|
+
cookie?: never;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Get masked metadata for one credential
|
|
81
|
+
* @description Plaintext is NEVER returned. Returns 404 indistinguishable from "doesn't exist" when not authorized (FR-B02).
|
|
82
|
+
*/
|
|
83
|
+
get: operations["getLlmCredential"];
|
|
84
|
+
/**
|
|
85
|
+
* Set / replace a credential (write-only on `api_key`)
|
|
86
|
+
* @description Body: `{ api_key, base_url? }`. Server encrypts with the per-tenant
|
|
87
|
+
* DEK, computes a 4-char fingerprint, and writes a sanitised audit row
|
|
88
|
+
* (no ciphertext / IV / fingerprint, FR-I06). The plaintext is consumed
|
|
89
|
+
* and discarded — no read endpoint can retrieve it (FR-I04).
|
|
90
|
+
*
|
|
91
|
+
* Possible 4xx codes:
|
|
92
|
+
* - `INVALID_API_KEY` (400): empty / too long / non-printable.
|
|
93
|
+
* - `UNKNOWN_LLM_SERVICE` (404): service does not exist in catalog
|
|
94
|
+
* (only returned to authorized callers).
|
|
95
|
+
* - `PROVIDER_NOT_ALLOWED` (403, ADR-0102 S5b-a): the service's
|
|
96
|
+
* provider is outside the tenant's allowed providers (the bounds on
|
|
97
|
+
* the `manage_credentials` grant). Only reachable by holders of the
|
|
98
|
+
* grant — the no-leak 404 below still applies first.
|
|
99
|
+
* - 404 indistinguishable from "doesn't exist" when the actor lacks
|
|
100
|
+
* `manage_credentials` (FR-B02 / SEC.V12 — never 403).
|
|
101
|
+
*/
|
|
102
|
+
put: operations["setLlmCredential"];
|
|
103
|
+
post?: never;
|
|
104
|
+
/**
|
|
105
|
+
* Remove a credential (FR-I07 safeguard)
|
|
106
|
+
* @description Returns 409 `CREDENTIAL_IN_USE` when any active session is pinned to
|
|
107
|
+
* the service. Operators must close the pinned sessions first. Returns
|
|
108
|
+
* 404 indistinguishable from "doesn't exist" when the actor lacks
|
|
109
|
+
* `manage_credentials` (FR-B02).
|
|
110
|
+
*/
|
|
111
|
+
delete: operations["deleteLlmCredential"];
|
|
112
|
+
options?: never;
|
|
113
|
+
head?: never;
|
|
114
|
+
patch?: never;
|
|
115
|
+
trace?: never;
|
|
116
|
+
};
|
|
117
|
+
"/runtime/embedding-credentials": {
|
|
118
|
+
parameters: {
|
|
119
|
+
query?: never;
|
|
120
|
+
header?: never;
|
|
121
|
+
path?: never;
|
|
122
|
+
cookie?: never;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* List masked metadata for the tenant's embedding credentials (per declared service)
|
|
126
|
+
* @description Returns one masked-metadata row per stored (tenant, embedding service).
|
|
127
|
+
* Plaintext is NEVER returned. Authorization: tenant-level superuser;
|
|
128
|
+
* unauthorized callers receive an empty list (SEC.V12 no-leak, never 403).
|
|
129
|
+
*/
|
|
130
|
+
get: operations["listEmbeddingCredentials"];
|
|
131
|
+
put?: never;
|
|
132
|
+
post?: never;
|
|
133
|
+
delete?: never;
|
|
134
|
+
options?: never;
|
|
135
|
+
head?: never;
|
|
136
|
+
patch?: never;
|
|
137
|
+
trace?: never;
|
|
138
|
+
};
|
|
139
|
+
"/runtime/embedding-credentials/{service_name}": {
|
|
140
|
+
parameters: {
|
|
141
|
+
query?: never;
|
|
142
|
+
header?: never;
|
|
143
|
+
path: {
|
|
144
|
+
/**
|
|
145
|
+
* @description The DECLARED embedding-service name from `embeddings.services[]`
|
|
146
|
+
* (FR-023) — not the provider. A provider is not an identity: two
|
|
147
|
+
* services may share one, and the credential keys to a declaration that
|
|
148
|
+
* exists. The provider is resolved from that declaration server-side.
|
|
149
|
+
*/
|
|
150
|
+
service_name: string;
|
|
151
|
+
};
|
|
152
|
+
cookie?: never;
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* Get masked metadata for one embedding service's credential
|
|
156
|
+
* @description Plaintext is NEVER returned. 404 indistinguishable from "not configured" when not authorized (SEC.V12).
|
|
157
|
+
*/
|
|
158
|
+
get: operations["getEmbeddingCredential"];
|
|
159
|
+
/**
|
|
160
|
+
* Set / replace an embedding service's credential (write-only on the secret)
|
|
161
|
+
* @description Body is the credential blob for the provider the DECLARED service names —
|
|
162
|
+
* `{ apiKey, base_url? }` for apiKey providers (gemini, openai,
|
|
163
|
+
* anthropic-via-Voyage) or `{ accessKeyId, secretAccessKey, region,
|
|
164
|
+
* sessionToken? }` for bedrock. The server resolves the provider from
|
|
165
|
+
* `embeddings.services[]`, validates against that provider's registry
|
|
166
|
+
* credential schema, encrypts with the per-tenant DEK, computes a
|
|
167
|
+
* fingerprint, and writes a sanitised audit row. The secret is consumed and
|
|
168
|
+
* never retrievable.
|
|
169
|
+
*
|
|
170
|
+
* Possible 4xx codes:
|
|
171
|
+
* - `INVALID_CREDENTIAL` (400): blob fails the resolved provider's schema.
|
|
172
|
+
* - `UNKNOWN_EMBEDDING_SERVICE` (404): no live `embeddings.services[]`
|
|
173
|
+
* entry of that name — a secret must key to a declaration that exists
|
|
174
|
+
* (FR-022). Only reachable by authorized callers.
|
|
175
|
+
* - `PROVIDER_NOT_ALLOWED` (403, ADR-0102 S5b-a): the declared service's
|
|
176
|
+
* provider is outside the tenant's allowed embedding providers (the
|
|
177
|
+
* bounds on the `manage_credentials` grant). Only reachable by grant holders.
|
|
178
|
+
* - 404 indistinguishable from "not configured" when not authorized (SEC.V12 — never 403).
|
|
179
|
+
*/
|
|
180
|
+
put: operations["setEmbeddingCredential"];
|
|
181
|
+
post?: never;
|
|
182
|
+
/**
|
|
183
|
+
* Remove an embedding service's credential (soft-delete + sensitive wipe)
|
|
184
|
+
* @description Soft-deletes the row and wipes the sensitive columns; the
|
|
185
|
+
* embedding_similarity gate falls through on subsequent turns for that
|
|
186
|
+
* service. 404 indistinguishable from "not configured" when not authorized.
|
|
187
|
+
*/
|
|
188
|
+
delete: operations["deleteEmbeddingCredential"];
|
|
189
|
+
options?: never;
|
|
190
|
+
head?: never;
|
|
191
|
+
patch?: never;
|
|
192
|
+
trace?: never;
|
|
193
|
+
};
|
|
194
|
+
"/runtime/records/{entity_name}": {
|
|
195
|
+
parameters: {
|
|
196
|
+
query?: never;
|
|
197
|
+
header?: never;
|
|
198
|
+
path: {
|
|
199
|
+
entity_name: components["parameters"]["EntityNamePath"];
|
|
200
|
+
};
|
|
201
|
+
cookie?: never;
|
|
202
|
+
};
|
|
203
|
+
/** List records for an entity (filterable, sortable, paginated) */
|
|
204
|
+
get: operations["listRuntimeRecords"];
|
|
205
|
+
put?: never;
|
|
206
|
+
/**
|
|
207
|
+
* Create a record
|
|
208
|
+
* @description ADR-0127 (Option B strict) — this bare surface serves ONLY verbs with no
|
|
209
|
+
* named action. A governed verb is rejected `400 action_required`; dispatch
|
|
210
|
+
* it via `POST /runtime/actions/{name}` instead.
|
|
211
|
+
*/
|
|
212
|
+
post: operations["createRuntimeRecord"];
|
|
213
|
+
delete?: never;
|
|
214
|
+
options?: never;
|
|
215
|
+
head?: never;
|
|
216
|
+
patch?: never;
|
|
217
|
+
trace?: never;
|
|
218
|
+
};
|
|
219
|
+
"/runtime/records/{entity_name}/{id}": {
|
|
220
|
+
parameters: {
|
|
221
|
+
query?: never;
|
|
222
|
+
header?: never;
|
|
223
|
+
path: {
|
|
224
|
+
entity_name: components["parameters"]["EntityNamePath"];
|
|
225
|
+
id: string;
|
|
226
|
+
};
|
|
227
|
+
cookie?: never;
|
|
228
|
+
};
|
|
229
|
+
/** Get a record */
|
|
230
|
+
get: operations["getRuntimeRecord"];
|
|
231
|
+
put?: never;
|
|
232
|
+
post?: never;
|
|
233
|
+
/**
|
|
234
|
+
* Delete a record
|
|
235
|
+
* @description ADR-0127 (Option B strict) — a governed verb is rejected `400
|
|
236
|
+
* action_required`; dispatch it via `POST /runtime/actions/{name}`.
|
|
237
|
+
*/
|
|
238
|
+
delete: operations["deleteRuntimeRecord"];
|
|
239
|
+
options?: never;
|
|
240
|
+
head?: never;
|
|
241
|
+
/**
|
|
242
|
+
* Merge-patch a record
|
|
243
|
+
* @description ADR-0127 (Option B strict) — a governed verb is rejected `400
|
|
244
|
+
* action_required`; dispatch it via `POST /runtime/actions/{name}`.
|
|
245
|
+
*/
|
|
246
|
+
patch: operations["patchRuntimeRecord"];
|
|
247
|
+
trace?: never;
|
|
248
|
+
};
|
|
249
|
+
"/runtime/records/counter/{entity_name}": {
|
|
250
|
+
parameters: {
|
|
251
|
+
query?: never;
|
|
252
|
+
header?: never;
|
|
253
|
+
path: {
|
|
254
|
+
entity_name: components["parameters"]["EntityNamePath"];
|
|
255
|
+
};
|
|
256
|
+
cookie?: never;
|
|
257
|
+
};
|
|
258
|
+
/** Read the record counter for an entity (runtime-readonly) */
|
|
259
|
+
get: operations["getRuntimeRecordsCounter"];
|
|
260
|
+
put?: never;
|
|
261
|
+
post?: never;
|
|
262
|
+
delete?: never;
|
|
263
|
+
options?: never;
|
|
264
|
+
head?: never;
|
|
265
|
+
patch?: never;
|
|
266
|
+
trace?: never;
|
|
267
|
+
};
|
|
268
|
+
"/runtime/state-machine/instances": {
|
|
269
|
+
parameters: {
|
|
270
|
+
query?: never;
|
|
271
|
+
header?: never;
|
|
272
|
+
path?: never;
|
|
273
|
+
cookie?: never;
|
|
274
|
+
};
|
|
275
|
+
/** List state-machine instances (readonly) */
|
|
276
|
+
get: operations["listStateMachineInstances"];
|
|
277
|
+
put?: never;
|
|
278
|
+
post?: never;
|
|
279
|
+
delete?: never;
|
|
280
|
+
options?: never;
|
|
281
|
+
head?: never;
|
|
282
|
+
patch?: never;
|
|
283
|
+
trace?: never;
|
|
284
|
+
};
|
|
285
|
+
"/runtime/state-machine/instances/{id}": {
|
|
286
|
+
parameters: {
|
|
287
|
+
query?: never;
|
|
288
|
+
header?: never;
|
|
289
|
+
path: {
|
|
290
|
+
id: string;
|
|
291
|
+
};
|
|
292
|
+
cookie?: never;
|
|
293
|
+
};
|
|
294
|
+
/** Get a state-machine instance */
|
|
295
|
+
get: operations["getStateMachineInstance"];
|
|
296
|
+
put?: never;
|
|
297
|
+
post?: never;
|
|
298
|
+
delete?: never;
|
|
299
|
+
options?: never;
|
|
300
|
+
head?: never;
|
|
301
|
+
patch?: never;
|
|
302
|
+
trace?: never;
|
|
303
|
+
};
|
|
304
|
+
"/runtime/state-machine/events": {
|
|
305
|
+
parameters: {
|
|
306
|
+
query?: never;
|
|
307
|
+
header?: never;
|
|
308
|
+
path?: never;
|
|
309
|
+
cookie?: never;
|
|
310
|
+
};
|
|
311
|
+
/** List state-machine events (readonly; filter by entity_name / instance_id) */
|
|
312
|
+
get: operations["listStateMachineEvents"];
|
|
313
|
+
put?: never;
|
|
314
|
+
post?: never;
|
|
315
|
+
delete?: never;
|
|
316
|
+
options?: never;
|
|
317
|
+
head?: never;
|
|
318
|
+
patch?: never;
|
|
319
|
+
trace?: never;
|
|
320
|
+
};
|
|
321
|
+
"/runtime/state-machine/events/{id}": {
|
|
322
|
+
parameters: {
|
|
323
|
+
query?: never;
|
|
324
|
+
header?: never;
|
|
325
|
+
path: {
|
|
326
|
+
id: string;
|
|
327
|
+
};
|
|
328
|
+
cookie?: never;
|
|
329
|
+
};
|
|
330
|
+
/** Get a state-machine event */
|
|
331
|
+
get: operations["getStateMachineEvent"];
|
|
332
|
+
put?: never;
|
|
333
|
+
post?: never;
|
|
334
|
+
delete?: never;
|
|
335
|
+
options?: never;
|
|
336
|
+
head?: never;
|
|
337
|
+
patch?: never;
|
|
338
|
+
trace?: never;
|
|
339
|
+
};
|
|
340
|
+
"/runtime/state-machine/transition-requests": {
|
|
341
|
+
parameters: {
|
|
342
|
+
query?: never;
|
|
343
|
+
header?: never;
|
|
344
|
+
path?: never;
|
|
345
|
+
cookie?: never;
|
|
346
|
+
};
|
|
347
|
+
/** List transition requests (filter by status / role) */
|
|
348
|
+
get: operations["listTransitionRequests"];
|
|
349
|
+
put?: never;
|
|
350
|
+
/** Create a transition request */
|
|
351
|
+
post: operations["createTransitionRequest"];
|
|
352
|
+
delete?: never;
|
|
353
|
+
options?: never;
|
|
354
|
+
head?: never;
|
|
355
|
+
patch?: never;
|
|
356
|
+
trace?: never;
|
|
357
|
+
};
|
|
358
|
+
"/runtime/state-machine/transition-requests/{id}": {
|
|
359
|
+
parameters: {
|
|
360
|
+
query?: never;
|
|
361
|
+
header?: never;
|
|
362
|
+
path: {
|
|
363
|
+
id: string;
|
|
364
|
+
};
|
|
365
|
+
cookie?: never;
|
|
366
|
+
};
|
|
367
|
+
/** Get a transition request */
|
|
368
|
+
get: operations["getTransitionRequest"];
|
|
369
|
+
put?: never;
|
|
370
|
+
post?: never;
|
|
371
|
+
delete?: never;
|
|
372
|
+
options?: never;
|
|
373
|
+
head?: never;
|
|
374
|
+
/** Resolve a pending transition request (approve/reject) */
|
|
375
|
+
patch: operations["resolveTransitionRequest"];
|
|
376
|
+
trace?: never;
|
|
377
|
+
};
|
|
378
|
+
"/runtime/actions/{name}": {
|
|
379
|
+
parameters: {
|
|
380
|
+
query?: never;
|
|
381
|
+
header?: never;
|
|
382
|
+
path: {
|
|
383
|
+
/** @description Action name from the tenant contract `actions[]` block. */
|
|
384
|
+
name: string;
|
|
385
|
+
};
|
|
386
|
+
cookie?: never;
|
|
387
|
+
};
|
|
388
|
+
get?: never;
|
|
389
|
+
put?: never;
|
|
390
|
+
/**
|
|
391
|
+
* Dispatch a YAML-declared action
|
|
392
|
+
* @description Resolves `name` against the tenant's `actions[]`, derives the
|
|
393
|
+
* underlying `(entity, verb)` pair, and dispatches through the existing
|
|
394
|
+
* `RecordCrudService`. Returns the dispatched record (or `null` for
|
|
395
|
+
* `delete` verbs) plus a `resolved_via_action` telemetry tag.
|
|
396
|
+
*
|
|
397
|
+
* ADR-0127 — this is the governed dispatch surface: the resolved action's
|
|
398
|
+
* identity is carried to the deterministic write floor, which evaluates
|
|
399
|
+
* capability / phase / precondition / confirmation before persistence. A
|
|
400
|
+
* blocked write returns a typed outcome (`422 phase_not_allowed` /
|
|
401
|
+
* `422 precondition_failed`); a write a `confirm` guard pauses returns
|
|
402
|
+
* `409 confirmation_required` (see the confirmation round-trip below).
|
|
403
|
+
*/
|
|
404
|
+
post: operations["dispatchAction"];
|
|
405
|
+
delete?: never;
|
|
406
|
+
options?: never;
|
|
407
|
+
head?: never;
|
|
408
|
+
patch?: never;
|
|
409
|
+
trace?: never;
|
|
410
|
+
};
|
|
411
|
+
"/runtime/flows/instances": {
|
|
412
|
+
parameters: {
|
|
413
|
+
query?: never;
|
|
414
|
+
header?: never;
|
|
415
|
+
path?: never;
|
|
416
|
+
cookie?: never;
|
|
417
|
+
};
|
|
418
|
+
/**
|
|
419
|
+
* List flow instances (readonly)
|
|
420
|
+
* @description Owner-scoped to the calling actor unless the caller holds the `view_flows`
|
|
421
|
+
* runtime system action. `flow` NARROWS the listing; it never widens it —
|
|
422
|
+
* the owner scope is applied independently of any filter.
|
|
423
|
+
*/
|
|
424
|
+
get: operations["listFlowInstances"];
|
|
425
|
+
put?: never;
|
|
426
|
+
post?: never;
|
|
427
|
+
delete?: never;
|
|
428
|
+
options?: never;
|
|
429
|
+
head?: never;
|
|
430
|
+
patch?: never;
|
|
431
|
+
trace?: never;
|
|
432
|
+
};
|
|
433
|
+
"/runtime/flows/instances/{id}": {
|
|
434
|
+
parameters: {
|
|
435
|
+
query?: never;
|
|
436
|
+
header?: never;
|
|
437
|
+
path: {
|
|
438
|
+
id: string;
|
|
439
|
+
};
|
|
440
|
+
cookie?: never;
|
|
441
|
+
};
|
|
442
|
+
/** Get a flow instance */
|
|
443
|
+
get: operations["getFlowInstance"];
|
|
444
|
+
put?: never;
|
|
445
|
+
post?: never;
|
|
446
|
+
delete?: never;
|
|
447
|
+
options?: never;
|
|
448
|
+
head?: never;
|
|
449
|
+
patch?: never;
|
|
450
|
+
trace?: never;
|
|
451
|
+
};
|
|
452
|
+
"/runtime/flows/events": {
|
|
453
|
+
parameters: {
|
|
454
|
+
query?: never;
|
|
455
|
+
header?: never;
|
|
456
|
+
path?: never;
|
|
457
|
+
cookie?: never;
|
|
458
|
+
};
|
|
459
|
+
/**
|
|
460
|
+
* List flow events (readonly)
|
|
461
|
+
* @description The appended flow lifecycle log — where per-step history lives (a run row
|
|
462
|
+
* carries none). Ordered by the hash chain's `seq`, which is the only total
|
|
463
|
+
* order the log has. Same visibility rule as `/runtime/flows/instances`:
|
|
464
|
+
* owner-scoped unless the caller holds `view_flows`, applied independently
|
|
465
|
+
* of any filter. Pass `instance_id` for one run's trace.
|
|
466
|
+
*/
|
|
467
|
+
get: operations["listFlowEvents"];
|
|
468
|
+
put?: never;
|
|
469
|
+
post?: never;
|
|
470
|
+
delete?: never;
|
|
471
|
+
options?: never;
|
|
472
|
+
head?: never;
|
|
473
|
+
patch?: never;
|
|
474
|
+
trace?: never;
|
|
475
|
+
};
|
|
476
|
+
"/runtime/flows/events/{id}": {
|
|
477
|
+
parameters: {
|
|
478
|
+
query?: never;
|
|
479
|
+
header?: never;
|
|
480
|
+
path: {
|
|
481
|
+
id: string;
|
|
482
|
+
};
|
|
483
|
+
cookie?: never;
|
|
484
|
+
};
|
|
485
|
+
/** Get a flow event */
|
|
486
|
+
get: operations["getFlowEvent"];
|
|
487
|
+
put?: never;
|
|
488
|
+
post?: never;
|
|
489
|
+
delete?: never;
|
|
490
|
+
options?: never;
|
|
491
|
+
head?: never;
|
|
492
|
+
patch?: never;
|
|
493
|
+
trace?: never;
|
|
494
|
+
};
|
|
495
|
+
"/runtime/flows/callbacks": {
|
|
496
|
+
parameters: {
|
|
497
|
+
query?: never;
|
|
498
|
+
header?: never;
|
|
499
|
+
path?: never;
|
|
500
|
+
cookie?: never;
|
|
501
|
+
};
|
|
502
|
+
/** List pending flow callbacks (authenticated) */
|
|
503
|
+
get: operations["listFlowCallbacks"];
|
|
504
|
+
put?: never;
|
|
505
|
+
post?: never;
|
|
506
|
+
delete?: never;
|
|
507
|
+
options?: never;
|
|
508
|
+
head?: never;
|
|
509
|
+
patch?: never;
|
|
510
|
+
trace?: never;
|
|
511
|
+
};
|
|
512
|
+
"/runtime/flows/callbacks/{id}": {
|
|
513
|
+
parameters: {
|
|
514
|
+
query?: never;
|
|
515
|
+
header?: never;
|
|
516
|
+
path: {
|
|
517
|
+
id: string;
|
|
518
|
+
};
|
|
519
|
+
cookie?: never;
|
|
520
|
+
};
|
|
521
|
+
/** Get a flow callback (authenticated) */
|
|
522
|
+
get: operations["getFlowCallback"];
|
|
523
|
+
put?: never;
|
|
524
|
+
post?: never;
|
|
525
|
+
delete?: never;
|
|
526
|
+
options?: never;
|
|
527
|
+
head?: never;
|
|
528
|
+
/**
|
|
529
|
+
* Resolve a flow callback
|
|
530
|
+
* @description **Public endpoint.** The `id` is the opaque capability token supplied
|
|
531
|
+
* to the external system at flow registration; no JWT is required.
|
|
532
|
+
*
|
|
533
|
+
* Returns a **flat** `{success, message?}` ack (no `data`, NOT
|
|
534
|
+
* envelope-wrapped) — the SDK returns it whole (codegen-unwrap: no-unwrap).
|
|
535
|
+
*/
|
|
536
|
+
patch: operations["resolveFlowCallback"];
|
|
537
|
+
trace?: never;
|
|
538
|
+
};
|
|
539
|
+
"/runtime/events/subscriptions": {
|
|
540
|
+
parameters: {
|
|
541
|
+
query?: never;
|
|
542
|
+
header?: never;
|
|
543
|
+
path?: never;
|
|
544
|
+
cookie?: never;
|
|
545
|
+
};
|
|
546
|
+
/** List webhook subscriptions */
|
|
547
|
+
get: operations["listEventSubscriptions"];
|
|
548
|
+
put?: never;
|
|
549
|
+
/** Create a webhook subscription */
|
|
550
|
+
post: operations["createEventSubscription"];
|
|
551
|
+
delete?: never;
|
|
552
|
+
options?: never;
|
|
553
|
+
head?: never;
|
|
554
|
+
patch?: never;
|
|
555
|
+
trace?: never;
|
|
556
|
+
};
|
|
557
|
+
"/runtime/events/subscriptions/{subscription_id}": {
|
|
558
|
+
parameters: {
|
|
559
|
+
query?: never;
|
|
560
|
+
header?: never;
|
|
561
|
+
path: {
|
|
562
|
+
subscription_id: number;
|
|
563
|
+
};
|
|
564
|
+
cookie?: never;
|
|
565
|
+
};
|
|
566
|
+
/** Get a subscription */
|
|
567
|
+
get: operations["getEventSubscription"];
|
|
568
|
+
put?: never;
|
|
569
|
+
post?: never;
|
|
570
|
+
/** Deactivate a subscription */
|
|
571
|
+
delete: operations["deactivateEventSubscription"];
|
|
572
|
+
options?: never;
|
|
573
|
+
head?: never;
|
|
574
|
+
/** Merge-patch a subscription */
|
|
575
|
+
patch: operations["patchEventSubscription"];
|
|
576
|
+
trace?: never;
|
|
577
|
+
};
|
|
578
|
+
"/runtime/events/delivery": {
|
|
579
|
+
parameters: {
|
|
580
|
+
query?: never;
|
|
581
|
+
header?: never;
|
|
582
|
+
path?: never;
|
|
583
|
+
cookie?: never;
|
|
584
|
+
};
|
|
585
|
+
/** List event deliveries (runtime log) */
|
|
586
|
+
get: operations["listEventDeliveries"];
|
|
587
|
+
put?: never;
|
|
588
|
+
post?: never;
|
|
589
|
+
delete?: never;
|
|
590
|
+
options?: never;
|
|
591
|
+
head?: never;
|
|
592
|
+
patch?: never;
|
|
593
|
+
trace?: never;
|
|
594
|
+
};
|
|
595
|
+
"/runtime/events/delivery/{id}": {
|
|
596
|
+
parameters: {
|
|
597
|
+
query?: never;
|
|
598
|
+
header?: never;
|
|
599
|
+
path: {
|
|
600
|
+
id: string;
|
|
601
|
+
};
|
|
602
|
+
cookie?: never;
|
|
603
|
+
};
|
|
604
|
+
/** Get an event delivery */
|
|
605
|
+
get: operations["getEventDelivery"];
|
|
606
|
+
put?: never;
|
|
607
|
+
post?: never;
|
|
608
|
+
delete?: never;
|
|
609
|
+
options?: never;
|
|
610
|
+
head?: never;
|
|
611
|
+
patch?: never;
|
|
612
|
+
trace?: never;
|
|
613
|
+
};
|
|
614
|
+
"/runtime/conversation/sessions": {
|
|
615
|
+
parameters: {
|
|
616
|
+
query?: never;
|
|
617
|
+
header?: never;
|
|
618
|
+
path?: never;
|
|
619
|
+
cookie?: never;
|
|
620
|
+
};
|
|
621
|
+
/** List conversation sessions for the authenticated user */
|
|
622
|
+
get: operations["listConversationSessions"];
|
|
623
|
+
put?: never;
|
|
624
|
+
/**
|
|
625
|
+
* Create a conversation session (no lazy creation per FR-C07)
|
|
626
|
+
* @description Body: `{ channel_name, roles_snapshot[], scope, llm_service?, user_name?, metadata? }`.
|
|
627
|
+
*
|
|
628
|
+
* The SERVER assigns `session_key` and returns it on the response. A body
|
|
629
|
+
* that CARRIES one is refused `400` — a client-chosen key was guessable,
|
|
630
|
+
* squattable by another tenant user, and an existence oracle. This block
|
|
631
|
+
* documented `session_key` as a request field, so an integrator following
|
|
632
|
+
* it wrote a client that was 400'd on every call; the SDK did exactly that
|
|
633
|
+
* until the two halves were reconciled.
|
|
634
|
+
*
|
|
635
|
+
* Precondition enforced (FR-C09, operations gate relaxed by ADR-0112):
|
|
636
|
+
* the actor must have ≥1 authorized `use` policy on some service in
|
|
637
|
+
* `scope` — governed conversation is itself the value, so no entity/flow
|
|
638
|
+
* operation is required. Possible 4xx codes: `INVALID_SCOPE` (400 — also
|
|
639
|
+
* returned for any other malformed body, including one carrying
|
|
640
|
+
* `session_key`), `SESSION_USER_MISMATCH` (403),
|
|
641
|
+
* `SESSION_CHANNEL_MISMATCH` (403), `LLM_SERVICE_UNAUTHORIZED` (403),
|
|
642
|
+
* `NO_AUTHORIZED_LLM_SERVICE_FOR_SCOPE` (403), `UNKNOWN_LLM_SERVICE`
|
|
643
|
+
* (404). `SESSION_KEY_CONFLICT` (409) is retained but unreachable short of
|
|
644
|
+
* a UUID collision, since the caller no longer chooses the key.
|
|
645
|
+
*/
|
|
646
|
+
post: operations["createConversationSession"];
|
|
647
|
+
delete?: never;
|
|
648
|
+
options?: never;
|
|
649
|
+
head?: never;
|
|
650
|
+
patch?: never;
|
|
651
|
+
trace?: never;
|
|
652
|
+
};
|
|
653
|
+
"/runtime/conversation/sessions/{session_key}": {
|
|
654
|
+
parameters: {
|
|
655
|
+
query?: never;
|
|
656
|
+
header?: never;
|
|
657
|
+
path: {
|
|
658
|
+
session_key: string;
|
|
659
|
+
};
|
|
660
|
+
cookie?: never;
|
|
661
|
+
};
|
|
662
|
+
/** Get a conversation session with turns */
|
|
663
|
+
get: operations["getConversationSession"];
|
|
664
|
+
put?: never;
|
|
665
|
+
post?: never;
|
|
666
|
+
/** Soft-delete a conversation session (marks status='cleared') */
|
|
667
|
+
delete: operations["clearConversationSession"];
|
|
668
|
+
options?: never;
|
|
669
|
+
head?: never;
|
|
670
|
+
patch?: never;
|
|
671
|
+
trace?: never;
|
|
672
|
+
};
|
|
673
|
+
"/runtime/conversation/sessions/{session_key}/turns": {
|
|
674
|
+
parameters: {
|
|
675
|
+
query?: never;
|
|
676
|
+
header?: never;
|
|
677
|
+
path: {
|
|
678
|
+
session_key: string;
|
|
679
|
+
};
|
|
680
|
+
cookie?: never;
|
|
681
|
+
};
|
|
682
|
+
/** List turns for a session */
|
|
683
|
+
get: operations["listConversationTurns"];
|
|
684
|
+
put?: never;
|
|
685
|
+
post?: never;
|
|
686
|
+
delete?: never;
|
|
687
|
+
options?: never;
|
|
688
|
+
head?: never;
|
|
689
|
+
patch?: never;
|
|
690
|
+
trace?: never;
|
|
691
|
+
};
|
|
692
|
+
"/runtime/conversation/sessions/{session_key}/turns/{turn_number}": {
|
|
693
|
+
parameters: {
|
|
694
|
+
query?: never;
|
|
695
|
+
header?: never;
|
|
696
|
+
path: {
|
|
697
|
+
session_key: string;
|
|
698
|
+
turn_number: number;
|
|
699
|
+
};
|
|
700
|
+
cookie?: never;
|
|
701
|
+
};
|
|
702
|
+
/** Get a specific turn */
|
|
703
|
+
get: operations["getConversationTurn"];
|
|
704
|
+
put?: never;
|
|
705
|
+
post?: never;
|
|
706
|
+
delete?: never;
|
|
707
|
+
options?: never;
|
|
708
|
+
head?: never;
|
|
709
|
+
patch?: never;
|
|
710
|
+
trace?: never;
|
|
711
|
+
};
|
|
712
|
+
"/runtime/conversation/sessions/{session_key}/actions": {
|
|
713
|
+
parameters: {
|
|
714
|
+
query?: never;
|
|
715
|
+
header?: never;
|
|
716
|
+
path: {
|
|
717
|
+
session_key: string;
|
|
718
|
+
};
|
|
719
|
+
cookie?: never;
|
|
720
|
+
};
|
|
721
|
+
/** List actions triggered by a session */
|
|
722
|
+
get: operations["listConversationActions"];
|
|
723
|
+
put?: never;
|
|
724
|
+
post?: never;
|
|
725
|
+
delete?: never;
|
|
726
|
+
options?: never;
|
|
727
|
+
head?: never;
|
|
728
|
+
patch?: never;
|
|
729
|
+
trace?: never;
|
|
730
|
+
};
|
|
731
|
+
"/runtime/conversation/sessions/{session_key}/actions/{id}": {
|
|
732
|
+
parameters: {
|
|
733
|
+
query?: never;
|
|
734
|
+
header?: never;
|
|
735
|
+
path: {
|
|
736
|
+
session_key: string;
|
|
737
|
+
id: string;
|
|
738
|
+
};
|
|
739
|
+
cookie?: never;
|
|
740
|
+
};
|
|
741
|
+
/** Get an action record */
|
|
742
|
+
get: operations["getConversationAction"];
|
|
743
|
+
put?: never;
|
|
744
|
+
post?: never;
|
|
745
|
+
delete?: never;
|
|
746
|
+
options?: never;
|
|
747
|
+
head?: never;
|
|
748
|
+
patch?: never;
|
|
749
|
+
trace?: never;
|
|
750
|
+
};
|
|
751
|
+
"/runtime/entities/{entity_name}/recompute": {
|
|
752
|
+
parameters: {
|
|
753
|
+
query?: never;
|
|
754
|
+
header?: never;
|
|
755
|
+
path: {
|
|
756
|
+
entity_name: components["parameters"]["EntityNamePath"];
|
|
757
|
+
};
|
|
758
|
+
cookie?: never;
|
|
759
|
+
};
|
|
760
|
+
get?: never;
|
|
761
|
+
put?: never;
|
|
762
|
+
/**
|
|
763
|
+
* Recompute derived fields for every record of an entity
|
|
764
|
+
* @description Rewrites the computed fields of every `runtime.records` row of the
|
|
765
|
+
* entity. ADR-0098 D9: this operates on RUNTIME state, so it lives on the
|
|
766
|
+
* runtime plane alongside the MCP `recompute_entity` tool, which shares its
|
|
767
|
+
* implementation and its authority (the `entities` contract section).
|
|
768
|
+
*/
|
|
769
|
+
post: operations["recomputeEntity"];
|
|
770
|
+
delete?: never;
|
|
771
|
+
options?: never;
|
|
772
|
+
head?: never;
|
|
773
|
+
patch?: never;
|
|
774
|
+
trace?: never;
|
|
775
|
+
};
|
|
776
|
+
"/runtime/channel-bindings/{id}/verify": {
|
|
777
|
+
parameters: {
|
|
778
|
+
query?: never;
|
|
779
|
+
header?: never;
|
|
780
|
+
path?: never;
|
|
781
|
+
cookie?: never;
|
|
782
|
+
};
|
|
783
|
+
get?: never;
|
|
784
|
+
put?: never;
|
|
785
|
+
/**
|
|
786
|
+
* Verify a channel binding
|
|
787
|
+
* @description ADR-0141 FR-031. Flips a channel binding from `unverified` to `verified` —
|
|
788
|
+
* the elevation signal channel-binding resolution reads.
|
|
789
|
+
*
|
|
790
|
+
* Authorized by the `verify_channel_binding` runtime SYSTEM ACTION, and by
|
|
791
|
+
* nothing else: the caller needs no `update` grant on
|
|
792
|
+
* `records/channel_identities`. That is the point of the operation. The
|
|
793
|
+
* binding entity is the product's declaration, so the tenant cannot extend it
|
|
794
|
+
* with the role-gated transition it used to supply; verification was
|
|
795
|
+
* previously a PATCH authorized by the generic entity `update` grant — the
|
|
796
|
+
* same grant that reaches `user_name`, the field that decides who someone is.
|
|
797
|
+
*
|
|
798
|
+
* Only the three verification fields are written. The request body may carry
|
|
799
|
+
* `verification_method` (a free-form string recording HOW the binding was
|
|
800
|
+
* verified); `verification_status` and `verified_at` are set by the server.
|
|
801
|
+
*/
|
|
802
|
+
post: operations["verifyChannelBinding"];
|
|
803
|
+
delete?: never;
|
|
804
|
+
options?: never;
|
|
805
|
+
head?: never;
|
|
806
|
+
patch?: never;
|
|
807
|
+
trace?: never;
|
|
808
|
+
};
|
|
809
|
+
"/runtime/roles/assignments": {
|
|
810
|
+
parameters: {
|
|
811
|
+
query?: never;
|
|
812
|
+
header?: never;
|
|
813
|
+
path?: never;
|
|
814
|
+
cookie?: never;
|
|
815
|
+
};
|
|
816
|
+
/** List role assignments */
|
|
817
|
+
get: operations["listRoleAssignments"];
|
|
818
|
+
put?: never;
|
|
819
|
+
/**
|
|
820
|
+
* Assign a role to a user
|
|
821
|
+
* @description ADR-0102 S4 (FR-016): owner-marked roles (the plan envelope) are
|
|
822
|
+
* platform-managed — assigning a user to one is rejected. The assigned
|
|
823
|
+
* user must exist as a live `users` record (DB user-existence trigger).
|
|
824
|
+
*/
|
|
825
|
+
post: operations["createRoleAssignment"];
|
|
826
|
+
delete?: never;
|
|
827
|
+
options?: never;
|
|
828
|
+
head?: never;
|
|
829
|
+
patch?: never;
|
|
830
|
+
trace?: never;
|
|
831
|
+
};
|
|
832
|
+
"/runtime/roles/assignments/{user_name}/{role_name}": {
|
|
833
|
+
parameters: {
|
|
834
|
+
query?: never;
|
|
835
|
+
header?: never;
|
|
836
|
+
path: {
|
|
837
|
+
user_name: string;
|
|
838
|
+
role_name: string;
|
|
839
|
+
};
|
|
840
|
+
cookie?: never;
|
|
841
|
+
};
|
|
842
|
+
get?: never;
|
|
843
|
+
put?: never;
|
|
844
|
+
post?: never;
|
|
845
|
+
/**
|
|
846
|
+
* Revoke a role from a user
|
|
847
|
+
* @description ADR-0102 S4 (FR-016): revoking an owner-marked assignment would
|
|
848
|
+
* destroy the tenant's envelope anchor — rejected.
|
|
849
|
+
*/
|
|
850
|
+
delete: operations["deleteRoleAssignment"];
|
|
851
|
+
options?: never;
|
|
852
|
+
head?: never;
|
|
853
|
+
patch?: never;
|
|
854
|
+
trace?: never;
|
|
855
|
+
};
|
|
856
|
+
"/runtime/conversation/send": {
|
|
857
|
+
parameters: {
|
|
858
|
+
query?: never;
|
|
859
|
+
header?: never;
|
|
860
|
+
path?: never;
|
|
861
|
+
cookie?: never;
|
|
862
|
+
};
|
|
863
|
+
get?: never;
|
|
864
|
+
put?: never;
|
|
865
|
+
/**
|
|
866
|
+
* Send a natural-language message to the cognitive agent
|
|
867
|
+
* @description Service endpoint — not CRUD-derivable. The LLM orchestrator compiles
|
|
868
|
+
* an intent, validates it against the tenant contract, and executes it
|
|
869
|
+
* via MCP tools.
|
|
870
|
+
*
|
|
871
|
+
* SpecKit 010 / ADR-0087:
|
|
872
|
+
* - Sessions are no longer lazily created — `session_key` MUST refer
|
|
873
|
+
* to a session previously created via `POST /runtime/conversation/sessions`
|
|
874
|
+
* (FR-C07). Unknown keys return `SESSION_NOT_FOUND` (404).
|
|
875
|
+
* - Optional `llm_service` overrides the session's pinned service for
|
|
876
|
+
* this turn (FR-C04). Must be authorized for the actor in the
|
|
877
|
+
* session's scope.
|
|
878
|
+
* - Possible error codes:
|
|
879
|
+
* - `SESSION_NOT_FOUND` (404): unknown `session_key`.
|
|
880
|
+
* - `LLM_SERVICE_UNAUTHORIZED` (403): actor lacks `use` on the
|
|
881
|
+
* requested service in the session's scope.
|
|
882
|
+
* - `INTENT_OUT_OF_SCOPE` (422): the LLM emitted an intent
|
|
883
|
+
* outside the session's scope partition (FR-H06 backstop).
|
|
884
|
+
* - `NO_CREDENTIAL_CONFIGURED` (412): the resolved service has
|
|
885
|
+
* no credential configured.
|
|
886
|
+
*/
|
|
887
|
+
post: operations["runtimeConversationSend"];
|
|
888
|
+
delete?: never;
|
|
889
|
+
options?: never;
|
|
890
|
+
head?: never;
|
|
891
|
+
patch?: never;
|
|
892
|
+
trace?: never;
|
|
893
|
+
};
|
|
894
|
+
"/runtime/channels/mint": {
|
|
895
|
+
parameters: {
|
|
896
|
+
query?: never;
|
|
897
|
+
header?: never;
|
|
898
|
+
path?: never;
|
|
899
|
+
cookie?: never;
|
|
900
|
+
};
|
|
901
|
+
get?: never;
|
|
902
|
+
put?: never;
|
|
903
|
+
/**
|
|
904
|
+
* Mint a short-TTL anonymous party token (channel-ops)
|
|
905
|
+
* @description Service endpoint (ADR-0133 §B.4 / decision 5). One of the FOUR
|
|
906
|
+
* channel-ops routes, and the ONLY routes that accept a `channel`-class
|
|
907
|
+
* ingress credential (`token_class='channel'`). The asymmetry is
|
|
908
|
+
* enforced by the class-aware pipeline: a tenant token is rejected here,
|
|
909
|
+
* and a channel credential is rejected on every other runtime route.
|
|
910
|
+
*
|
|
911
|
+
* The channel is taken from the CREDENTIAL, never from the body — a
|
|
912
|
+
* gateway can only ever mint into its own channel. The body is strict:
|
|
913
|
+
* `{ party_ref }` and nothing else. Any role/privilege claim alongside
|
|
914
|
+
* `party_ref` fails validation before the mint and returns 422
|
|
915
|
+
* `MINT_CLAIM_REJECTED` (QI-003) — a channel names a party, it never
|
|
916
|
+
* grants that party authority.
|
|
917
|
+
*
|
|
918
|
+
* The response is a **bare** body (no `{success,data}` envelope); the
|
|
919
|
+
* SDK returns it whole (codegen-unwrap: no-unwrap).
|
|
920
|
+
*/
|
|
921
|
+
post: operations["runtimeChannelsMint"];
|
|
922
|
+
delete?: never;
|
|
923
|
+
options?: never;
|
|
924
|
+
head?: never;
|
|
925
|
+
patch?: never;
|
|
926
|
+
trace?: never;
|
|
927
|
+
};
|
|
928
|
+
"/runtime/channels/directives/stream": {
|
|
929
|
+
parameters: {
|
|
930
|
+
query?: never;
|
|
931
|
+
header?: never;
|
|
932
|
+
path?: never;
|
|
933
|
+
cookie?: never;
|
|
934
|
+
};
|
|
935
|
+
/**
|
|
936
|
+
* SSE liveness stream of new egress directives (channel-ops)
|
|
937
|
+
* @description Service endpoint (ADR-0133 §B.4 / decision 5) — the `subscribe`
|
|
938
|
+
* capability. Channel-ops route: `channel`-class credential only.
|
|
939
|
+
*
|
|
940
|
+
* The stream is server-side filtered to the credential's OWN
|
|
941
|
+
* `(tenant, channel)`: a subscriber never observes another channel's
|
|
942
|
+
* directive metadata (QI-006). Notification transport ONLY — durability
|
|
943
|
+
* is the outbox + sweep, so a missed frame is never a lost directive.
|
|
944
|
+
*
|
|
945
|
+
* The wire is a `text/event-stream` carrying `channel.directive_created`
|
|
946
|
+
* frames whose `data` is `{directive_id}` — an id, never content. The
|
|
947
|
+
* body itself is fetched separately via
|
|
948
|
+
* `GET /runtime/channels/directives/{id}/content` (notify-then-fetch).
|
|
949
|
+
* A `:heartbeat` comment is emitted every 30 seconds to keep the
|
|
950
|
+
* connection alive.
|
|
951
|
+
*/
|
|
952
|
+
get: operations["runtimeChannelsSubscribe"];
|
|
953
|
+
put?: never;
|
|
954
|
+
post?: never;
|
|
955
|
+
delete?: never;
|
|
956
|
+
options?: never;
|
|
957
|
+
head?: never;
|
|
958
|
+
patch?: never;
|
|
959
|
+
trace?: never;
|
|
960
|
+
};
|
|
961
|
+
"/runtime/channels/directives/{id}/content": {
|
|
962
|
+
parameters: {
|
|
963
|
+
query?: never;
|
|
964
|
+
header?: never;
|
|
965
|
+
path: {
|
|
966
|
+
/** @description Egress directive id (ADR-0133 §B.4) */
|
|
967
|
+
id: components["parameters"]["ChannelDirectiveIdPath"];
|
|
968
|
+
};
|
|
969
|
+
cookie?: never;
|
|
970
|
+
};
|
|
971
|
+
/**
|
|
972
|
+
* Fetch (= claim) an egress directive and its content (channel-ops)
|
|
973
|
+
* @description Service endpoint (ADR-0133 §B.4 / decision 5) — the `fetch` capability.
|
|
974
|
+
* Channel-ops route: `channel`-class credential only.
|
|
975
|
+
*
|
|
976
|
+
* **fetch = claim**: this single call takes the delivery lease AND
|
|
977
|
+
* returns the turn body. Notify-then-fetch forces every send through
|
|
978
|
+
* here, which is what keeps the capability set closed at four (there is
|
|
979
|
+
* no separate `claim` op). The lease is keyed by the credential's `jti`
|
|
980
|
+
* (its stable lease identity) and expires after a bounded TTL, so a dead
|
|
981
|
+
* adapter cannot strand a directive.
|
|
982
|
+
*
|
|
983
|
+
* A directive addressed to another channel is 403 — never readable
|
|
984
|
+
* (QI-006). The response is a **bare** body (no `{success,data}`
|
|
985
|
+
* envelope); the SDK returns it whole (codegen-unwrap: no-unwrap).
|
|
986
|
+
*/
|
|
987
|
+
get: operations["runtimeChannelsFetch"];
|
|
988
|
+
put?: never;
|
|
989
|
+
post?: never;
|
|
990
|
+
delete?: never;
|
|
991
|
+
options?: never;
|
|
992
|
+
head?: never;
|
|
993
|
+
patch?: never;
|
|
994
|
+
trace?: never;
|
|
995
|
+
};
|
|
996
|
+
"/runtime/channels/directives/{id}/send-result": {
|
|
997
|
+
parameters: {
|
|
998
|
+
query?: never;
|
|
999
|
+
header?: never;
|
|
1000
|
+
path: {
|
|
1001
|
+
/** @description Egress directive id (ADR-0133 §B.4) */
|
|
1002
|
+
id: components["parameters"]["ChannelDirectiveIdPath"];
|
|
1003
|
+
};
|
|
1004
|
+
cookie?: never;
|
|
1005
|
+
};
|
|
1006
|
+
get?: never;
|
|
1007
|
+
put?: never;
|
|
1008
|
+
/**
|
|
1009
|
+
* Report (= ack) the terminal send result of a directive (channel-ops)
|
|
1010
|
+
* @description Service endpoint (ADR-0133 §B.4 / decision 5) — the `report`
|
|
1011
|
+
* capability. Channel-ops route: `channel`-class credential only.
|
|
1012
|
+
*
|
|
1013
|
+
* **report = ack**: the terminal transition plus the lease release.
|
|
1014
|
+
* Idempotent under redelivery — re-reporting an already-terminal
|
|
1015
|
+
* directive returns its existing status unchanged (QI-005b).
|
|
1016
|
+
*
|
|
1017
|
+
* A terminal report also appends the `channel.egress` boundary row to
|
|
1018
|
+
* the `channels` hash chain (ADR-0133 §B.7 / FR-E01), metadata-only.
|
|
1019
|
+
* `provider_message_id` MUST already be hashed by the adapter
|
|
1020
|
+
* (FR-E03): an address-shaped value is refused by the audit schema
|
|
1021
|
+
* (QI-001) and the row is skipped rather than leaking an address.
|
|
1022
|
+
*
|
|
1023
|
+
* A directive belonging to another channel is 403 (QI-006); a lost lease
|
|
1024
|
+
* is 409, so the adapter aborts rather than assuming success. The
|
|
1025
|
+
* response is a **bare** body (no `{success,data}` envelope); the SDK
|
|
1026
|
+
* returns it whole (codegen-unwrap: no-unwrap).
|
|
1027
|
+
*/
|
|
1028
|
+
post: operations["runtimeChannelsReport"];
|
|
1029
|
+
delete?: never;
|
|
1030
|
+
options?: never;
|
|
1031
|
+
head?: never;
|
|
1032
|
+
patch?: never;
|
|
1033
|
+
trace?: never;
|
|
1034
|
+
};
|
|
1035
|
+
"/runtime/tools": {
|
|
1036
|
+
parameters: {
|
|
1037
|
+
query?: never;
|
|
1038
|
+
header?: never;
|
|
1039
|
+
path?: never;
|
|
1040
|
+
cookie?: never;
|
|
1041
|
+
};
|
|
1042
|
+
/**
|
|
1043
|
+
* List tools available to the authenticated user
|
|
1044
|
+
* @description Returns a `UserToolCatalog` filtered to the calling user's roles.
|
|
1045
|
+
* Includes entity-CRUD tools (list_*, create_*, get_*, update_*, delete_*)
|
|
1046
|
+
* and — for every (entity, field) whose contract declares a non-empty
|
|
1047
|
+
* `transitions[]` block and for which the user's roles intersect
|
|
1048
|
+
* `R(entity, field)` — the dynamic state-machine trio:
|
|
1049
|
+
* - request_{entity}_{field}_transition
|
|
1050
|
+
* - resolve_{entity}_{field}_transition_request
|
|
1051
|
+
* - list_{entity}_{field}_pending_transition_requests
|
|
1052
|
+
* Structured per-trio metadata lives in `UserToolCatalog.transitions`.
|
|
1053
|
+
* See ADR-0081.
|
|
1054
|
+
*/
|
|
1055
|
+
get: operations["runtimeToolsList"];
|
|
1056
|
+
put?: never;
|
|
1057
|
+
post?: never;
|
|
1058
|
+
delete?: never;
|
|
1059
|
+
options?: never;
|
|
1060
|
+
head?: never;
|
|
1061
|
+
patch?: never;
|
|
1062
|
+
trace?: never;
|
|
1063
|
+
};
|
|
1064
|
+
"/runtime/authorizations/effective": {
|
|
1065
|
+
parameters: {
|
|
1066
|
+
query?: never;
|
|
1067
|
+
header?: never;
|
|
1068
|
+
path?: never;
|
|
1069
|
+
cookie?: never;
|
|
1070
|
+
};
|
|
1071
|
+
/**
|
|
1072
|
+
* Effective authorizations of the authenticated actor (ADR-0102 §6, S3b)
|
|
1073
|
+
* @description Self-scoped introspection: returns what the authorization engine
|
|
1074
|
+
* actually decides for the CALLING actor — assigned roles (+ implicit
|
|
1075
|
+
* `self`), the contract sections they can manage (`update` policies),
|
|
1076
|
+
* the runtime system actions they hold (e.g. `view_traces`,
|
|
1077
|
+
* `manage_role_assignments`), and per-entity record permissions (actions +
|
|
1078
|
+
* per-action field restrictions; `null` = all fields). Derived by the
|
|
1079
|
+
* same canonical resolvers the enforcement paths use, so the response
|
|
1080
|
+
* can never drift from enforcement. There is NO actor parameter —
|
|
1081
|
+
* identity comes exclusively from the verified token.
|
|
1082
|
+
*/
|
|
1083
|
+
get: operations["runtimeEffectiveAuthorizations"];
|
|
1084
|
+
put?: never;
|
|
1085
|
+
post?: never;
|
|
1086
|
+
delete?: never;
|
|
1087
|
+
options?: never;
|
|
1088
|
+
head?: never;
|
|
1089
|
+
patch?: never;
|
|
1090
|
+
trace?: never;
|
|
1091
|
+
};
|
|
1092
|
+
"/runtime/mcp": {
|
|
1093
|
+
parameters: {
|
|
1094
|
+
query?: never;
|
|
1095
|
+
header?: never;
|
|
1096
|
+
path?: never;
|
|
1097
|
+
cookie?: never;
|
|
1098
|
+
};
|
|
1099
|
+
get?: never;
|
|
1100
|
+
put?: never;
|
|
1101
|
+
/**
|
|
1102
|
+
* MCP streamable-HTTP transport endpoint (stateless JSON-RPC)
|
|
1103
|
+
* @description Stateless MCP "Streamable HTTP" transport. Each POST carries one MCP
|
|
1104
|
+
* JSON-RPC message; the server replies either application/json or a
|
|
1105
|
+
* text/event-stream (its choice per request). Authenticated by the same
|
|
1106
|
+
* runtime tenant JWT as the REST API (aud='runtime-api',
|
|
1107
|
+
* token_class='tenant'), bound to the {tenant}.zarel.local subdomain
|
|
1108
|
+
* (canon §10.4 / ADR-0041). Spec-1 (mcp runtime-plane exposure) replaced
|
|
1109
|
+
* the fictional GET /runtime/mcp/stream SSE path with this POST transport
|
|
1110
|
+
* served by mcp-server-http.
|
|
1111
|
+
*/
|
|
1112
|
+
post: operations["runtimeMcp"];
|
|
1113
|
+
delete?: never;
|
|
1114
|
+
options?: never;
|
|
1115
|
+
head?: never;
|
|
1116
|
+
patch?: never;
|
|
1117
|
+
trace?: never;
|
|
1118
|
+
};
|
|
1119
|
+
"/runtime/tools/mcp/list": {
|
|
1120
|
+
parameters: {
|
|
1121
|
+
query?: never;
|
|
1122
|
+
header?: never;
|
|
1123
|
+
path?: never;
|
|
1124
|
+
cookie?: never;
|
|
1125
|
+
};
|
|
1126
|
+
/**
|
|
1127
|
+
* List MCP tools accessible to the authenticated tenant
|
|
1128
|
+
* @description Returns the MCP-layer `McpToolDefinition` list filtered to the tools
|
|
1129
|
+
* the user can see. Dynamic state-machine trio entries appear as
|
|
1130
|
+
* first-class peers to entity-CRUD tools (ADR-0081). Transition tools
|
|
1131
|
+
* are emitted dynamically from the contract per-(entity, field); the
|
|
1132
|
+
* legacy closed set of three generic transition tools is removed (see
|
|
1133
|
+
* CHANGELOG for the transition).
|
|
1134
|
+
*/
|
|
1135
|
+
get: operations["runtimeToolsMcpList"];
|
|
1136
|
+
put?: never;
|
|
1137
|
+
post?: never;
|
|
1138
|
+
delete?: never;
|
|
1139
|
+
options?: never;
|
|
1140
|
+
head?: never;
|
|
1141
|
+
patch?: never;
|
|
1142
|
+
trace?: never;
|
|
1143
|
+
};
|
|
1144
|
+
"/runtime/tools/call": {
|
|
1145
|
+
parameters: {
|
|
1146
|
+
query?: never;
|
|
1147
|
+
header?: never;
|
|
1148
|
+
path?: never;
|
|
1149
|
+
cookie?: never;
|
|
1150
|
+
};
|
|
1151
|
+
get?: never;
|
|
1152
|
+
put?: never;
|
|
1153
|
+
/** Invoke a tool directly by name */
|
|
1154
|
+
post: operations["runtimeToolsCall"];
|
|
1155
|
+
delete?: never;
|
|
1156
|
+
options?: never;
|
|
1157
|
+
head?: never;
|
|
1158
|
+
patch?: never;
|
|
1159
|
+
trace?: never;
|
|
1160
|
+
};
|
|
1161
|
+
"/health": {
|
|
1162
|
+
parameters: {
|
|
1163
|
+
query?: never;
|
|
1164
|
+
header?: never;
|
|
1165
|
+
path?: never;
|
|
1166
|
+
cookie?: never;
|
|
1167
|
+
};
|
|
1168
|
+
/** Liveness / readiness check */
|
|
1169
|
+
get: operations["getHealth"];
|
|
1170
|
+
put?: never;
|
|
1171
|
+
post?: never;
|
|
1172
|
+
delete?: never;
|
|
1173
|
+
options?: never;
|
|
1174
|
+
head?: never;
|
|
1175
|
+
patch?: never;
|
|
1176
|
+
trace?: never;
|
|
1177
|
+
};
|
|
1178
|
+
"/metrics": {
|
|
1179
|
+
parameters: {
|
|
1180
|
+
query?: never;
|
|
1181
|
+
header?: never;
|
|
1182
|
+
path?: never;
|
|
1183
|
+
cookie?: never;
|
|
1184
|
+
};
|
|
1185
|
+
/** Operational metrics snapshot */
|
|
1186
|
+
get: operations["getMetrics"];
|
|
1187
|
+
put?: never;
|
|
1188
|
+
post?: never;
|
|
1189
|
+
delete?: never;
|
|
1190
|
+
options?: never;
|
|
1191
|
+
head?: never;
|
|
1192
|
+
patch?: never;
|
|
1193
|
+
trace?: never;
|
|
1194
|
+
};
|
|
1195
|
+
"/api-keys": {
|
|
1196
|
+
parameters: {
|
|
1197
|
+
query?: never;
|
|
1198
|
+
header?: never;
|
|
1199
|
+
path?: never;
|
|
1200
|
+
cookie?: never;
|
|
1201
|
+
};
|
|
1202
|
+
/**
|
|
1203
|
+
* List API keys (masked metadata)
|
|
1204
|
+
* @description Bounded fidelity declaration (see `createApiKey`). Returns a **bare**
|
|
1205
|
+
* array of masked key metadata — the SDK returns it whole (no-unwrap).
|
|
1206
|
+
*/
|
|
1207
|
+
get: operations["listApiKeys"];
|
|
1208
|
+
put?: never;
|
|
1209
|
+
/**
|
|
1210
|
+
* Create an API key
|
|
1211
|
+
* @description Bounded fidelity declaration for the three `/api-keys` endpoints the SDK
|
|
1212
|
+
* already calls (ADR-0109 codegen-unwrap follow-up) — NOT the broader
|
|
1213
|
+
* ADR-0072 `/api-keys` redesign. The response is a **bare** body carrying
|
|
1214
|
+
* the one-time plaintext `key`; the SDK returns it whole (no-unwrap).
|
|
1215
|
+
*/
|
|
1216
|
+
post: operations["createApiKey"];
|
|
1217
|
+
delete?: never;
|
|
1218
|
+
options?: never;
|
|
1219
|
+
head?: never;
|
|
1220
|
+
patch?: never;
|
|
1221
|
+
trace?: never;
|
|
1222
|
+
};
|
|
1223
|
+
"/api-keys/{key_id}": {
|
|
1224
|
+
parameters: {
|
|
1225
|
+
query?: never;
|
|
1226
|
+
header?: never;
|
|
1227
|
+
path: {
|
|
1228
|
+
key_id: string;
|
|
1229
|
+
};
|
|
1230
|
+
cookie?: never;
|
|
1231
|
+
};
|
|
1232
|
+
get?: never;
|
|
1233
|
+
put?: never;
|
|
1234
|
+
post?: never;
|
|
1235
|
+
/**
|
|
1236
|
+
* Revoke an API key
|
|
1237
|
+
* @description Bounded fidelity declaration (see `createApiKey`). Returns a **flat**
|
|
1238
|
+
* `{success:true}` ack (no `data`, not envelope-wrapped) — the SDK returns
|
|
1239
|
+
* it whole (no-unwrap).
|
|
1240
|
+
*/
|
|
1241
|
+
delete: operations["deleteApiKey"];
|
|
1242
|
+
options?: never;
|
|
1243
|
+
head?: never;
|
|
1244
|
+
patch?: never;
|
|
1245
|
+
trace?: never;
|
|
1246
|
+
};
|
|
1247
|
+
"/runtime/state-machine/replay": {
|
|
1248
|
+
parameters: {
|
|
1249
|
+
query?: never;
|
|
1250
|
+
header?: never;
|
|
1251
|
+
path?: never;
|
|
1252
|
+
cookie?: never;
|
|
1253
|
+
};
|
|
1254
|
+
get?: never;
|
|
1255
|
+
put?: never;
|
|
1256
|
+
/**
|
|
1257
|
+
* Replay a state-machine instance against a new configuration
|
|
1258
|
+
* @description Service endpoint (spec-051 US4 — moved from the legacy
|
|
1259
|
+
* `/workflows/replay`). The handler delegates to the MCP
|
|
1260
|
+
* `replay_workflow` tool and unwraps its JSON envelope.
|
|
1261
|
+
*/
|
|
1262
|
+
post: operations["runtimeStateMachineReplay"];
|
|
1263
|
+
delete?: never;
|
|
1264
|
+
options?: never;
|
|
1265
|
+
head?: never;
|
|
1266
|
+
patch?: never;
|
|
1267
|
+
trace?: never;
|
|
1268
|
+
};
|
|
1269
|
+
"/runtime/events/stream": {
|
|
1270
|
+
parameters: {
|
|
1271
|
+
query?: never;
|
|
1272
|
+
header?: never;
|
|
1273
|
+
path?: never;
|
|
1274
|
+
cookie?: never;
|
|
1275
|
+
};
|
|
1276
|
+
/**
|
|
1277
|
+
* Server-sent events stream for real-time tenant events
|
|
1278
|
+
* @description Service endpoint. Supports `Last-Event-ID` for reconnection; sends a
|
|
1279
|
+
* heartbeat comment every 30 seconds to keep the connection alive.
|
|
1280
|
+
*
|
|
1281
|
+
* The wire is a `text/event-stream` of named SSE frames; each frame's
|
|
1282
|
+
* `data` is a JSON envelope `{entity, record_id, payload, timestamp}`. The
|
|
1283
|
+
* only event with a fixed payload is `conversation.turn_created`, typed by
|
|
1284
|
+
* `RuntimeSseConversationTurnCreatedData` (envelope) /
|
|
1285
|
+
* `RuntimeSseConversationTurnCreatedPayload` (payload) under `components.schemas`;
|
|
1286
|
+
* all other events carry tenant-defined payloads.
|
|
1287
|
+
*/
|
|
1288
|
+
get: operations["streamEvents"];
|
|
1289
|
+
put?: never;
|
|
1290
|
+
post?: never;
|
|
1291
|
+
delete?: never;
|
|
1292
|
+
options?: never;
|
|
1293
|
+
head?: never;
|
|
1294
|
+
patch?: never;
|
|
1295
|
+
trace?: never;
|
|
1296
|
+
};
|
|
1297
|
+
"/runtime/traces/{trace_id}": {
|
|
1298
|
+
parameters: {
|
|
1299
|
+
query?: never;
|
|
1300
|
+
header?: never;
|
|
1301
|
+
path: {
|
|
1302
|
+
trace_id: string;
|
|
1303
|
+
};
|
|
1304
|
+
cookie?: never;
|
|
1305
|
+
};
|
|
1306
|
+
/**
|
|
1307
|
+
* Full chronology of one agent dispatch (Spec-020 US1)
|
|
1308
|
+
* @description Returns the trace header (tenant, session, deployed spec version +
|
|
1309
|
+
* hash, actor, flow, started_at, duration, outcome) plus the ordered
|
|
1310
|
+
* `events[]` covering the eight pipeline stages: `topic_gate`,
|
|
1311
|
+
* `intent_scoring`, `envelope`, `gatekeeper`, `preconditions`,
|
|
1312
|
+
* `hitl`, `execution`, `audit`.
|
|
1313
|
+
*
|
|
1314
|
+
* ADR-0127 (US4) — the `gatekeeper` and `preconditions` events are emitted
|
|
1315
|
+
* from the deterministic write floor's REAL recorded verdict (`allowed` /
|
|
1316
|
+
* `denied` / `requires_confirmation`, with the typed reason and any failed
|
|
1317
|
+
* preconditions), not inferred from the terminal outcome.
|
|
1318
|
+
*
|
|
1319
|
+
* Authorization (FR-006, originator gate): a trace is visible to its
|
|
1320
|
+
* originator and to superusers; everyone else gets `404
|
|
1321
|
+
* trace_not_found` indistinguishable from a genuine miss.
|
|
1322
|
+
*
|
|
1323
|
+
* Pre-feature traces (FR-007): sessions originated before spec-020
|
|
1324
|
+
* deployment have no `trace_id` and return `404
|
|
1325
|
+
* legacy_trace_not_available`. There is no retroactive backfill.
|
|
1326
|
+
*/
|
|
1327
|
+
get: operations["getTrace"];
|
|
1328
|
+
put?: never;
|
|
1329
|
+
post?: never;
|
|
1330
|
+
delete?: never;
|
|
1331
|
+
options?: never;
|
|
1332
|
+
head?: never;
|
|
1333
|
+
patch?: never;
|
|
1334
|
+
trace?: never;
|
|
1335
|
+
};
|
|
1336
|
+
"/runtime/traces": {
|
|
1337
|
+
parameters: {
|
|
1338
|
+
query?: never;
|
|
1339
|
+
header?: never;
|
|
1340
|
+
path?: never;
|
|
1341
|
+
cookie?: never;
|
|
1342
|
+
};
|
|
1343
|
+
/**
|
|
1344
|
+
* Paginated trace summary list (Spec-020 US1)
|
|
1345
|
+
* @description Filters: `flow`, `user`, `from`, `to`, `outcome`, `limit` (default
|
|
1346
|
+
* 50, max 500), `cursor`. Returns `{ traces: TraceSummary[],
|
|
1347
|
+
* next_cursor: string | null }`.
|
|
1348
|
+
*
|
|
1349
|
+
* Visibility is applied where the page is CHOSEN, not after it: the
|
|
1350
|
+
* originator restriction runs in the query, before `LIMIT`, so every
|
|
1351
|
+
* row of a page is a row the caller may see and `next_cursor` — which
|
|
1352
|
+
* anchors on the last row — has nothing to disclose. (This
|
|
1353
|
+
* description previously said the cursor anchors at the last DB row
|
|
1354
|
+
* "visible or not". That was accurate about the old behaviour and
|
|
1355
|
+
* the old behaviour handed one caller another caller's `trace_id`
|
|
1356
|
+
* and `started_at` in cleartext.)
|
|
1357
|
+
*
|
|
1358
|
+
* `duration_basis` says WHICH WINDOW each timing field was measured
|
|
1359
|
+
* over, because this endpoint and `GET /runtime/traces/{trace_id}`
|
|
1360
|
+
* answer different questions about the same trace:
|
|
1361
|
+
*
|
|
1362
|
+
* * `anchor_evidence` (this endpoint) — the span of the trace's
|
|
1363
|
+
* anchoring evidence: its conversation turns, or for a REST-only
|
|
1364
|
+
* governed write its gatekeeper verdicts. "How long did the
|
|
1365
|
+
* caller wait." A late webhook retry cannot make a fast
|
|
1366
|
+
* conversation look slow in a page you scan for slow ones.
|
|
1367
|
+
* * `all_evidence` (the single-trace read) — the span of every
|
|
1368
|
+
* recorded event, deliveries and record writes included. "How
|
|
1369
|
+
* long until everything this request caused had settled."
|
|
1370
|
+
*
|
|
1371
|
+
* A conversation answered in 6 s whose delivery settles at 40 s
|
|
1372
|
+
* reports 6 s here and 40 s there. Both are true; the field is how
|
|
1373
|
+
* you tell which you are reading.
|
|
1374
|
+
*/
|
|
1375
|
+
get: operations["queryTraces"];
|
|
1376
|
+
put?: never;
|
|
1377
|
+
post?: never;
|
|
1378
|
+
delete?: never;
|
|
1379
|
+
options?: never;
|
|
1380
|
+
head?: never;
|
|
1381
|
+
patch?: never;
|
|
1382
|
+
trace?: never;
|
|
1383
|
+
};
|
|
1384
|
+
"/runtime/traces/{trace_id}/replay": {
|
|
1385
|
+
parameters: {
|
|
1386
|
+
query?: never;
|
|
1387
|
+
header?: never;
|
|
1388
|
+
path: {
|
|
1389
|
+
trace_id: string;
|
|
1390
|
+
};
|
|
1391
|
+
cookie?: never;
|
|
1392
|
+
};
|
|
1393
|
+
get?: never;
|
|
1394
|
+
put?: never;
|
|
1395
|
+
/**
|
|
1396
|
+
* Re-run deterministic governance stages against the proposed spec
|
|
1397
|
+
* @description Body: `{ against_current_spec?: boolean }`. Returns side-by-side
|
|
1398
|
+
* comparison of original vs replayed stages with `deterministic_match`
|
|
1399
|
+
* boolean and `stages_diverged[]`. The originator gate (FR-006)
|
|
1400
|
+
* applies — replay leaks the trace's content, so the same
|
|
1401
|
+
* visibility rule that governs the trace fetch route applies here.
|
|
1402
|
+
*/
|
|
1403
|
+
post: operations["replayTrace"];
|
|
1404
|
+
delete?: never;
|
|
1405
|
+
options?: never;
|
|
1406
|
+
head?: never;
|
|
1407
|
+
patch?: never;
|
|
1408
|
+
trace?: never;
|
|
1409
|
+
};
|
|
1410
|
+
"/runtime/traces/{trace_id}/bundle": {
|
|
1411
|
+
parameters: {
|
|
1412
|
+
query?: never;
|
|
1413
|
+
header?: never;
|
|
1414
|
+
path: {
|
|
1415
|
+
trace_id: string;
|
|
1416
|
+
};
|
|
1417
|
+
cookie?: never;
|
|
1418
|
+
};
|
|
1419
|
+
/**
|
|
1420
|
+
* Download a signed evidence bundle (.tar.gz)
|
|
1421
|
+
* @description Streams the bundle as `application/gzip` with attachment
|
|
1422
|
+
* `Content-Disposition`. Contents per ADR-0090: `README.md`,
|
|
1423
|
+
* `trace.json`, `trace.pdf`, `spec/{deployed_at_execution.yaml,.hash}`,
|
|
1424
|
+
* `entities_snapshot.json`, `replay_attestation.json`, `manifest.sig`
|
|
1425
|
+
* (Ed25519 over the canonical JSON of `manifest.json` per RFC 8785).
|
|
1426
|
+
*
|
|
1427
|
+
* Soft cap 50 MB / hard cap 200 MB after compression. Past the hard
|
|
1428
|
+
* cap returns `error.code = bundle_too_large` (FR-035a). Originator
|
|
1429
|
+
* gate enforced same as trace fetch.
|
|
1430
|
+
*/
|
|
1431
|
+
get: operations["getTraceBundle"];
|
|
1432
|
+
put?: never;
|
|
1433
|
+
post?: never;
|
|
1434
|
+
delete?: never;
|
|
1435
|
+
options?: never;
|
|
1436
|
+
head?: never;
|
|
1437
|
+
patch?: never;
|
|
1438
|
+
trace?: never;
|
|
1439
|
+
};
|
|
1440
|
+
"/runtime/audit/{log}/evidence": {
|
|
1441
|
+
parameters: {
|
|
1442
|
+
query?: never;
|
|
1443
|
+
header?: never;
|
|
1444
|
+
path: {
|
|
1445
|
+
/** @description The event log whose hash-chain to export. */
|
|
1446
|
+
log: "state_machine" | "flows";
|
|
1447
|
+
};
|
|
1448
|
+
cookie?: never;
|
|
1449
|
+
};
|
|
1450
|
+
/**
|
|
1451
|
+
* Download a signed audit tamper-evidence bundle (.tar.gz)
|
|
1452
|
+
* @description ADR-0108. Streams a self-contained, offline-verifiable evidence bundle
|
|
1453
|
+
* for the tenant's `{log}` cryptographic hash-chain as `application/gzip`
|
|
1454
|
+
* with attachment `Content-Disposition`. Contents: `events.json` (the RAW
|
|
1455
|
+
* event content + chain columns `seq`/`prev_hash`/`event_hash`, so the
|
|
1456
|
+
* verifier recomputes the canonical bytes itself), `checkpoints.json` (the
|
|
1457
|
+
* covering Ed25519-signed checkpoints), `anchors.json` (ADR-0115: external
|
|
1458
|
+
* RFC 3161 TSA anchors over the checkpoints' Merkle roots + this tenant's
|
|
1459
|
+
* inclusion paths — present only for already-anchored windows; absent
|
|
1460
|
+
* windows verify as the un-anchored tail), `README.md`, `manifest.json` +
|
|
1461
|
+
* `manifest.sig` (Ed25519 over the canonical JSON of the manifest, which
|
|
1462
|
+
* hashes every file incl. `anchors.json`, ADR-0090). Verify offline with
|
|
1463
|
+
* `zarel verify <bundle> --keys <trust-keys.json>` (add `--tsa-roots
|
|
1464
|
+
* <pinned.pem>` to also verify external anchoring, ADR-0115).
|
|
1465
|
+
*
|
|
1466
|
+
* Authorization: gated by the `view_traces` runtime-system action (an
|
|
1467
|
+
* evidence bundle exposes the full event content for the tenant, same as
|
|
1468
|
+
* the trace bundle). An unauthorized actor receives an opaque 404. Tenant
|
|
1469
|
+
* is taken from the verified JWT, never the path.
|
|
1470
|
+
*
|
|
1471
|
+
* Bounded read (ADR-0108 follow-up): the optional `from`/`to` query
|
|
1472
|
+
* parameters restrict the export to an inclusive `seq` range. A request
|
|
1473
|
+
* whose selected range exceeds the per-bundle event cap is refused with
|
|
1474
|
+
* `413` — narrow it via `from`/`to`. For a partial range, only checkpoints
|
|
1475
|
+
* anchored within the slice are included so the slice verifies cleanly.
|
|
1476
|
+
*/
|
|
1477
|
+
get: operations["getAuditEvidenceBundle"];
|
|
1478
|
+
put?: never;
|
|
1479
|
+
post?: never;
|
|
1480
|
+
delete?: never;
|
|
1481
|
+
options?: never;
|
|
1482
|
+
head?: never;
|
|
1483
|
+
patch?: never;
|
|
1484
|
+
trace?: never;
|
|
1485
|
+
};
|
|
1486
|
+
"/runtime/audit/{log}": {
|
|
1487
|
+
parameters: {
|
|
1488
|
+
query?: never;
|
|
1489
|
+
header?: never;
|
|
1490
|
+
path: {
|
|
1491
|
+
/** @description The audit row-table to list. */
|
|
1492
|
+
log: "binding_violations" | "topic_refusals";
|
|
1493
|
+
};
|
|
1494
|
+
cookie?: never;
|
|
1495
|
+
};
|
|
1496
|
+
/**
|
|
1497
|
+
* Paginated, filterable listing of a privacy-preserving audit row-table (GTM M1)
|
|
1498
|
+
* @description Lists rows of the tenant's `{log}` audit table — `binding_violations`
|
|
1499
|
+
* (ADR-0106 Amendment A1, blocked field-binding parameter-injection
|
|
1500
|
+
* attempts) or `topic_refusals` (ADR-0107, blocked regulatory-boundary
|
|
1501
|
+
* refusals). Each row exposes only a non-reversible SHA-256 hash + a
|
|
1502
|
+
* deterministic PII-mask of the offending value — NEVER the raw value (it
|
|
1503
|
+
* is never stored). Newest-first, cursor-paginated. Response body (inside
|
|
1504
|
+
* the success envelope): `{ items: <row>[], next_cursor: string | null }`
|
|
1505
|
+
* where `<row>` is `BindingViolationAuditRow` or `TopicRefusalAuditRow`.
|
|
1506
|
+
*
|
|
1507
|
+
* Authorization: gated by the `view_traces` runtime-system action (the same
|
|
1508
|
+
* gate as `/runtime/traces` and `/runtime/audit/{log}/evidence`).
|
|
1509
|
+
* Authorization + known-log are checked BEFORE filter validation, so an
|
|
1510
|
+
* unauthorized actor OR an unknown log receives an opaque `404` — even with
|
|
1511
|
+
* a malformed filter — and cannot probe filter validity. There is no
|
|
1512
|
+
* per-row originator gate: any holder of `view_traces` sees all tenant
|
|
1513
|
+
* rows. Tenant is taken from the verified JWT, never the path. Distinct
|
|
1514
|
+
* from `/runtime/audit/{log}/evidence` (ADR-0108), whose `{log}` is the
|
|
1515
|
+
* event hash-chains `state_machine | flows`.
|
|
1516
|
+
*/
|
|
1517
|
+
get: operations["listAuditLog"];
|
|
1518
|
+
put?: never;
|
|
1519
|
+
post?: never;
|
|
1520
|
+
delete?: never;
|
|
1521
|
+
options?: never;
|
|
1522
|
+
head?: never;
|
|
1523
|
+
patch?: never;
|
|
1524
|
+
trace?: never;
|
|
1525
|
+
};
|
|
1526
|
+
"/.well-known/zarel-trust-keys.json": {
|
|
1527
|
+
parameters: {
|
|
1528
|
+
query?: never;
|
|
1529
|
+
header?: never;
|
|
1530
|
+
path?: never;
|
|
1531
|
+
cookie?: never;
|
|
1532
|
+
};
|
|
1533
|
+
/**
|
|
1534
|
+
* Public Ed25519 trust-keys manifest (ADR-0090)
|
|
1535
|
+
* @description Public, unauthenticated endpoint listing every bundle-signing
|
|
1536
|
+
* public key (current + archived) keyed by `kid`. Standalone
|
|
1537
|
+
* verifiers (`zarel verify <bundle>`) resolve the bundle's `kid` →
|
|
1538
|
+
* public key via this file with no online runtime access.
|
|
1539
|
+
*
|
|
1540
|
+
* Rotation is by append: new entry with new `kid`, previous entry's
|
|
1541
|
+
* `valid_until` set to rotation timestamp. Archived entries are
|
|
1542
|
+
* never deleted so older bundles continue to verify.
|
|
1543
|
+
*/
|
|
1544
|
+
get: operations["getTrustKeysManifest"];
|
|
1545
|
+
put?: never;
|
|
1546
|
+
post?: never;
|
|
1547
|
+
delete?: never;
|
|
1548
|
+
options?: never;
|
|
1549
|
+
head?: never;
|
|
1550
|
+
patch?: never;
|
|
1551
|
+
trace?: never;
|
|
1552
|
+
};
|
|
1553
|
+
"/runtime/imports/snapshot": {
|
|
1554
|
+
parameters: {
|
|
1555
|
+
query?: never;
|
|
1556
|
+
header?: never;
|
|
1557
|
+
path?: never;
|
|
1558
|
+
cookie?: never;
|
|
1559
|
+
};
|
|
1560
|
+
get?: never;
|
|
1561
|
+
put?: never;
|
|
1562
|
+
/** Bulk-import tenant data from a structured payload */
|
|
1563
|
+
post: operations["runtimeImportsSnapshot"];
|
|
1564
|
+
delete?: never;
|
|
1565
|
+
options?: never;
|
|
1566
|
+
head?: never;
|
|
1567
|
+
patch?: never;
|
|
1568
|
+
trace?: never;
|
|
1569
|
+
};
|
|
1570
|
+
"/runtime/records/{entity_name}/bulk": {
|
|
1571
|
+
parameters: {
|
|
1572
|
+
query?: never;
|
|
1573
|
+
header?: never;
|
|
1574
|
+
path: {
|
|
1575
|
+
entity_name: components["parameters"]["EntityNamePath"];
|
|
1576
|
+
};
|
|
1577
|
+
cookie?: never;
|
|
1578
|
+
};
|
|
1579
|
+
get?: never;
|
|
1580
|
+
put?: never;
|
|
1581
|
+
/** Bulk-create records for an entity */
|
|
1582
|
+
post: operations["bulkImportRuntimeRecords"];
|
|
1583
|
+
delete?: never;
|
|
1584
|
+
options?: never;
|
|
1585
|
+
head?: never;
|
|
1586
|
+
patch?: never;
|
|
1587
|
+
trace?: never;
|
|
1588
|
+
};
|
|
1589
|
+
"/runtime/receipts": {
|
|
1590
|
+
parameters: {
|
|
1591
|
+
query?: never;
|
|
1592
|
+
header?: never;
|
|
1593
|
+
path?: never;
|
|
1594
|
+
cookie?: never;
|
|
1595
|
+
};
|
|
1596
|
+
/**
|
|
1597
|
+
* List the authenticated end-user's own governance receipts (Desk Spec 3)
|
|
1598
|
+
* @description Lists the CALLER'S OWN governance receipts — normalized over the three
|
|
1599
|
+
* audit signals: topic refusals (ADR-0107), binding violations (ADR-0106
|
|
1600
|
+
* A1), and validation violations (ADR-0111). Each receipt is a discriminated
|
|
1601
|
+
* union by `signal` carrying a composite id (`<signal>:<uuid>`), the request
|
|
1602
|
+
* correlation `trace_id`, a non-reversible `proof` (hash + masked value +
|
|
1603
|
+
* contract version, per signal), and a per-signal `detail`. NEVER the raw
|
|
1604
|
+
* value (it is never stored) and NEVER `tenant_name`.
|
|
1605
|
+
*
|
|
1606
|
+
* ALWAYS scoped server-side to `created_by = the token actor` — never a
|
|
1607
|
+
* client parameter. Unlike the operator `/runtime/audit/{log}` (tenant-wide,
|
|
1608
|
+
* `view_traces`-gated), this surface is the caller's own data and requires
|
|
1609
|
+
* NO `view_traces`: any authenticated tenant end-user may read their own
|
|
1610
|
+
* receipts. Newest-first across all signals, keyset cursor-paginated.
|
|
1611
|
+
*/
|
|
1612
|
+
get: operations["listReceipts"];
|
|
1613
|
+
put?: never;
|
|
1614
|
+
post?: never;
|
|
1615
|
+
delete?: never;
|
|
1616
|
+
options?: never;
|
|
1617
|
+
head?: never;
|
|
1618
|
+
patch?: never;
|
|
1619
|
+
trace?: never;
|
|
1620
|
+
};
|
|
1621
|
+
}
|
|
1622
|
+
export type webhooks = Record<string, never>;
|
|
1623
|
+
export interface components {
|
|
1624
|
+
schemas: {
|
|
1625
|
+
/**
|
|
1626
|
+
* @description One blocked field-binding parameter-injection attempt (ADR-0106 A1).
|
|
1627
|
+
* Privacy-preserving: only the SHA-256 hash + PII-mask of the offending
|
|
1628
|
+
* value are present — never the raw value.
|
|
1629
|
+
*/
|
|
1630
|
+
BindingViolationAuditRow: {
|
|
1631
|
+
/** Format: uuid */
|
|
1632
|
+
id: string;
|
|
1633
|
+
entity: string;
|
|
1634
|
+
field: string;
|
|
1635
|
+
/** @enum {string} */
|
|
1636
|
+
binding_mode: "bind" | "assert" | "immutable";
|
|
1637
|
+
reason: string;
|
|
1638
|
+
input_sha256: string;
|
|
1639
|
+
input_masked: string;
|
|
1640
|
+
path_context: string | null;
|
|
1641
|
+
trace_id: string;
|
|
1642
|
+
created_by: string;
|
|
1643
|
+
/** Format: date-time */
|
|
1644
|
+
created_at: string;
|
|
1645
|
+
};
|
|
1646
|
+
/**
|
|
1647
|
+
* @description One blocked regulatory-boundary hard refusal (ADR-0107).
|
|
1648
|
+
* Privacy-preserving: only the SHA-256 hash + PII-mask of the input are
|
|
1649
|
+
* present — never the raw input.
|
|
1650
|
+
*/
|
|
1651
|
+
TopicRefusalAuditRow: {
|
|
1652
|
+
/** Format: uuid */
|
|
1653
|
+
id: string;
|
|
1654
|
+
channel_name: string | null;
|
|
1655
|
+
verdict: string;
|
|
1656
|
+
category: string;
|
|
1657
|
+
/** @enum {string} */
|
|
1658
|
+
reason: "matched" | "no_verdict" | "unscored";
|
|
1659
|
+
confidence: number | null;
|
|
1660
|
+
strategy: string | null;
|
|
1661
|
+
fallback_used: boolean;
|
|
1662
|
+
contract_version: number;
|
|
1663
|
+
input_sha256: string;
|
|
1664
|
+
input_masked: string;
|
|
1665
|
+
latency_ms: number | null;
|
|
1666
|
+
trace_id: string;
|
|
1667
|
+
created_by: string;
|
|
1668
|
+
/** Format: date-time */
|
|
1669
|
+
created_at: string;
|
|
1670
|
+
};
|
|
1671
|
+
/**
|
|
1672
|
+
* @description The canonical response envelope. `data` holds the payload (shape
|
|
1673
|
+
* depends on the operation — consult the DDL + `schema.json` for the
|
|
1674
|
+
* exact per-resource shape) and `message` is an optional human
|
|
1675
|
+
* summary.
|
|
1676
|
+
*/
|
|
1677
|
+
SuccessEnvelope: {
|
|
1678
|
+
success: boolean;
|
|
1679
|
+
data?: unknown;
|
|
1680
|
+
message?: string;
|
|
1681
|
+
};
|
|
1682
|
+
ErrorResponse: {
|
|
1683
|
+
error: {
|
|
1684
|
+
/** @enum {string} */
|
|
1685
|
+
type: "invalid_request" | "authentication_error" | "authorization_error" | "not_found" | "conflict" | "rate_limit_exceeded" | "internal_error" | "precondition_failed" | "not_implemented" | "payload_too_large";
|
|
1686
|
+
code: string;
|
|
1687
|
+
message: string;
|
|
1688
|
+
request_id?: string;
|
|
1689
|
+
};
|
|
1690
|
+
};
|
|
1691
|
+
/**
|
|
1692
|
+
* @description Tenant-class JWT payload. Spec-019 FR-A06 removed the `roles` claim;
|
|
1693
|
+
* authorization is DB-resolved fresh per request via
|
|
1694
|
+
* `permissionService.getUserRoles`, never derived from JWT claims.
|
|
1695
|
+
* See `runtime/packages/runtime-api/src/domain/auth/credential-claims.ts`
|
|
1696
|
+
* for the canonical schema.
|
|
1697
|
+
*/
|
|
1698
|
+
JwtPayload: {
|
|
1699
|
+
sub: string;
|
|
1700
|
+
tenant_name: string;
|
|
1701
|
+
user_name: string;
|
|
1702
|
+
iat: number;
|
|
1703
|
+
exp: number;
|
|
1704
|
+
jti: string;
|
|
1705
|
+
/** @enum {string} */
|
|
1706
|
+
token_class?: "tenant";
|
|
1707
|
+
/** @enum {string} */
|
|
1708
|
+
iss?: "platform-api";
|
|
1709
|
+
/** @enum {string} */
|
|
1710
|
+
aud?: "runtime-api";
|
|
1711
|
+
};
|
|
1712
|
+
LlmCredentialMetadata: {
|
|
1713
|
+
/** @description LLM service name (FK into `llm.services[]`). */
|
|
1714
|
+
service_name: string;
|
|
1715
|
+
/**
|
|
1716
|
+
* @description "••••" + last 4 chars of the fingerprint. The plaintext key is NEVER returned (FR-I04).
|
|
1717
|
+
* @example ••••WXYZ
|
|
1718
|
+
*/
|
|
1719
|
+
api_key_masked: string;
|
|
1720
|
+
/** @description Whether a base_url override is configured for this credential. */
|
|
1721
|
+
has_base_url: boolean;
|
|
1722
|
+
created_by: string;
|
|
1723
|
+
updated_by: string;
|
|
1724
|
+
/** Format: date-time */
|
|
1725
|
+
created_at: string;
|
|
1726
|
+
/** Format: date-time */
|
|
1727
|
+
updated_at: string;
|
|
1728
|
+
};
|
|
1729
|
+
EmbeddingCredentialMetadata: {
|
|
1730
|
+
tenant_name: string;
|
|
1731
|
+
/**
|
|
1732
|
+
* @description The declared `embeddings.services[].name` this credential keys to
|
|
1733
|
+
* (FR-023). Deliberately NOT a provider enum: the credential keys to a
|
|
1734
|
+
* declaration, and reporting the provider here was the response half of
|
|
1735
|
+
* the conflation that made the write unstorable. The provider is a
|
|
1736
|
+
* property of the declaration, readable from the embeddings catalog.
|
|
1737
|
+
*/
|
|
1738
|
+
service_name: string;
|
|
1739
|
+
/**
|
|
1740
|
+
* @description "••••" + the credential fingerprint. The secret is NEVER returned.
|
|
1741
|
+
* @example ••••WXYZ
|
|
1742
|
+
*/
|
|
1743
|
+
credential_masked: string;
|
|
1744
|
+
created_by: string;
|
|
1745
|
+
updated_by: string;
|
|
1746
|
+
/** Format: date-time */
|
|
1747
|
+
created_at: string;
|
|
1748
|
+
/** Format: date-time */
|
|
1749
|
+
updated_at: string;
|
|
1750
|
+
};
|
|
1751
|
+
LlmService: {
|
|
1752
|
+
/** @description Stable id (slug). Unique per tenant. */
|
|
1753
|
+
name: string;
|
|
1754
|
+
/** @enum {string} */
|
|
1755
|
+
provider: "anthropic" | "bedrock" | "gemini" | "openai";
|
|
1756
|
+
/** @description Provider-specific model id (e.g., `gemini-2.0-flash`). */
|
|
1757
|
+
model: string;
|
|
1758
|
+
/** @description Lower wins. Tie-breaker is YAML declaration order (`position` ASC). */
|
|
1759
|
+
priority: number;
|
|
1760
|
+
/** @description YAML declaration index. Used as priority tie-breaker. */
|
|
1761
|
+
position: number;
|
|
1762
|
+
/** @description Per-service override; absent when null (FR-A06). */
|
|
1763
|
+
temperature?: number;
|
|
1764
|
+
/** @description Per-service override; absent when null (FR-A06). */
|
|
1765
|
+
max_tokens?: number;
|
|
1766
|
+
/** @description Per-service override of the intent-confidence floor; absent when null (FR-A06). Resolution order is flow → this → the tenant's `llm.confidence_threshold` → the single named code default. */
|
|
1767
|
+
confidence_threshold?: number;
|
|
1768
|
+
};
|
|
1769
|
+
UserVisibleAction: {
|
|
1770
|
+
/** @enum {string} */
|
|
1771
|
+
action: "create" | "read" | "update" | "delete" | "list" | "import" | "export";
|
|
1772
|
+
owned_only: boolean;
|
|
1773
|
+
};
|
|
1774
|
+
UserVisibleEntityTool: {
|
|
1775
|
+
entity_name: string;
|
|
1776
|
+
entity_label: string;
|
|
1777
|
+
description?: string;
|
|
1778
|
+
actions: components["schemas"]["UserVisibleAction"][];
|
|
1779
|
+
/** @description FieldToolDefinition shape; see contract tool-catalog types. */
|
|
1780
|
+
fields: Record<string, never>[];
|
|
1781
|
+
/**
|
|
1782
|
+
* @description MCP tool names exposed to this user for this entity. Includes
|
|
1783
|
+
* entity-CRUD tools (list_*, create_*, get_*, update_*, delete_*)
|
|
1784
|
+
* and, for every field of the entity whose contract declares a
|
|
1785
|
+
* non-empty transitions[] block and for which the user's roles
|
|
1786
|
+
* intersect R(entity, field), the dynamic state-machine trio:
|
|
1787
|
+
* - request_{entity}_{field}_transition
|
|
1788
|
+
* - resolve_{entity}_{field}_transition_request
|
|
1789
|
+
* - list_{entity}_{field}_pending_transition_requests
|
|
1790
|
+
* See ADR-0081 for the generation rules; structured per-trio
|
|
1791
|
+
* metadata lives in UserToolCatalog.transitions.
|
|
1792
|
+
*/
|
|
1793
|
+
tool_names: string[];
|
|
1794
|
+
};
|
|
1795
|
+
TransitionEdge: {
|
|
1796
|
+
from: string;
|
|
1797
|
+
to: string;
|
|
1798
|
+
/**
|
|
1799
|
+
* @description Spec 015 / M4. When true, the trigger UI MUST require a reason
|
|
1800
|
+
* textarea before dispatch. Omitted when false/absent in YAML.
|
|
1801
|
+
*/
|
|
1802
|
+
requires_reason?: boolean;
|
|
1803
|
+
};
|
|
1804
|
+
UserVisibleTransitionTool: {
|
|
1805
|
+
/** @description Entity whose field carries the state machine. */
|
|
1806
|
+
entity_name: string;
|
|
1807
|
+
/** @description Field declaring the transitions[] block. */
|
|
1808
|
+
field_name: string;
|
|
1809
|
+
/** @example request_limit_requests_status_transition */
|
|
1810
|
+
request_tool_name: string;
|
|
1811
|
+
/** @example resolve_limit_requests_status_transition_request */
|
|
1812
|
+
resolve_tool_name: string;
|
|
1813
|
+
/** @example list_limit_requests_status_pending_transition_requests */
|
|
1814
|
+
list_pending_tool_name: string;
|
|
1815
|
+
/**
|
|
1816
|
+
* @description Distinct `to` states declared reachable across all transitions of
|
|
1817
|
+
* the field, in declaration order. The LLM sees this set at schema
|
|
1818
|
+
* time; the dispatch service enforces the (from, to) legality per
|
|
1819
|
+
* record.
|
|
1820
|
+
*/
|
|
1821
|
+
target_states: string[];
|
|
1822
|
+
/**
|
|
1823
|
+
* @description Per-edge projection (spec 015 / M4). Parallel to `target_states`
|
|
1824
|
+
* and carries `requires_reason` so trigger UIs can mark the reason
|
|
1825
|
+
* textarea required for the matching (from, to) edge. Order mirrors
|
|
1826
|
+
* YAML declaration; not deduplicated.
|
|
1827
|
+
*/
|
|
1828
|
+
transitions: components["schemas"]["TransitionEdge"][];
|
|
1829
|
+
/** @description Optional display label for the field; used by the prompt builder. */
|
|
1830
|
+
field_label?: string;
|
|
1831
|
+
/** @description Optional description of the field; used by the prompt builder. */
|
|
1832
|
+
field_description?: string;
|
|
1833
|
+
/**
|
|
1834
|
+
* @description Forward-compatibility hook for a future introspect capability. V1
|
|
1835
|
+
* always emits `false`. No enforcement is attached to this field in
|
|
1836
|
+
* V1.
|
|
1837
|
+
*/
|
|
1838
|
+
inspect: boolean;
|
|
1839
|
+
};
|
|
1840
|
+
/**
|
|
1841
|
+
* @description Spec 016 / M5 / ADR-0085 amendment. Per-user projection of a single
|
|
1842
|
+
* YAML-declared `action` the caller is authorized to dispatch.
|
|
1843
|
+
*/
|
|
1844
|
+
UserVisibleActionTool: {
|
|
1845
|
+
/** @description Action name from YAML; unique within tenant. */
|
|
1846
|
+
name: string;
|
|
1847
|
+
entity: string;
|
|
1848
|
+
/** @enum {string} */
|
|
1849
|
+
verb: "create" | "read" | "update" | "delete" | "list";
|
|
1850
|
+
/** @description From YAML `action.description`. Optional. */
|
|
1851
|
+
description?: string;
|
|
1852
|
+
/** @description Dispatcher-recognised intent string — `action.<name>` for native, `external.<ns>.<tool>` for external (ADR-0076). */
|
|
1853
|
+
intent_type: string;
|
|
1854
|
+
/** @enum {string} */
|
|
1855
|
+
provenance: "native" | "external";
|
|
1856
|
+
};
|
|
1857
|
+
/**
|
|
1858
|
+
* @description Spec-042 — per-tenant role declaration. Read-only metadata always
|
|
1859
|
+
* projected for every caller; editing is gated separately by the
|
|
1860
|
+
* `roles` contract-section policy (W3: surfaced via `admin_sections`).
|
|
1861
|
+
*/
|
|
1862
|
+
UserVisibleRole: {
|
|
1863
|
+
name: string;
|
|
1864
|
+
label?: string;
|
|
1865
|
+
description?: string;
|
|
1866
|
+
};
|
|
1867
|
+
/**
|
|
1868
|
+
* @description Spec-042 — per-tenant flow declaration projected for users with
|
|
1869
|
+
* `inspect` policy on the flow (open-by-default per ADR-0065).
|
|
1870
|
+
*/
|
|
1871
|
+
UserVisibleFlow: {
|
|
1872
|
+
name: string;
|
|
1873
|
+
description?: string;
|
|
1874
|
+
};
|
|
1875
|
+
/**
|
|
1876
|
+
* @description Spec-042 — per-tenant skill declaration projected for users whose
|
|
1877
|
+
* role set satisfies the skill's YAML `constraints[]`.
|
|
1878
|
+
*/
|
|
1879
|
+
UserVisibleSkill: {
|
|
1880
|
+
name: string;
|
|
1881
|
+
label?: string;
|
|
1882
|
+
description?: string;
|
|
1883
|
+
};
|
|
1884
|
+
/**
|
|
1885
|
+
* @description W3 — a contract section name. `UserToolCatalog.admin_sections` is the
|
|
1886
|
+
* subset the caller's roles can `update` (drives admin mutation pages).
|
|
1887
|
+
* @enum {string}
|
|
1888
|
+
*/
|
|
1889
|
+
ContractSectionName: "metadata" | "entities" | "roles" | "skills" | "actions" | "schemas" | "capabilities" | "flows" | "constraints" | "events" | "llm" | "embeddings" | "treatment" | "channels" | "channels/credentials" | "mcp_servers" | "quotas" | "timezone" | "process_model" | "authorization";
|
|
1890
|
+
UserToolCatalog: {
|
|
1891
|
+
tenant_name: string;
|
|
1892
|
+
user_name: string;
|
|
1893
|
+
user_roles: string[];
|
|
1894
|
+
entities: components["schemas"]["UserVisibleEntityTool"][];
|
|
1895
|
+
/**
|
|
1896
|
+
* @description Structured metadata for every state-machine transition trio
|
|
1897
|
+
* visible to this user. One entry per (entity, field) with
|
|
1898
|
+
* non-empty transitions[] for which user_roles ∩ R(entity, field)
|
|
1899
|
+
* ≠ ∅. See ADR-0081.
|
|
1900
|
+
*/
|
|
1901
|
+
transitions: components["schemas"]["UserVisibleTransitionTool"][];
|
|
1902
|
+
/**
|
|
1903
|
+
* @description Spec 016 / M5 / ADR-0085 amendment. Per-user projection of
|
|
1904
|
+
* YAML-declared `actions[]` the caller is authorized to dispatch.
|
|
1905
|
+
* One entry per action whose `(entity, verb)` resolves to
|
|
1906
|
+
* `kind: 'action'` under the action-surface-resolver decision
|
|
1907
|
+
* logic for the caller's capabilities. Hidden/entity-fallback
|
|
1908
|
+
* decisions are NOT projected. Optional — omitted entirely when
|
|
1909
|
+
* zero entries.
|
|
1910
|
+
*/
|
|
1911
|
+
actions?: components["schemas"]["UserVisibleActionTool"][];
|
|
1912
|
+
/**
|
|
1913
|
+
* @description Spec-042 — declared roles in the tenant contract (read-only
|
|
1914
|
+
* metadata always emitted, even when empty).
|
|
1915
|
+
*/
|
|
1916
|
+
roles: components["schemas"]["UserVisibleRole"][];
|
|
1917
|
+
/**
|
|
1918
|
+
* @description Spec-042 — flows the user can `inspect` (ADR-0065
|
|
1919
|
+
* open-by-default).
|
|
1920
|
+
*/
|
|
1921
|
+
flows: components["schemas"]["UserVisibleFlow"][];
|
|
1922
|
+
/**
|
|
1923
|
+
* @description Spec-042 — skills whose YAML `constraints[]` evaluate true for
|
|
1924
|
+
* the user.
|
|
1925
|
+
*/
|
|
1926
|
+
skills: components["schemas"]["UserVisibleSkill"][];
|
|
1927
|
+
/**
|
|
1928
|
+
* @description W3 (ADR-0102 §3 closure) — contract sections the user can `update`,
|
|
1929
|
+
* derived from `authorization.spec.{section}` policies. The dashboard
|
|
1930
|
+
* derives admin mutation pages (roles/skills/flows/authorization+
|
|
1931
|
+
* policies/state-machines/settings) and the admin-tier pages
|
|
1932
|
+
* (imports, api-keys) from this. Sorted; may be empty.
|
|
1933
|
+
*/
|
|
1934
|
+
admin_sections: components["schemas"]["ContractSectionName"][];
|
|
1935
|
+
};
|
|
1936
|
+
RoleAssignment: {
|
|
1937
|
+
user_name: string;
|
|
1938
|
+
role_name: string;
|
|
1939
|
+
} & {
|
|
1940
|
+
[key: string]: unknown;
|
|
1941
|
+
};
|
|
1942
|
+
/**
|
|
1943
|
+
* @description Opaque 64-hex digest of a party's address within its channel's address
|
|
1944
|
+
* namespace (QI-001). NOT an address — the runtime never names a phone
|
|
1945
|
+
* number, an email or a handle.
|
|
1946
|
+
*/
|
|
1947
|
+
ChannelPartyRef: string;
|
|
1948
|
+
/** @description Content digest — metadata-only handle, never the body (R12). */
|
|
1949
|
+
ChannelContentRef: string;
|
|
1950
|
+
/** @description Tenant-declared channel name (the `channels:` contract section). */
|
|
1951
|
+
ChannelName: string;
|
|
1952
|
+
/** @enum {string} */
|
|
1953
|
+
ChannelDeliveryMode: "freeform" | "template" | "deferred";
|
|
1954
|
+
/**
|
|
1955
|
+
* @description Who attests the send outcome — the runtime itself, or the channel
|
|
1956
|
+
* provider (the transport descriptor declares which is admissible).
|
|
1957
|
+
* @enum {string}
|
|
1958
|
+
*/
|
|
1959
|
+
ChannelAttestedBy: "runtime" | "channel_provider";
|
|
1960
|
+
/**
|
|
1961
|
+
* @description Strict by construction: `party_ref` is the ONLY accepted key. The
|
|
1962
|
+
* strictness IS the QI-003 claim rejection — any role/privilege key
|
|
1963
|
+
* alongside it fails validation (422 `MINT_CLAIM_REJECTED`) before the
|
|
1964
|
+
* mint. The channel comes from the credential, never from here.
|
|
1965
|
+
*/
|
|
1966
|
+
ChannelMintRequest: {
|
|
1967
|
+
party_ref: components["schemas"]["ChannelPartyRef"];
|
|
1968
|
+
};
|
|
1969
|
+
ChannelPartyToken: {
|
|
1970
|
+
/**
|
|
1971
|
+
* @description Short-TTL anonymous party token (`token_class: party`) bound to
|
|
1972
|
+
* `(channel, party_ref)`. Carries no role and grants no authority.
|
|
1973
|
+
*/
|
|
1974
|
+
token: string;
|
|
1975
|
+
/** Format: date-time */
|
|
1976
|
+
expires_at: string;
|
|
1977
|
+
};
|
|
1978
|
+
ChannelDirectiveTemplateRef: {
|
|
1979
|
+
id: string;
|
|
1980
|
+
version: number;
|
|
1981
|
+
};
|
|
1982
|
+
ChannelDirectiveCorrelation: {
|
|
1983
|
+
session_key: string;
|
|
1984
|
+
turn_seq: number;
|
|
1985
|
+
};
|
|
1986
|
+
/**
|
|
1987
|
+
* @description The claimed directive plus its resolved content. `fetch = claim`, so
|
|
1988
|
+
* receiving this body means the lease is now held by the caller's `jti`.
|
|
1989
|
+
*/
|
|
1990
|
+
ChannelDirectiveContent: {
|
|
1991
|
+
/** Format: uuid */
|
|
1992
|
+
id: string;
|
|
1993
|
+
channel_name: components["schemas"]["ChannelName"];
|
|
1994
|
+
recipient_ref: components["schemas"]["ChannelPartyRef"];
|
|
1995
|
+
content_ref: components["schemas"]["ChannelContentRef"];
|
|
1996
|
+
delivery_mode: components["schemas"]["ChannelDeliveryMode"];
|
|
1997
|
+
template?: components["schemas"]["ChannelDirectiveTemplateRef"];
|
|
1998
|
+
correlation: components["schemas"]["ChannelDirectiveCorrelation"];
|
|
1999
|
+
/** Format: date-time */
|
|
2000
|
+
deadline_at?: string;
|
|
2001
|
+
/**
|
|
2002
|
+
* @description The resolved turn body, returned ONLY here — the directive itself
|
|
2003
|
+
* (and every audit row) carries `content_ref` and never the content
|
|
2004
|
+
* (R12 / QI-004). Resolved by the directive's turn correlation as an
|
|
2005
|
+
* authorized, audited read.
|
|
2006
|
+
*/
|
|
2007
|
+
content: unknown;
|
|
2008
|
+
};
|
|
2009
|
+
ChannelSendResult: {
|
|
2010
|
+
/** @enum {string} */
|
|
2011
|
+
status: "accepted" | "failed" | "deferred";
|
|
2012
|
+
/**
|
|
2013
|
+
* @description Provider-supplied opaque id. MUST already be hashed by the adapter
|
|
2014
|
+
* (FR-E03) — an E.164- or email-shaped value is refused (QI-001).
|
|
2015
|
+
*/
|
|
2016
|
+
provider_message_id?: string;
|
|
2017
|
+
attested_by: components["schemas"]["ChannelAttestedBy"];
|
|
2018
|
+
};
|
|
2019
|
+
ChannelSendResultAck: {
|
|
2020
|
+
/**
|
|
2021
|
+
* @description The directive's resulting lifecycle status.
|
|
2022
|
+
* @enum {string}
|
|
2023
|
+
*/
|
|
2024
|
+
status: "pending" | "claimed" | "deferred" | "sent" | "failed" | "dead" | "expired";
|
|
2025
|
+
/**
|
|
2026
|
+
* @description The reported send outcome; `null` until a terminal report.
|
|
2027
|
+
* @enum {string|null}
|
|
2028
|
+
*/
|
|
2029
|
+
send_status: "accepted" | "failed" | "deferred" | null;
|
|
2030
|
+
};
|
|
2031
|
+
RuntimeSseConversationTurnCreatedPayload: {
|
|
2032
|
+
session_key: string;
|
|
2033
|
+
turn_number: number;
|
|
2034
|
+
role: string;
|
|
2035
|
+
intent_type?: string;
|
|
2036
|
+
flow?: {
|
|
2037
|
+
[key: string]: unknown;
|
|
2038
|
+
};
|
|
2039
|
+
};
|
|
2040
|
+
RuntimeSseConversationTurnCreatedData: {
|
|
2041
|
+
entity: string;
|
|
2042
|
+
record_id: string;
|
|
2043
|
+
timestamp: string;
|
|
2044
|
+
payload: components["schemas"]["RuntimeSseConversationTurnCreatedPayload"];
|
|
2045
|
+
};
|
|
2046
|
+
};
|
|
2047
|
+
responses: {
|
|
2048
|
+
/** @description Standard success envelope */
|
|
2049
|
+
OkEnvelope: {
|
|
2050
|
+
headers: {
|
|
2051
|
+
[name: string]: unknown;
|
|
2052
|
+
};
|
|
2053
|
+
content: {
|
|
2054
|
+
"application/json": components["schemas"]["SuccessEnvelope"];
|
|
2055
|
+
};
|
|
2056
|
+
};
|
|
2057
|
+
/** @description Invalid request */
|
|
2058
|
+
BadRequest: {
|
|
2059
|
+
headers: {
|
|
2060
|
+
[name: string]: unknown;
|
|
2061
|
+
};
|
|
2062
|
+
content: {
|
|
2063
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2064
|
+
};
|
|
2065
|
+
};
|
|
2066
|
+
/** @description Missing or invalid authentication token */
|
|
2067
|
+
Unauthorized: {
|
|
2068
|
+
headers: {
|
|
2069
|
+
[name: string]: unknown;
|
|
2070
|
+
};
|
|
2071
|
+
content: {
|
|
2072
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2073
|
+
};
|
|
2074
|
+
};
|
|
2075
|
+
/** @description Insufficient permissions */
|
|
2076
|
+
Forbidden: {
|
|
2077
|
+
headers: {
|
|
2078
|
+
[name: string]: unknown;
|
|
2079
|
+
};
|
|
2080
|
+
content: {
|
|
2081
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2082
|
+
};
|
|
2083
|
+
};
|
|
2084
|
+
/** @description Resource not found */
|
|
2085
|
+
NotFound: {
|
|
2086
|
+
headers: {
|
|
2087
|
+
[name: string]: unknown;
|
|
2088
|
+
};
|
|
2089
|
+
content: {
|
|
2090
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2091
|
+
};
|
|
2092
|
+
};
|
|
2093
|
+
/** @description Resource state conflict */
|
|
2094
|
+
Conflict: {
|
|
2095
|
+
headers: {
|
|
2096
|
+
[name: string]: unknown;
|
|
2097
|
+
};
|
|
2098
|
+
content: {
|
|
2099
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2100
|
+
};
|
|
2101
|
+
};
|
|
2102
|
+
/**
|
|
2103
|
+
* @description ADR-0127 US2 — the verb is governed by ≥1 named action and must be
|
|
2104
|
+
* dispatched via `POST /runtime/actions/{name}`; the bare records surface
|
|
2105
|
+
* rejects it. `error.code='action_required'`; `error.candidate_actions[]`
|
|
2106
|
+
* lists the eligible action names.
|
|
2107
|
+
*/
|
|
2108
|
+
ActionRequired: {
|
|
2109
|
+
headers: {
|
|
2110
|
+
[name: string]: unknown;
|
|
2111
|
+
};
|
|
2112
|
+
content: {
|
|
2113
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
2114
|
+
error?: {
|
|
2115
|
+
candidate_actions?: string[];
|
|
2116
|
+
};
|
|
2117
|
+
};
|
|
2118
|
+
};
|
|
2119
|
+
};
|
|
2120
|
+
/**
|
|
2121
|
+
* @description ADR-0127 — the write floor blocked the mutation: `error.code` is
|
|
2122
|
+
* `phase_not_allowed` (action not allowed in the record's current process
|
|
2123
|
+
* phase) or `precondition_failed` (a declared precondition evaluated false
|
|
2124
|
+
* against the real record set).
|
|
2125
|
+
*/
|
|
2126
|
+
GovernanceUnprocessable: {
|
|
2127
|
+
headers: {
|
|
2128
|
+
[name: string]: unknown;
|
|
2129
|
+
};
|
|
2130
|
+
content: {
|
|
2131
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2132
|
+
};
|
|
2133
|
+
};
|
|
2134
|
+
/**
|
|
2135
|
+
* @description ADR-0127 US3 — a `confirm` guard (an entity check or a transition edge)
|
|
2136
|
+
* paused this write pending human consent; the write is not performed.
|
|
2137
|
+
* Re-submit the IDENTICAL write with the returned token in the
|
|
2138
|
+
* `X-Zarel-Confirmation-Token` header before `expires_at`.
|
|
2139
|
+
*/
|
|
2140
|
+
ConfirmationRequired: {
|
|
2141
|
+
headers: {
|
|
2142
|
+
[name: string]: unknown;
|
|
2143
|
+
};
|
|
2144
|
+
content: {
|
|
2145
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
2146
|
+
error?: {
|
|
2147
|
+
confirmation?: {
|
|
2148
|
+
/**
|
|
2149
|
+
* @description Every `confirm` guard that fired on this write. One
|
|
2150
|
+
* write can fire several at once, and the token below
|
|
2151
|
+
* is bound to the WHOLE set — so a client must render
|
|
2152
|
+
* every prompt before retrying. Showing one of them
|
|
2153
|
+
* would collect consent for conditions the operator
|
|
2154
|
+
* never saw.
|
|
2155
|
+
*/
|
|
2156
|
+
guards: {
|
|
2157
|
+
/**
|
|
2158
|
+
* @description The guard's own name — an entity check's `name`,
|
|
2159
|
+
* or `<field>__<from>__<to>` for a state-machine
|
|
2160
|
+
* edge. Never a governed action name.
|
|
2161
|
+
*/
|
|
2162
|
+
name: string;
|
|
2163
|
+
prompt: string;
|
|
2164
|
+
}[];
|
|
2165
|
+
/** @description The `zct1.…` confirmation token to echo in the retry header. */
|
|
2166
|
+
token?: string;
|
|
2167
|
+
/** Format: date-time */
|
|
2168
|
+
expires_at: string;
|
|
2169
|
+
};
|
|
2170
|
+
};
|
|
2171
|
+
};
|
|
2172
|
+
};
|
|
2173
|
+
};
|
|
2174
|
+
/** @description Unexpected server error */
|
|
2175
|
+
InternalError: {
|
|
2176
|
+
headers: {
|
|
2177
|
+
[name: string]: unknown;
|
|
2178
|
+
};
|
|
2179
|
+
content: {
|
|
2180
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2181
|
+
};
|
|
2182
|
+
};
|
|
2183
|
+
/**
|
|
2184
|
+
* @description The `?locale=` query parameter was supplied with a value not in
|
|
2185
|
+
* the supported set. The body is the standard `ErrorResponse` envelope,
|
|
2186
|
+
* extended with the supported set so clients can pick a valid one.
|
|
2187
|
+
*/
|
|
2188
|
+
UnsupportedLocaleError: {
|
|
2189
|
+
headers: {
|
|
2190
|
+
[name: string]: unknown;
|
|
2191
|
+
};
|
|
2192
|
+
content: {
|
|
2193
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
2194
|
+
error: {
|
|
2195
|
+
/**
|
|
2196
|
+
* @example [
|
|
2197
|
+
* "en",
|
|
2198
|
+
* "es"
|
|
2199
|
+
* ]
|
|
2200
|
+
*/
|
|
2201
|
+
supported: string[];
|
|
2202
|
+
};
|
|
2203
|
+
};
|
|
2204
|
+
};
|
|
2205
|
+
};
|
|
2206
|
+
};
|
|
2207
|
+
parameters: {
|
|
2208
|
+
/** @description Canonical natural-key identifier (ADR-0077 P4) */
|
|
2209
|
+
NamePath: string;
|
|
2210
|
+
EntityNamePath: string;
|
|
2211
|
+
/** @description Egress directive id (ADR-0133 §B.4) */
|
|
2212
|
+
ChannelDirectiveIdPath: string;
|
|
2213
|
+
RequestId: string;
|
|
2214
|
+
/**
|
|
2215
|
+
* @description ADR-0127 US3 — the self-confirmation retry token from a prior `409
|
|
2216
|
+
* confirmation_required` response. Re-submit the IDENTICAL write carrying
|
|
2217
|
+
* this header to proceed. The token is bound to the exact write
|
|
2218
|
+
* (tenant/actor/contract-version/action/entity/verb/record/params) and
|
|
2219
|
+
* expires; it is read only from this header, never the body.
|
|
2220
|
+
*/
|
|
2221
|
+
ConfirmationToken: string;
|
|
2222
|
+
/**
|
|
2223
|
+
* @description Locale for semantic content (labels, descriptions) in the response.
|
|
2224
|
+
*
|
|
2225
|
+
* Resolution order:
|
|
2226
|
+
* 1. This query parameter (if present and supported).
|
|
2227
|
+
* 2. The actor's session-stored preference (JWT claim `preferences.language`).
|
|
2228
|
+
* 3. The canonical locale (`en`).
|
|
2229
|
+
*
|
|
2230
|
+
* Unsupported values produce a 400 response.
|
|
2231
|
+
*/
|
|
2232
|
+
Locale: "en" | "es";
|
|
2233
|
+
};
|
|
2234
|
+
requestBodies: {
|
|
2235
|
+
JsonObject: {
|
|
2236
|
+
content: {
|
|
2237
|
+
"application/json": Record<string, never>;
|
|
2238
|
+
};
|
|
2239
|
+
};
|
|
2240
|
+
};
|
|
2241
|
+
headers: never;
|
|
2242
|
+
pathItems: never;
|
|
2243
|
+
}
|
|
2244
|
+
export type $defs = Record<string, never>;
|
|
2245
|
+
export interface operations {
|
|
2246
|
+
listLlmServices: {
|
|
2247
|
+
parameters: {
|
|
2248
|
+
query: {
|
|
2249
|
+
scope: "runtime" | "contract";
|
|
2250
|
+
/**
|
|
2251
|
+
* @description Locale for semantic content (labels, descriptions) in the response.
|
|
2252
|
+
*
|
|
2253
|
+
* Resolution order:
|
|
2254
|
+
* 1. This query parameter (if present and supported).
|
|
2255
|
+
* 2. The actor's session-stored preference (JWT claim `preferences.language`).
|
|
2256
|
+
* 3. The canonical locale (`en`).
|
|
2257
|
+
*
|
|
2258
|
+
* Unsupported values produce a 400 response.
|
|
2259
|
+
*/
|
|
2260
|
+
locale?: components["parameters"]["Locale"];
|
|
2261
|
+
};
|
|
2262
|
+
header?: never;
|
|
2263
|
+
path?: never;
|
|
2264
|
+
cookie?: never;
|
|
2265
|
+
};
|
|
2266
|
+
requestBody?: never;
|
|
2267
|
+
responses: {
|
|
2268
|
+
200: components["responses"]["OkEnvelope"];
|
|
2269
|
+
400: components["responses"]["UnsupportedLocaleError"];
|
|
2270
|
+
};
|
|
2271
|
+
};
|
|
2272
|
+
getLlmService: {
|
|
2273
|
+
parameters: {
|
|
2274
|
+
query: {
|
|
2275
|
+
scope: "runtime" | "contract";
|
|
2276
|
+
/**
|
|
2277
|
+
* @description Locale for semantic content (labels, descriptions) in the response.
|
|
2278
|
+
*
|
|
2279
|
+
* Resolution order:
|
|
2280
|
+
* 1. This query parameter (if present and supported).
|
|
2281
|
+
* 2. The actor's session-stored preference (JWT claim `preferences.language`).
|
|
2282
|
+
* 3. The canonical locale (`en`).
|
|
2283
|
+
*
|
|
2284
|
+
* Unsupported values produce a 400 response.
|
|
2285
|
+
*/
|
|
2286
|
+
locale?: components["parameters"]["Locale"];
|
|
2287
|
+
};
|
|
2288
|
+
header?: never;
|
|
2289
|
+
path: {
|
|
2290
|
+
name: string;
|
|
2291
|
+
};
|
|
2292
|
+
cookie?: never;
|
|
2293
|
+
};
|
|
2294
|
+
requestBody?: never;
|
|
2295
|
+
responses: {
|
|
2296
|
+
200: components["responses"]["OkEnvelope"];
|
|
2297
|
+
400: components["responses"]["UnsupportedLocaleError"];
|
|
2298
|
+
404: components["responses"]["NotFound"];
|
|
2299
|
+
};
|
|
2300
|
+
};
|
|
2301
|
+
listLlmCredentials: {
|
|
2302
|
+
parameters: {
|
|
2303
|
+
query?: {
|
|
2304
|
+
/**
|
|
2305
|
+
* @description Locale for semantic content (labels, descriptions) in the response.
|
|
2306
|
+
*
|
|
2307
|
+
* Resolution order:
|
|
2308
|
+
* 1. This query parameter (if present and supported).
|
|
2309
|
+
* 2. The actor's session-stored preference (JWT claim `preferences.language`).
|
|
2310
|
+
* 3. The canonical locale (`en`).
|
|
2311
|
+
*
|
|
2312
|
+
* Unsupported values produce a 400 response.
|
|
2313
|
+
*/
|
|
2314
|
+
locale?: components["parameters"]["Locale"];
|
|
2315
|
+
};
|
|
2316
|
+
header?: never;
|
|
2317
|
+
path?: never;
|
|
2318
|
+
cookie?: never;
|
|
2319
|
+
};
|
|
2320
|
+
requestBody?: never;
|
|
2321
|
+
responses: {
|
|
2322
|
+
200: components["responses"]["OkEnvelope"];
|
|
2323
|
+
400: components["responses"]["UnsupportedLocaleError"];
|
|
2324
|
+
};
|
|
2325
|
+
};
|
|
2326
|
+
getLlmCredential: {
|
|
2327
|
+
parameters: {
|
|
2328
|
+
query?: {
|
|
2329
|
+
/**
|
|
2330
|
+
* @description Locale for semantic content (labels, descriptions) in the response.
|
|
2331
|
+
*
|
|
2332
|
+
* Resolution order:
|
|
2333
|
+
* 1. This query parameter (if present and supported).
|
|
2334
|
+
* 2. The actor's session-stored preference (JWT claim `preferences.language`).
|
|
2335
|
+
* 3. The canonical locale (`en`).
|
|
2336
|
+
*
|
|
2337
|
+
* Unsupported values produce a 400 response.
|
|
2338
|
+
*/
|
|
2339
|
+
locale?: components["parameters"]["Locale"];
|
|
2340
|
+
};
|
|
2341
|
+
header?: never;
|
|
2342
|
+
path: {
|
|
2343
|
+
service_name: string;
|
|
2344
|
+
};
|
|
2345
|
+
cookie?: never;
|
|
2346
|
+
};
|
|
2347
|
+
requestBody?: never;
|
|
2348
|
+
responses: {
|
|
2349
|
+
200: components["responses"]["OkEnvelope"];
|
|
2350
|
+
400: components["responses"]["UnsupportedLocaleError"];
|
|
2351
|
+
404: components["responses"]["NotFound"];
|
|
2352
|
+
};
|
|
2353
|
+
};
|
|
2354
|
+
setLlmCredential: {
|
|
2355
|
+
parameters: {
|
|
2356
|
+
query?: never;
|
|
2357
|
+
header?: never;
|
|
2358
|
+
path: {
|
|
2359
|
+
service_name: string;
|
|
2360
|
+
};
|
|
2361
|
+
cookie?: never;
|
|
2362
|
+
};
|
|
2363
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
2364
|
+
responses: {
|
|
2365
|
+
200: components["responses"]["OkEnvelope"];
|
|
2366
|
+
400: components["responses"]["BadRequest"];
|
|
2367
|
+
404: components["responses"]["NotFound"];
|
|
2368
|
+
};
|
|
2369
|
+
};
|
|
2370
|
+
deleteLlmCredential: {
|
|
2371
|
+
parameters: {
|
|
2372
|
+
query?: never;
|
|
2373
|
+
header?: never;
|
|
2374
|
+
path: {
|
|
2375
|
+
service_name: string;
|
|
2376
|
+
};
|
|
2377
|
+
cookie?: never;
|
|
2378
|
+
};
|
|
2379
|
+
requestBody?: never;
|
|
2380
|
+
responses: {
|
|
2381
|
+
/** @description No Content */
|
|
2382
|
+
204: {
|
|
2383
|
+
headers: {
|
|
2384
|
+
[name: string]: unknown;
|
|
2385
|
+
};
|
|
2386
|
+
content?: never;
|
|
2387
|
+
};
|
|
2388
|
+
404: components["responses"]["NotFound"];
|
|
2389
|
+
409: components["responses"]["Conflict"];
|
|
2390
|
+
};
|
|
2391
|
+
};
|
|
2392
|
+
listEmbeddingCredentials: {
|
|
2393
|
+
parameters: {
|
|
2394
|
+
query?: never;
|
|
2395
|
+
header?: never;
|
|
2396
|
+
path?: never;
|
|
2397
|
+
cookie?: never;
|
|
2398
|
+
};
|
|
2399
|
+
requestBody?: never;
|
|
2400
|
+
responses: {
|
|
2401
|
+
200: components["responses"]["OkEnvelope"];
|
|
2402
|
+
};
|
|
2403
|
+
};
|
|
2404
|
+
getEmbeddingCredential: {
|
|
2405
|
+
parameters: {
|
|
2406
|
+
query?: never;
|
|
2407
|
+
header?: never;
|
|
2408
|
+
path: {
|
|
2409
|
+
/**
|
|
2410
|
+
* @description The DECLARED embedding-service name from `embeddings.services[]`
|
|
2411
|
+
* (FR-023) — not the provider. A provider is not an identity: two
|
|
2412
|
+
* services may share one, and the credential keys to a declaration that
|
|
2413
|
+
* exists. The provider is resolved from that declaration server-side.
|
|
2414
|
+
*/
|
|
2415
|
+
service_name: string;
|
|
2416
|
+
};
|
|
2417
|
+
cookie?: never;
|
|
2418
|
+
};
|
|
2419
|
+
requestBody?: never;
|
|
2420
|
+
responses: {
|
|
2421
|
+
200: components["responses"]["OkEnvelope"];
|
|
2422
|
+
404: components["responses"]["NotFound"];
|
|
2423
|
+
};
|
|
2424
|
+
};
|
|
2425
|
+
setEmbeddingCredential: {
|
|
2426
|
+
parameters: {
|
|
2427
|
+
query?: never;
|
|
2428
|
+
header?: never;
|
|
2429
|
+
path: {
|
|
2430
|
+
/**
|
|
2431
|
+
* @description The DECLARED embedding-service name from `embeddings.services[]`
|
|
2432
|
+
* (FR-023) — not the provider. A provider is not an identity: two
|
|
2433
|
+
* services may share one, and the credential keys to a declaration that
|
|
2434
|
+
* exists. The provider is resolved from that declaration server-side.
|
|
2435
|
+
*/
|
|
2436
|
+
service_name: string;
|
|
2437
|
+
};
|
|
2438
|
+
cookie?: never;
|
|
2439
|
+
};
|
|
2440
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
2441
|
+
responses: {
|
|
2442
|
+
200: components["responses"]["OkEnvelope"];
|
|
2443
|
+
400: components["responses"]["BadRequest"];
|
|
2444
|
+
404: components["responses"]["NotFound"];
|
|
2445
|
+
};
|
|
2446
|
+
};
|
|
2447
|
+
deleteEmbeddingCredential: {
|
|
2448
|
+
parameters: {
|
|
2449
|
+
query?: never;
|
|
2450
|
+
header?: never;
|
|
2451
|
+
path: {
|
|
2452
|
+
/**
|
|
2453
|
+
* @description The DECLARED embedding-service name from `embeddings.services[]`
|
|
2454
|
+
* (FR-023) — not the provider. A provider is not an identity: two
|
|
2455
|
+
* services may share one, and the credential keys to a declaration that
|
|
2456
|
+
* exists. The provider is resolved from that declaration server-side.
|
|
2457
|
+
*/
|
|
2458
|
+
service_name: string;
|
|
2459
|
+
};
|
|
2460
|
+
cookie?: never;
|
|
2461
|
+
};
|
|
2462
|
+
requestBody?: never;
|
|
2463
|
+
responses: {
|
|
2464
|
+
/** @description No Content */
|
|
2465
|
+
204: {
|
|
2466
|
+
headers: {
|
|
2467
|
+
[name: string]: unknown;
|
|
2468
|
+
};
|
|
2469
|
+
content?: never;
|
|
2470
|
+
};
|
|
2471
|
+
404: components["responses"]["NotFound"];
|
|
2472
|
+
};
|
|
2473
|
+
};
|
|
2474
|
+
listRuntimeRecords: {
|
|
2475
|
+
parameters: {
|
|
2476
|
+
query?: {
|
|
2477
|
+
limit?: number;
|
|
2478
|
+
offset?: number;
|
|
2479
|
+
sort_by?: string;
|
|
2480
|
+
sort_dir?: "asc" | "desc";
|
|
2481
|
+
};
|
|
2482
|
+
header?: never;
|
|
2483
|
+
path: {
|
|
2484
|
+
entity_name: components["parameters"]["EntityNamePath"];
|
|
2485
|
+
};
|
|
2486
|
+
cookie?: never;
|
|
2487
|
+
};
|
|
2488
|
+
requestBody?: never;
|
|
2489
|
+
responses: {
|
|
2490
|
+
200: components["responses"]["OkEnvelope"];
|
|
2491
|
+
};
|
|
2492
|
+
};
|
|
2493
|
+
createRuntimeRecord: {
|
|
2494
|
+
parameters: {
|
|
2495
|
+
query?: never;
|
|
2496
|
+
header?: {
|
|
2497
|
+
/**
|
|
2498
|
+
* @description ADR-0127 US3 — the self-confirmation retry token from a prior `409
|
|
2499
|
+
* confirmation_required` response. Re-submit the IDENTICAL write carrying
|
|
2500
|
+
* this header to proceed. The token is bound to the exact write
|
|
2501
|
+
* (tenant/actor/contract-version/action/entity/verb/record/params) and
|
|
2502
|
+
* expires; it is read only from this header, never the body.
|
|
2503
|
+
*/
|
|
2504
|
+
"X-Zarel-Confirmation-Token"?: components["parameters"]["ConfirmationToken"];
|
|
2505
|
+
};
|
|
2506
|
+
path: {
|
|
2507
|
+
entity_name: components["parameters"]["EntityNamePath"];
|
|
2508
|
+
};
|
|
2509
|
+
cookie?: never;
|
|
2510
|
+
};
|
|
2511
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
2512
|
+
responses: {
|
|
2513
|
+
201: components["responses"]["OkEnvelope"];
|
|
2514
|
+
400: components["responses"]["ActionRequired"];
|
|
2515
|
+
409: components["responses"]["ConfirmationRequired"];
|
|
2516
|
+
422: components["responses"]["GovernanceUnprocessable"];
|
|
2517
|
+
};
|
|
2518
|
+
};
|
|
2519
|
+
getRuntimeRecord: {
|
|
2520
|
+
parameters: {
|
|
2521
|
+
query?: never;
|
|
2522
|
+
header?: never;
|
|
2523
|
+
path: {
|
|
2524
|
+
entity_name: components["parameters"]["EntityNamePath"];
|
|
2525
|
+
id: string;
|
|
2526
|
+
};
|
|
2527
|
+
cookie?: never;
|
|
2528
|
+
};
|
|
2529
|
+
requestBody?: never;
|
|
2530
|
+
responses: {
|
|
2531
|
+
200: components["responses"]["OkEnvelope"];
|
|
2532
|
+
404: components["responses"]["NotFound"];
|
|
2533
|
+
};
|
|
2534
|
+
};
|
|
2535
|
+
deleteRuntimeRecord: {
|
|
2536
|
+
parameters: {
|
|
2537
|
+
query?: never;
|
|
2538
|
+
header?: {
|
|
2539
|
+
/**
|
|
2540
|
+
* @description ADR-0127 US3 — the self-confirmation retry token from a prior `409
|
|
2541
|
+
* confirmation_required` response. Re-submit the IDENTICAL write carrying
|
|
2542
|
+
* this header to proceed. The token is bound to the exact write
|
|
2543
|
+
* (tenant/actor/contract-version/action/entity/verb/record/params) and
|
|
2544
|
+
* expires; it is read only from this header, never the body.
|
|
2545
|
+
*/
|
|
2546
|
+
"X-Zarel-Confirmation-Token"?: components["parameters"]["ConfirmationToken"];
|
|
2547
|
+
};
|
|
2548
|
+
path: {
|
|
2549
|
+
entity_name: components["parameters"]["EntityNamePath"];
|
|
2550
|
+
id: string;
|
|
2551
|
+
};
|
|
2552
|
+
cookie?: never;
|
|
2553
|
+
};
|
|
2554
|
+
requestBody?: never;
|
|
2555
|
+
responses: {
|
|
2556
|
+
200: components["responses"]["OkEnvelope"];
|
|
2557
|
+
400: components["responses"]["ActionRequired"];
|
|
2558
|
+
409: components["responses"]["ConfirmationRequired"];
|
|
2559
|
+
422: components["responses"]["GovernanceUnprocessable"];
|
|
2560
|
+
};
|
|
2561
|
+
};
|
|
2562
|
+
patchRuntimeRecord: {
|
|
2563
|
+
parameters: {
|
|
2564
|
+
query?: never;
|
|
2565
|
+
header?: {
|
|
2566
|
+
/**
|
|
2567
|
+
* @description ADR-0127 US3 — the self-confirmation retry token from a prior `409
|
|
2568
|
+
* confirmation_required` response. Re-submit the IDENTICAL write carrying
|
|
2569
|
+
* this header to proceed. The token is bound to the exact write
|
|
2570
|
+
* (tenant/actor/contract-version/action/entity/verb/record/params) and
|
|
2571
|
+
* expires; it is read only from this header, never the body.
|
|
2572
|
+
*/
|
|
2573
|
+
"X-Zarel-Confirmation-Token"?: components["parameters"]["ConfirmationToken"];
|
|
2574
|
+
};
|
|
2575
|
+
path: {
|
|
2576
|
+
entity_name: components["parameters"]["EntityNamePath"];
|
|
2577
|
+
id: string;
|
|
2578
|
+
};
|
|
2579
|
+
cookie?: never;
|
|
2580
|
+
};
|
|
2581
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
2582
|
+
responses: {
|
|
2583
|
+
200: components["responses"]["OkEnvelope"];
|
|
2584
|
+
400: components["responses"]["ActionRequired"];
|
|
2585
|
+
409: components["responses"]["ConfirmationRequired"];
|
|
2586
|
+
422: components["responses"]["GovernanceUnprocessable"];
|
|
2587
|
+
};
|
|
2588
|
+
};
|
|
2589
|
+
getRuntimeRecordsCounter: {
|
|
2590
|
+
parameters: {
|
|
2591
|
+
query?: never;
|
|
2592
|
+
header?: never;
|
|
2593
|
+
path: {
|
|
2594
|
+
entity_name: components["parameters"]["EntityNamePath"];
|
|
2595
|
+
};
|
|
2596
|
+
cookie?: never;
|
|
2597
|
+
};
|
|
2598
|
+
requestBody?: never;
|
|
2599
|
+
responses: {
|
|
2600
|
+
200: components["responses"]["OkEnvelope"];
|
|
2601
|
+
404: components["responses"]["NotFound"];
|
|
2602
|
+
};
|
|
2603
|
+
};
|
|
2604
|
+
listStateMachineInstances: {
|
|
2605
|
+
parameters: {
|
|
2606
|
+
query?: never;
|
|
2607
|
+
header?: never;
|
|
2608
|
+
path?: never;
|
|
2609
|
+
cookie?: never;
|
|
2610
|
+
};
|
|
2611
|
+
requestBody?: never;
|
|
2612
|
+
responses: {
|
|
2613
|
+
200: components["responses"]["OkEnvelope"];
|
|
2614
|
+
};
|
|
2615
|
+
};
|
|
2616
|
+
getStateMachineInstance: {
|
|
2617
|
+
parameters: {
|
|
2618
|
+
query?: never;
|
|
2619
|
+
header?: never;
|
|
2620
|
+
path: {
|
|
2621
|
+
id: string;
|
|
2622
|
+
};
|
|
2623
|
+
cookie?: never;
|
|
2624
|
+
};
|
|
2625
|
+
requestBody?: never;
|
|
2626
|
+
responses: {
|
|
2627
|
+
200: components["responses"]["OkEnvelope"];
|
|
2628
|
+
404: components["responses"]["NotFound"];
|
|
2629
|
+
};
|
|
2630
|
+
};
|
|
2631
|
+
listStateMachineEvents: {
|
|
2632
|
+
parameters: {
|
|
2633
|
+
query?: {
|
|
2634
|
+
entity_name?: string;
|
|
2635
|
+
instance_id?: string;
|
|
2636
|
+
};
|
|
2637
|
+
header?: never;
|
|
2638
|
+
path?: never;
|
|
2639
|
+
cookie?: never;
|
|
2640
|
+
};
|
|
2641
|
+
requestBody?: never;
|
|
2642
|
+
responses: {
|
|
2643
|
+
200: components["responses"]["OkEnvelope"];
|
|
2644
|
+
};
|
|
2645
|
+
};
|
|
2646
|
+
getStateMachineEvent: {
|
|
2647
|
+
parameters: {
|
|
2648
|
+
query?: never;
|
|
2649
|
+
header?: never;
|
|
2650
|
+
path: {
|
|
2651
|
+
id: string;
|
|
2652
|
+
};
|
|
2653
|
+
cookie?: never;
|
|
2654
|
+
};
|
|
2655
|
+
requestBody?: never;
|
|
2656
|
+
responses: {
|
|
2657
|
+
200: components["responses"]["OkEnvelope"];
|
|
2658
|
+
404: components["responses"]["NotFound"];
|
|
2659
|
+
};
|
|
2660
|
+
};
|
|
2661
|
+
listTransitionRequests: {
|
|
2662
|
+
parameters: {
|
|
2663
|
+
query?: {
|
|
2664
|
+
status?: "pending" | "approved" | "rejected";
|
|
2665
|
+
role?: string;
|
|
2666
|
+
};
|
|
2667
|
+
header?: never;
|
|
2668
|
+
path?: never;
|
|
2669
|
+
cookie?: never;
|
|
2670
|
+
};
|
|
2671
|
+
requestBody?: never;
|
|
2672
|
+
responses: {
|
|
2673
|
+
200: components["responses"]["OkEnvelope"];
|
|
2674
|
+
};
|
|
2675
|
+
};
|
|
2676
|
+
createTransitionRequest: {
|
|
2677
|
+
parameters: {
|
|
2678
|
+
query?: never;
|
|
2679
|
+
header?: never;
|
|
2680
|
+
path?: never;
|
|
2681
|
+
cookie?: never;
|
|
2682
|
+
};
|
|
2683
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
2684
|
+
responses: {
|
|
2685
|
+
201: components["responses"]["OkEnvelope"];
|
|
2686
|
+
};
|
|
2687
|
+
};
|
|
2688
|
+
getTransitionRequest: {
|
|
2689
|
+
parameters: {
|
|
2690
|
+
query?: never;
|
|
2691
|
+
header?: never;
|
|
2692
|
+
path: {
|
|
2693
|
+
id: string;
|
|
2694
|
+
};
|
|
2695
|
+
cookie?: never;
|
|
2696
|
+
};
|
|
2697
|
+
requestBody?: never;
|
|
2698
|
+
responses: {
|
|
2699
|
+
200: components["responses"]["OkEnvelope"];
|
|
2700
|
+
404: components["responses"]["NotFound"];
|
|
2701
|
+
};
|
|
2702
|
+
};
|
|
2703
|
+
resolveTransitionRequest: {
|
|
2704
|
+
parameters: {
|
|
2705
|
+
query?: never;
|
|
2706
|
+
header?: never;
|
|
2707
|
+
path: {
|
|
2708
|
+
id: string;
|
|
2709
|
+
};
|
|
2710
|
+
cookie?: never;
|
|
2711
|
+
};
|
|
2712
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
2713
|
+
responses: {
|
|
2714
|
+
200: components["responses"]["OkEnvelope"];
|
|
2715
|
+
};
|
|
2716
|
+
};
|
|
2717
|
+
dispatchAction: {
|
|
2718
|
+
parameters: {
|
|
2719
|
+
query?: never;
|
|
2720
|
+
header?: {
|
|
2721
|
+
/**
|
|
2722
|
+
* @description ADR-0127 US3 — the self-confirmation retry token from a prior `409
|
|
2723
|
+
* confirmation_required` response. Re-submit the IDENTICAL write carrying
|
|
2724
|
+
* this header to proceed. The token is bound to the exact write
|
|
2725
|
+
* (tenant/actor/contract-version/action/entity/verb/record/params) and
|
|
2726
|
+
* expires; it is read only from this header, never the body.
|
|
2727
|
+
*/
|
|
2728
|
+
"X-Zarel-Confirmation-Token"?: components["parameters"]["ConfirmationToken"];
|
|
2729
|
+
};
|
|
2730
|
+
path: {
|
|
2731
|
+
/** @description Action name from the tenant contract `actions[]` block. */
|
|
2732
|
+
name: string;
|
|
2733
|
+
};
|
|
2734
|
+
cookie?: never;
|
|
2735
|
+
};
|
|
2736
|
+
requestBody?: {
|
|
2737
|
+
content: {
|
|
2738
|
+
"application/json": {
|
|
2739
|
+
/** @description Required for read/update/delete verbs; null/omitted for create/list (entity-level). */
|
|
2740
|
+
record_id?: number | string | null;
|
|
2741
|
+
/** @description Forwarded to the underlying entity intent. */
|
|
2742
|
+
payload?: {
|
|
2743
|
+
[key: string]: unknown;
|
|
2744
|
+
};
|
|
2745
|
+
/** @description V1 wire-format pass-through; server-side dedup deferred. */
|
|
2746
|
+
idempotency_key?: string;
|
|
2747
|
+
};
|
|
2748
|
+
};
|
|
2749
|
+
};
|
|
2750
|
+
responses: {
|
|
2751
|
+
/** @description Dispatch succeeded */
|
|
2752
|
+
200: {
|
|
2753
|
+
headers: {
|
|
2754
|
+
[name: string]: unknown;
|
|
2755
|
+
};
|
|
2756
|
+
content: {
|
|
2757
|
+
"application/json": {
|
|
2758
|
+
/** @enum {boolean} */
|
|
2759
|
+
success: true;
|
|
2760
|
+
data: {
|
|
2761
|
+
[key: string]: unknown;
|
|
2762
|
+
} | null;
|
|
2763
|
+
/** @description ADR-0085 telemetry tag — action name as resolved. */
|
|
2764
|
+
resolved_via_action: string;
|
|
2765
|
+
};
|
|
2766
|
+
};
|
|
2767
|
+
};
|
|
2768
|
+
/** @description Bad request (validation_error / record_id_required / invalid_action_type / action_required / reason_required) */
|
|
2769
|
+
400: {
|
|
2770
|
+
headers: {
|
|
2771
|
+
[name: string]: unknown;
|
|
2772
|
+
};
|
|
2773
|
+
content: {
|
|
2774
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2775
|
+
};
|
|
2776
|
+
};
|
|
2777
|
+
/** @description Caller lacks the underlying (entity, verb) capability — `error.code='action_unauthorized'` */
|
|
2778
|
+
403: {
|
|
2779
|
+
headers: {
|
|
2780
|
+
[name: string]: unknown;
|
|
2781
|
+
};
|
|
2782
|
+
content: {
|
|
2783
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2784
|
+
};
|
|
2785
|
+
};
|
|
2786
|
+
/** @description Action name not found in tenant contract — `error.code='unknown_action'` */
|
|
2787
|
+
404: {
|
|
2788
|
+
headers: {
|
|
2789
|
+
[name: string]: unknown;
|
|
2790
|
+
};
|
|
2791
|
+
content: {
|
|
2792
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2793
|
+
};
|
|
2794
|
+
};
|
|
2795
|
+
409: components["responses"]["ConfirmationRequired"];
|
|
2796
|
+
422: components["responses"]["GovernanceUnprocessable"];
|
|
2797
|
+
};
|
|
2798
|
+
};
|
|
2799
|
+
listFlowInstances: {
|
|
2800
|
+
parameters: {
|
|
2801
|
+
query?: {
|
|
2802
|
+
/** @description Only runs of this flow definition. */
|
|
2803
|
+
flow?: string;
|
|
2804
|
+
};
|
|
2805
|
+
header?: never;
|
|
2806
|
+
path?: never;
|
|
2807
|
+
cookie?: never;
|
|
2808
|
+
};
|
|
2809
|
+
requestBody?: never;
|
|
2810
|
+
responses: {
|
|
2811
|
+
200: components["responses"]["OkEnvelope"];
|
|
2812
|
+
};
|
|
2813
|
+
};
|
|
2814
|
+
getFlowInstance: {
|
|
2815
|
+
parameters: {
|
|
2816
|
+
query?: never;
|
|
2817
|
+
header?: never;
|
|
2818
|
+
path: {
|
|
2819
|
+
id: string;
|
|
2820
|
+
};
|
|
2821
|
+
cookie?: never;
|
|
2822
|
+
};
|
|
2823
|
+
requestBody?: never;
|
|
2824
|
+
responses: {
|
|
2825
|
+
200: components["responses"]["OkEnvelope"];
|
|
2826
|
+
404: components["responses"]["NotFound"];
|
|
2827
|
+
};
|
|
2828
|
+
};
|
|
2829
|
+
listFlowEvents: {
|
|
2830
|
+
parameters: {
|
|
2831
|
+
query?: {
|
|
2832
|
+
/** @description Only events belonging to this flow instance. */
|
|
2833
|
+
instance_id?: string;
|
|
2834
|
+
/** @description Only events of this kind. An unrecognised kind is refused `400` rather than silently matching nothing. */
|
|
2835
|
+
event_type?: "FlowStarted" | "FlowStepCompleted" | "FlowStepFailed" | "FlowStepSkipped" | "FlowStepAlreadyCompleted" | "FlowPaused" | "FlowResumed" | "FlowCompleted" | "FlowFailed" | "FlowConstraintViolated" | "FlowConstraintUnverifiable";
|
|
2836
|
+
};
|
|
2837
|
+
header?: never;
|
|
2838
|
+
path?: never;
|
|
2839
|
+
cookie?: never;
|
|
2840
|
+
};
|
|
2841
|
+
requestBody?: never;
|
|
2842
|
+
responses: {
|
|
2843
|
+
200: components["responses"]["OkEnvelope"];
|
|
2844
|
+
400: components["responses"]["BadRequest"];
|
|
2845
|
+
};
|
|
2846
|
+
};
|
|
2847
|
+
getFlowEvent: {
|
|
2848
|
+
parameters: {
|
|
2849
|
+
query?: never;
|
|
2850
|
+
header?: never;
|
|
2851
|
+
path: {
|
|
2852
|
+
id: string;
|
|
2853
|
+
};
|
|
2854
|
+
cookie?: never;
|
|
2855
|
+
};
|
|
2856
|
+
requestBody?: never;
|
|
2857
|
+
responses: {
|
|
2858
|
+
200: components["responses"]["OkEnvelope"];
|
|
2859
|
+
404: components["responses"]["NotFound"];
|
|
2860
|
+
};
|
|
2861
|
+
};
|
|
2862
|
+
listFlowCallbacks: {
|
|
2863
|
+
parameters: {
|
|
2864
|
+
query?: never;
|
|
2865
|
+
header?: never;
|
|
2866
|
+
path?: never;
|
|
2867
|
+
cookie?: never;
|
|
2868
|
+
};
|
|
2869
|
+
requestBody?: never;
|
|
2870
|
+
responses: {
|
|
2871
|
+
200: components["responses"]["OkEnvelope"];
|
|
2872
|
+
};
|
|
2873
|
+
};
|
|
2874
|
+
getFlowCallback: {
|
|
2875
|
+
parameters: {
|
|
2876
|
+
query?: never;
|
|
2877
|
+
header?: never;
|
|
2878
|
+
path: {
|
|
2879
|
+
id: string;
|
|
2880
|
+
};
|
|
2881
|
+
cookie?: never;
|
|
2882
|
+
};
|
|
2883
|
+
requestBody?: never;
|
|
2884
|
+
responses: {
|
|
2885
|
+
200: components["responses"]["OkEnvelope"];
|
|
2886
|
+
404: components["responses"]["NotFound"];
|
|
2887
|
+
};
|
|
2888
|
+
};
|
|
2889
|
+
resolveFlowCallback: {
|
|
2890
|
+
parameters: {
|
|
2891
|
+
query?: never;
|
|
2892
|
+
header?: never;
|
|
2893
|
+
path: {
|
|
2894
|
+
id: string;
|
|
2895
|
+
};
|
|
2896
|
+
cookie?: never;
|
|
2897
|
+
};
|
|
2898
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
2899
|
+
responses: {
|
|
2900
|
+
/** @description Flat callback-resolution ack (success + optional message). */
|
|
2901
|
+
200: {
|
|
2902
|
+
headers: {
|
|
2903
|
+
[name: string]: unknown;
|
|
2904
|
+
};
|
|
2905
|
+
content: {
|
|
2906
|
+
"application/json": {
|
|
2907
|
+
success: boolean;
|
|
2908
|
+
message?: string;
|
|
2909
|
+
};
|
|
2910
|
+
};
|
|
2911
|
+
};
|
|
2912
|
+
};
|
|
2913
|
+
};
|
|
2914
|
+
listEventSubscriptions: {
|
|
2915
|
+
parameters: {
|
|
2916
|
+
query?: never;
|
|
2917
|
+
header?: never;
|
|
2918
|
+
path?: never;
|
|
2919
|
+
cookie?: never;
|
|
2920
|
+
};
|
|
2921
|
+
requestBody?: never;
|
|
2922
|
+
responses: {
|
|
2923
|
+
200: components["responses"]["OkEnvelope"];
|
|
2924
|
+
};
|
|
2925
|
+
};
|
|
2926
|
+
createEventSubscription: {
|
|
2927
|
+
parameters: {
|
|
2928
|
+
query?: never;
|
|
2929
|
+
header?: never;
|
|
2930
|
+
path?: never;
|
|
2931
|
+
cookie?: never;
|
|
2932
|
+
};
|
|
2933
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
2934
|
+
responses: {
|
|
2935
|
+
201: components["responses"]["OkEnvelope"];
|
|
2936
|
+
};
|
|
2937
|
+
};
|
|
2938
|
+
getEventSubscription: {
|
|
2939
|
+
parameters: {
|
|
2940
|
+
query?: never;
|
|
2941
|
+
header?: never;
|
|
2942
|
+
path: {
|
|
2943
|
+
subscription_id: number;
|
|
2944
|
+
};
|
|
2945
|
+
cookie?: never;
|
|
2946
|
+
};
|
|
2947
|
+
requestBody?: never;
|
|
2948
|
+
responses: {
|
|
2949
|
+
200: components["responses"]["OkEnvelope"];
|
|
2950
|
+
404: components["responses"]["NotFound"];
|
|
2951
|
+
};
|
|
2952
|
+
};
|
|
2953
|
+
deactivateEventSubscription: {
|
|
2954
|
+
parameters: {
|
|
2955
|
+
query?: never;
|
|
2956
|
+
header?: never;
|
|
2957
|
+
path: {
|
|
2958
|
+
subscription_id: number;
|
|
2959
|
+
};
|
|
2960
|
+
cookie?: never;
|
|
2961
|
+
};
|
|
2962
|
+
requestBody?: never;
|
|
2963
|
+
responses: {
|
|
2964
|
+
200: components["responses"]["OkEnvelope"];
|
|
2965
|
+
};
|
|
2966
|
+
};
|
|
2967
|
+
patchEventSubscription: {
|
|
2968
|
+
parameters: {
|
|
2969
|
+
query?: never;
|
|
2970
|
+
header?: never;
|
|
2971
|
+
path: {
|
|
2972
|
+
subscription_id: number;
|
|
2973
|
+
};
|
|
2974
|
+
cookie?: never;
|
|
2975
|
+
};
|
|
2976
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
2977
|
+
responses: {
|
|
2978
|
+
200: components["responses"]["OkEnvelope"];
|
|
2979
|
+
};
|
|
2980
|
+
};
|
|
2981
|
+
listEventDeliveries: {
|
|
2982
|
+
parameters: {
|
|
2983
|
+
query?: never;
|
|
2984
|
+
header?: never;
|
|
2985
|
+
path?: never;
|
|
2986
|
+
cookie?: never;
|
|
2987
|
+
};
|
|
2988
|
+
requestBody?: never;
|
|
2989
|
+
responses: {
|
|
2990
|
+
200: components["responses"]["OkEnvelope"];
|
|
2991
|
+
};
|
|
2992
|
+
};
|
|
2993
|
+
getEventDelivery: {
|
|
2994
|
+
parameters: {
|
|
2995
|
+
query?: never;
|
|
2996
|
+
header?: never;
|
|
2997
|
+
path: {
|
|
2998
|
+
id: string;
|
|
2999
|
+
};
|
|
3000
|
+
cookie?: never;
|
|
3001
|
+
};
|
|
3002
|
+
requestBody?: never;
|
|
3003
|
+
responses: {
|
|
3004
|
+
200: components["responses"]["OkEnvelope"];
|
|
3005
|
+
404: components["responses"]["NotFound"];
|
|
3006
|
+
};
|
|
3007
|
+
};
|
|
3008
|
+
listConversationSessions: {
|
|
3009
|
+
parameters: {
|
|
3010
|
+
query?: {
|
|
3011
|
+
/** @description Declared channel name (tenant `channels:` section, ADR-0133) */
|
|
3012
|
+
channel_name?: string;
|
|
3013
|
+
status?: "active" | "expired" | "cleared";
|
|
3014
|
+
from?: string;
|
|
3015
|
+
to?: string;
|
|
3016
|
+
limit?: number;
|
|
3017
|
+
offset?: number;
|
|
3018
|
+
};
|
|
3019
|
+
header?: never;
|
|
3020
|
+
path?: never;
|
|
3021
|
+
cookie?: never;
|
|
3022
|
+
};
|
|
3023
|
+
requestBody?: never;
|
|
3024
|
+
responses: {
|
|
3025
|
+
200: components["responses"]["OkEnvelope"];
|
|
3026
|
+
};
|
|
3027
|
+
};
|
|
3028
|
+
createConversationSession: {
|
|
3029
|
+
parameters: {
|
|
3030
|
+
query?: never;
|
|
3031
|
+
header?: never;
|
|
3032
|
+
path?: never;
|
|
3033
|
+
cookie?: never;
|
|
3034
|
+
};
|
|
3035
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
3036
|
+
responses: {
|
|
3037
|
+
201: components["responses"]["OkEnvelope"];
|
|
3038
|
+
400: components["responses"]["BadRequest"];
|
|
3039
|
+
404: components["responses"]["NotFound"];
|
|
3040
|
+
409: components["responses"]["Conflict"];
|
|
3041
|
+
};
|
|
3042
|
+
};
|
|
3043
|
+
getConversationSession: {
|
|
3044
|
+
parameters: {
|
|
3045
|
+
query?: never;
|
|
3046
|
+
header?: never;
|
|
3047
|
+
path: {
|
|
3048
|
+
session_key: string;
|
|
3049
|
+
};
|
|
3050
|
+
cookie?: never;
|
|
3051
|
+
};
|
|
3052
|
+
requestBody?: never;
|
|
3053
|
+
responses: {
|
|
3054
|
+
200: components["responses"]["OkEnvelope"];
|
|
3055
|
+
404: components["responses"]["NotFound"];
|
|
3056
|
+
};
|
|
3057
|
+
};
|
|
3058
|
+
clearConversationSession: {
|
|
3059
|
+
parameters: {
|
|
3060
|
+
query?: never;
|
|
3061
|
+
header?: never;
|
|
3062
|
+
path: {
|
|
3063
|
+
session_key: string;
|
|
3064
|
+
};
|
|
3065
|
+
cookie?: never;
|
|
3066
|
+
};
|
|
3067
|
+
requestBody?: never;
|
|
3068
|
+
responses: {
|
|
3069
|
+
200: components["responses"]["OkEnvelope"];
|
|
3070
|
+
};
|
|
3071
|
+
};
|
|
3072
|
+
listConversationTurns: {
|
|
3073
|
+
parameters: {
|
|
3074
|
+
query?: never;
|
|
3075
|
+
header?: never;
|
|
3076
|
+
path: {
|
|
3077
|
+
session_key: string;
|
|
3078
|
+
};
|
|
3079
|
+
cookie?: never;
|
|
3080
|
+
};
|
|
3081
|
+
requestBody?: never;
|
|
3082
|
+
responses: {
|
|
3083
|
+
200: components["responses"]["OkEnvelope"];
|
|
3084
|
+
};
|
|
3085
|
+
};
|
|
3086
|
+
getConversationTurn: {
|
|
3087
|
+
parameters: {
|
|
3088
|
+
query?: never;
|
|
3089
|
+
header?: never;
|
|
3090
|
+
path: {
|
|
3091
|
+
session_key: string;
|
|
3092
|
+
turn_number: number;
|
|
3093
|
+
};
|
|
3094
|
+
cookie?: never;
|
|
3095
|
+
};
|
|
3096
|
+
requestBody?: never;
|
|
3097
|
+
responses: {
|
|
3098
|
+
200: components["responses"]["OkEnvelope"];
|
|
3099
|
+
404: components["responses"]["NotFound"];
|
|
3100
|
+
};
|
|
3101
|
+
};
|
|
3102
|
+
listConversationActions: {
|
|
3103
|
+
parameters: {
|
|
3104
|
+
query?: never;
|
|
3105
|
+
header?: never;
|
|
3106
|
+
path: {
|
|
3107
|
+
session_key: string;
|
|
3108
|
+
};
|
|
3109
|
+
cookie?: never;
|
|
3110
|
+
};
|
|
3111
|
+
requestBody?: never;
|
|
3112
|
+
responses: {
|
|
3113
|
+
200: components["responses"]["OkEnvelope"];
|
|
3114
|
+
};
|
|
3115
|
+
};
|
|
3116
|
+
getConversationAction: {
|
|
3117
|
+
parameters: {
|
|
3118
|
+
query?: never;
|
|
3119
|
+
header?: never;
|
|
3120
|
+
path: {
|
|
3121
|
+
session_key: string;
|
|
3122
|
+
id: string;
|
|
3123
|
+
};
|
|
3124
|
+
cookie?: never;
|
|
3125
|
+
};
|
|
3126
|
+
requestBody?: never;
|
|
3127
|
+
responses: {
|
|
3128
|
+
200: components["responses"]["OkEnvelope"];
|
|
3129
|
+
404: components["responses"]["NotFound"];
|
|
3130
|
+
};
|
|
3131
|
+
};
|
|
3132
|
+
recomputeEntity: {
|
|
3133
|
+
parameters: {
|
|
3134
|
+
query?: never;
|
|
3135
|
+
header?: never;
|
|
3136
|
+
path: {
|
|
3137
|
+
entity_name: components["parameters"]["EntityNamePath"];
|
|
3138
|
+
};
|
|
3139
|
+
cookie?: never;
|
|
3140
|
+
};
|
|
3141
|
+
requestBody?: never;
|
|
3142
|
+
responses: {
|
|
3143
|
+
200: components["responses"]["OkEnvelope"];
|
|
3144
|
+
};
|
|
3145
|
+
};
|
|
3146
|
+
verifyChannelBinding: {
|
|
3147
|
+
parameters: {
|
|
3148
|
+
query?: never;
|
|
3149
|
+
header?: never;
|
|
3150
|
+
path: {
|
|
3151
|
+
id: number;
|
|
3152
|
+
};
|
|
3153
|
+
cookie?: never;
|
|
3154
|
+
};
|
|
3155
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
3156
|
+
responses: {
|
|
3157
|
+
200: components["responses"]["OkEnvelope"];
|
|
3158
|
+
/** @description Missing the system action — `error.code='verify_channel_binding_required'` */
|
|
3159
|
+
403: {
|
|
3160
|
+
headers: {
|
|
3161
|
+
[name: string]: unknown;
|
|
3162
|
+
};
|
|
3163
|
+
content: {
|
|
3164
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3165
|
+
};
|
|
3166
|
+
};
|
|
3167
|
+
};
|
|
3168
|
+
};
|
|
3169
|
+
listRoleAssignments: {
|
|
3170
|
+
parameters: {
|
|
3171
|
+
query?: never;
|
|
3172
|
+
header?: never;
|
|
3173
|
+
path?: never;
|
|
3174
|
+
cookie?: never;
|
|
3175
|
+
};
|
|
3176
|
+
requestBody?: never;
|
|
3177
|
+
responses: {
|
|
3178
|
+
200: components["responses"]["OkEnvelope"];
|
|
3179
|
+
};
|
|
3180
|
+
};
|
|
3181
|
+
createRoleAssignment: {
|
|
3182
|
+
parameters: {
|
|
3183
|
+
query?: never;
|
|
3184
|
+
header?: never;
|
|
3185
|
+
path?: never;
|
|
3186
|
+
cookie?: never;
|
|
3187
|
+
};
|
|
3188
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
3189
|
+
responses: {
|
|
3190
|
+
201: components["responses"]["OkEnvelope"];
|
|
3191
|
+
/** @description Owner-marked role — `error.code='owner_role_protected'` (ADR-0102 S4) */
|
|
3192
|
+
403: {
|
|
3193
|
+
headers: {
|
|
3194
|
+
[name: string]: unknown;
|
|
3195
|
+
};
|
|
3196
|
+
content: {
|
|
3197
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3198
|
+
};
|
|
3199
|
+
};
|
|
3200
|
+
/** @description Assigned user has no live `users` record — `error.code='assignment_user_not_found'` */
|
|
3201
|
+
422: {
|
|
3202
|
+
headers: {
|
|
3203
|
+
[name: string]: unknown;
|
|
3204
|
+
};
|
|
3205
|
+
content: {
|
|
3206
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3207
|
+
};
|
|
3208
|
+
};
|
|
3209
|
+
};
|
|
3210
|
+
};
|
|
3211
|
+
deleteRoleAssignment: {
|
|
3212
|
+
parameters: {
|
|
3213
|
+
query?: never;
|
|
3214
|
+
header?: never;
|
|
3215
|
+
path: {
|
|
3216
|
+
user_name: string;
|
|
3217
|
+
role_name: string;
|
|
3218
|
+
};
|
|
3219
|
+
cookie?: never;
|
|
3220
|
+
};
|
|
3221
|
+
requestBody?: never;
|
|
3222
|
+
responses: {
|
|
3223
|
+
200: components["responses"]["OkEnvelope"];
|
|
3224
|
+
/** @description Owner-marked role — `error.code='owner_role_protected'` (ADR-0102 S4) */
|
|
3225
|
+
403: {
|
|
3226
|
+
headers: {
|
|
3227
|
+
[name: string]: unknown;
|
|
3228
|
+
};
|
|
3229
|
+
content: {
|
|
3230
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3231
|
+
};
|
|
3232
|
+
};
|
|
3233
|
+
};
|
|
3234
|
+
};
|
|
3235
|
+
runtimeConversationSend: {
|
|
3236
|
+
parameters: {
|
|
3237
|
+
query?: never;
|
|
3238
|
+
header?: never;
|
|
3239
|
+
path?: never;
|
|
3240
|
+
cookie?: never;
|
|
3241
|
+
};
|
|
3242
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
3243
|
+
responses: {
|
|
3244
|
+
/**
|
|
3245
|
+
* @description Cognitive-agent reply — a **flat** body (`success` + `message` +
|
|
3246
|
+
* optional intent/clarification fields), NOT envelope-wrapped. The SDK
|
|
3247
|
+
* returns it whole (codegen-unwrap: no-unwrap).
|
|
3248
|
+
*/
|
|
3249
|
+
200: {
|
|
3250
|
+
headers: {
|
|
3251
|
+
[name: string]: unknown;
|
|
3252
|
+
};
|
|
3253
|
+
content: {
|
|
3254
|
+
"application/json": {
|
|
3255
|
+
success: boolean;
|
|
3256
|
+
message: string;
|
|
3257
|
+
intent_type?: string;
|
|
3258
|
+
intent_id?: string;
|
|
3259
|
+
data?: unknown;
|
|
3260
|
+
clarification_needed?: boolean;
|
|
3261
|
+
options?: string[];
|
|
3262
|
+
suggestions?: string[];
|
|
3263
|
+
error?: string;
|
|
3264
|
+
};
|
|
3265
|
+
};
|
|
3266
|
+
};
|
|
3267
|
+
404: components["responses"]["NotFound"];
|
|
3268
|
+
};
|
|
3269
|
+
};
|
|
3270
|
+
runtimeChannelsMint: {
|
|
3271
|
+
parameters: {
|
|
3272
|
+
query?: never;
|
|
3273
|
+
header?: never;
|
|
3274
|
+
path?: never;
|
|
3275
|
+
cookie?: never;
|
|
3276
|
+
};
|
|
3277
|
+
requestBody: {
|
|
3278
|
+
content: {
|
|
3279
|
+
"application/json": components["schemas"]["ChannelMintRequest"];
|
|
3280
|
+
};
|
|
3281
|
+
};
|
|
3282
|
+
responses: {
|
|
3283
|
+
/** @description The minted party token — a bare body, NOT envelope-wrapped. */
|
|
3284
|
+
200: {
|
|
3285
|
+
headers: {
|
|
3286
|
+
[name: string]: unknown;
|
|
3287
|
+
};
|
|
3288
|
+
content: {
|
|
3289
|
+
"application/json": components["schemas"]["ChannelPartyToken"];
|
|
3290
|
+
};
|
|
3291
|
+
};
|
|
3292
|
+
/**
|
|
3293
|
+
* @description `MINT_CLAIM_REJECTED` — the body carried a role/privilege claim, or
|
|
3294
|
+
* any key other than `party_ref`. Refused before the mint (QI-003).
|
|
3295
|
+
*/
|
|
3296
|
+
422: {
|
|
3297
|
+
headers: {
|
|
3298
|
+
[name: string]: unknown;
|
|
3299
|
+
};
|
|
3300
|
+
content: {
|
|
3301
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3302
|
+
};
|
|
3303
|
+
};
|
|
3304
|
+
};
|
|
3305
|
+
};
|
|
3306
|
+
runtimeChannelsSubscribe: {
|
|
3307
|
+
parameters: {
|
|
3308
|
+
query?: never;
|
|
3309
|
+
header?: never;
|
|
3310
|
+
path?: never;
|
|
3311
|
+
cookie?: never;
|
|
3312
|
+
};
|
|
3313
|
+
requestBody?: never;
|
|
3314
|
+
responses: {
|
|
3315
|
+
/** @description text/event-stream */
|
|
3316
|
+
200: {
|
|
3317
|
+
headers: {
|
|
3318
|
+
[name: string]: unknown;
|
|
3319
|
+
};
|
|
3320
|
+
content: {
|
|
3321
|
+
"text/event-stream": string;
|
|
3322
|
+
};
|
|
3323
|
+
};
|
|
3324
|
+
/**
|
|
3325
|
+
* @description `STREAM_UNAVAILABLE` — the directive stream is not configured on
|
|
3326
|
+
* this instance.
|
|
3327
|
+
*/
|
|
3328
|
+
503: {
|
|
3329
|
+
headers: {
|
|
3330
|
+
[name: string]: unknown;
|
|
3331
|
+
};
|
|
3332
|
+
content: {
|
|
3333
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3334
|
+
};
|
|
3335
|
+
};
|
|
3336
|
+
};
|
|
3337
|
+
};
|
|
3338
|
+
runtimeChannelsFetch: {
|
|
3339
|
+
parameters: {
|
|
3340
|
+
query?: never;
|
|
3341
|
+
header?: never;
|
|
3342
|
+
path: {
|
|
3343
|
+
/** @description Egress directive id (ADR-0133 §B.4) */
|
|
3344
|
+
id: components["parameters"]["ChannelDirectiveIdPath"];
|
|
3345
|
+
};
|
|
3346
|
+
cookie?: never;
|
|
3347
|
+
};
|
|
3348
|
+
requestBody?: never;
|
|
3349
|
+
responses: {
|
|
3350
|
+
/**
|
|
3351
|
+
* @description The claimed directive plus its resolved content — a bare body, NOT
|
|
3352
|
+
* envelope-wrapped.
|
|
3353
|
+
*/
|
|
3354
|
+
200: {
|
|
3355
|
+
headers: {
|
|
3356
|
+
[name: string]: unknown;
|
|
3357
|
+
};
|
|
3358
|
+
content: {
|
|
3359
|
+
"application/json": components["schemas"]["ChannelDirectiveContent"];
|
|
3360
|
+
};
|
|
3361
|
+
};
|
|
3362
|
+
/**
|
|
3363
|
+
* @description The directive belongs to another channel — refused, never readable
|
|
3364
|
+
* (QI-006).
|
|
3365
|
+
*/
|
|
3366
|
+
403: {
|
|
3367
|
+
headers: {
|
|
3368
|
+
[name: string]: unknown;
|
|
3369
|
+
};
|
|
3370
|
+
content: {
|
|
3371
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3372
|
+
};
|
|
3373
|
+
};
|
|
3374
|
+
404: components["responses"]["NotFound"];
|
|
3375
|
+
/**
|
|
3376
|
+
* @description A live FOREIGN lease — another holder is mid-delivery. The caller
|
|
3377
|
+
* must not deliver.
|
|
3378
|
+
*/
|
|
3379
|
+
409: {
|
|
3380
|
+
headers: {
|
|
3381
|
+
[name: string]: unknown;
|
|
3382
|
+
};
|
|
3383
|
+
content: {
|
|
3384
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3385
|
+
};
|
|
3386
|
+
};
|
|
3387
|
+
};
|
|
3388
|
+
};
|
|
3389
|
+
runtimeChannelsReport: {
|
|
3390
|
+
parameters: {
|
|
3391
|
+
query?: never;
|
|
3392
|
+
header?: never;
|
|
3393
|
+
path: {
|
|
3394
|
+
/** @description Egress directive id (ADR-0133 §B.4) */
|
|
3395
|
+
id: components["parameters"]["ChannelDirectiveIdPath"];
|
|
3396
|
+
};
|
|
3397
|
+
cookie?: never;
|
|
3398
|
+
};
|
|
3399
|
+
requestBody: {
|
|
3400
|
+
content: {
|
|
3401
|
+
"application/json": components["schemas"]["ChannelSendResult"];
|
|
3402
|
+
};
|
|
3403
|
+
};
|
|
3404
|
+
responses: {
|
|
3405
|
+
/**
|
|
3406
|
+
* @description The directive's resulting terminal status — a bare body, NOT
|
|
3407
|
+
* envelope-wrapped.
|
|
3408
|
+
*/
|
|
3409
|
+
200: {
|
|
3410
|
+
headers: {
|
|
3411
|
+
[name: string]: unknown;
|
|
3412
|
+
};
|
|
3413
|
+
content: {
|
|
3414
|
+
"application/json": components["schemas"]["ChannelSendResultAck"];
|
|
3415
|
+
};
|
|
3416
|
+
};
|
|
3417
|
+
400: components["responses"]["BadRequest"];
|
|
3418
|
+
/** @description The directive belongs to another channel — refused (QI-006). */
|
|
3419
|
+
403: {
|
|
3420
|
+
headers: {
|
|
3421
|
+
[name: string]: unknown;
|
|
3422
|
+
};
|
|
3423
|
+
content: {
|
|
3424
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3425
|
+
};
|
|
3426
|
+
};
|
|
3427
|
+
404: components["responses"]["NotFound"];
|
|
3428
|
+
/**
|
|
3429
|
+
* @description The lease was lost (claimed by another holder) — the adapter must
|
|
3430
|
+
* abort rather than assume the send succeeded.
|
|
3431
|
+
*/
|
|
3432
|
+
409: {
|
|
3433
|
+
headers: {
|
|
3434
|
+
[name: string]: unknown;
|
|
3435
|
+
};
|
|
3436
|
+
content: {
|
|
3437
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
3438
|
+
};
|
|
3439
|
+
};
|
|
3440
|
+
};
|
|
3441
|
+
};
|
|
3442
|
+
runtimeToolsList: {
|
|
3443
|
+
parameters: {
|
|
3444
|
+
query?: never;
|
|
3445
|
+
header?: never;
|
|
3446
|
+
path?: never;
|
|
3447
|
+
cookie?: never;
|
|
3448
|
+
};
|
|
3449
|
+
requestBody?: never;
|
|
3450
|
+
responses: {
|
|
3451
|
+
/** @description User-filtered tool catalog */
|
|
3452
|
+
200: {
|
|
3453
|
+
headers: {
|
|
3454
|
+
[name: string]: unknown;
|
|
3455
|
+
};
|
|
3456
|
+
content: {
|
|
3457
|
+
"application/json": {
|
|
3458
|
+
success: boolean;
|
|
3459
|
+
catalog: components["schemas"]["UserToolCatalog"];
|
|
3460
|
+
};
|
|
3461
|
+
};
|
|
3462
|
+
};
|
|
3463
|
+
};
|
|
3464
|
+
};
|
|
3465
|
+
runtimeEffectiveAuthorizations: {
|
|
3466
|
+
parameters: {
|
|
3467
|
+
query?: never;
|
|
3468
|
+
header?: never;
|
|
3469
|
+
path?: never;
|
|
3470
|
+
cookie?: never;
|
|
3471
|
+
};
|
|
3472
|
+
requestBody?: never;
|
|
3473
|
+
responses: {
|
|
3474
|
+
/** @description Effective authorizations of the calling actor */
|
|
3475
|
+
200: {
|
|
3476
|
+
headers: {
|
|
3477
|
+
[name: string]: unknown;
|
|
3478
|
+
};
|
|
3479
|
+
content: {
|
|
3480
|
+
"application/json": {
|
|
3481
|
+
tenant_name: string;
|
|
3482
|
+
user_name: string;
|
|
3483
|
+
user_roles: string[];
|
|
3484
|
+
admin_sections: string[];
|
|
3485
|
+
system_actions: string[];
|
|
3486
|
+
/**
|
|
3487
|
+
* @description ADR-0102 S5b-a (FR-012): bounds carried by the actor's
|
|
3488
|
+
* matched CONDITIONED system grants (e.g. the Cat-2
|
|
3489
|
+
* provider allow-lists on `manage_credentials`). Present
|
|
3490
|
+
* only when at least one matched grant is bounded.
|
|
3491
|
+
*/
|
|
3492
|
+
system_action_bounds?: {
|
|
3493
|
+
[key: string]: Record<string, never>;
|
|
3494
|
+
};
|
|
3495
|
+
entity_permissions: {
|
|
3496
|
+
entity: string;
|
|
3497
|
+
actions: string[];
|
|
3498
|
+
/**
|
|
3499
|
+
* @description The scope the write floor will enforce for each reported action.
|
|
3500
|
+
* `full` reaches every row; `owner` reaches only rows the caller
|
|
3501
|
+
* owns, so an affordance rendered from an `owner` action must be
|
|
3502
|
+
* gated on the row's owner or it will meet a 403.
|
|
3503
|
+
*/
|
|
3504
|
+
scope_by_action: {
|
|
3505
|
+
[key: string]: "full" | "owner";
|
|
3506
|
+
};
|
|
3507
|
+
/**
|
|
3508
|
+
* @description The fields each action opens, ON A ROW THE CALLER OWNS — the widest
|
|
3509
|
+
* set any single row admits, since ownership is a property of a row
|
|
3510
|
+
* and this endpoint is asked about an entity. ABSENT means all
|
|
3511
|
+
* fields; it never means none. An EMPTY list means exactly none, and
|
|
3512
|
+
* is emitted rather than dropped: a policy may grant the scope while
|
|
3513
|
+
* opening no field (`fields: []`), and the write floor then refuses
|
|
3514
|
+
* every field. Absence and `[]` are opposite answers and both are
|
|
3515
|
+
* reachable. Read together with `scope_by_action`: where an `owner`
|
|
3516
|
+
* grant contributed, that part of the list applies only to the
|
|
3517
|
+
* caller's own rows.
|
|
3518
|
+
*/
|
|
3519
|
+
fields_by_action: {
|
|
3520
|
+
[key: string]: string[] | null;
|
|
3521
|
+
};
|
|
3522
|
+
}[];
|
|
3523
|
+
};
|
|
3524
|
+
};
|
|
3525
|
+
};
|
|
3526
|
+
};
|
|
3527
|
+
};
|
|
3528
|
+
runtimeMcp: {
|
|
3529
|
+
parameters: {
|
|
3530
|
+
query?: never;
|
|
3531
|
+
header?: never;
|
|
3532
|
+
path?: never;
|
|
3533
|
+
cookie?: never;
|
|
3534
|
+
};
|
|
3535
|
+
requestBody: {
|
|
3536
|
+
content: {
|
|
3537
|
+
"application/json": {
|
|
3538
|
+
[key: string]: unknown;
|
|
3539
|
+
};
|
|
3540
|
+
};
|
|
3541
|
+
};
|
|
3542
|
+
responses: {
|
|
3543
|
+
/**
|
|
3544
|
+
* @description MCP JSON-RPC response (single object) or an SSE stream of MCP
|
|
3545
|
+
* messages — the server selects the content type per request.
|
|
3546
|
+
*/
|
|
3547
|
+
200: {
|
|
3548
|
+
headers: {
|
|
3549
|
+
[name: string]: unknown;
|
|
3550
|
+
};
|
|
3551
|
+
content: {
|
|
3552
|
+
"application/json": {
|
|
3553
|
+
[key: string]: unknown;
|
|
3554
|
+
};
|
|
3555
|
+
"text/event-stream": string;
|
|
3556
|
+
};
|
|
3557
|
+
};
|
|
3558
|
+
/**
|
|
3559
|
+
* @description Method not allowed. GET on the stateless transport returns 405
|
|
3560
|
+
* (no server-initiated SSE); DELETE is a 200 no-op.
|
|
3561
|
+
*/
|
|
3562
|
+
405: {
|
|
3563
|
+
headers: {
|
|
3564
|
+
[name: string]: unknown;
|
|
3565
|
+
};
|
|
3566
|
+
content?: never;
|
|
3567
|
+
};
|
|
3568
|
+
};
|
|
3569
|
+
};
|
|
3570
|
+
runtimeToolsMcpList: {
|
|
3571
|
+
parameters: {
|
|
3572
|
+
query?: never;
|
|
3573
|
+
header?: never;
|
|
3574
|
+
path?: never;
|
|
3575
|
+
cookie?: never;
|
|
3576
|
+
};
|
|
3577
|
+
requestBody?: never;
|
|
3578
|
+
responses: {
|
|
3579
|
+
200: components["responses"]["OkEnvelope"];
|
|
3580
|
+
};
|
|
3581
|
+
};
|
|
3582
|
+
runtimeToolsCall: {
|
|
3583
|
+
parameters: {
|
|
3584
|
+
query?: never;
|
|
3585
|
+
header?: never;
|
|
3586
|
+
path?: never;
|
|
3587
|
+
cookie?: never;
|
|
3588
|
+
};
|
|
3589
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
3590
|
+
responses: {
|
|
3591
|
+
200: components["responses"]["OkEnvelope"];
|
|
3592
|
+
};
|
|
3593
|
+
};
|
|
3594
|
+
getHealth: {
|
|
3595
|
+
parameters: {
|
|
3596
|
+
query?: never;
|
|
3597
|
+
header?: never;
|
|
3598
|
+
path?: never;
|
|
3599
|
+
cookie?: never;
|
|
3600
|
+
};
|
|
3601
|
+
requestBody?: never;
|
|
3602
|
+
responses: {
|
|
3603
|
+
200: components["responses"]["OkEnvelope"];
|
|
3604
|
+
};
|
|
3605
|
+
};
|
|
3606
|
+
getMetrics: {
|
|
3607
|
+
parameters: {
|
|
3608
|
+
query?: never;
|
|
3609
|
+
header?: never;
|
|
3610
|
+
path?: never;
|
|
3611
|
+
cookie?: never;
|
|
3612
|
+
};
|
|
3613
|
+
requestBody?: never;
|
|
3614
|
+
responses: {
|
|
3615
|
+
200: components["responses"]["OkEnvelope"];
|
|
3616
|
+
};
|
|
3617
|
+
};
|
|
3618
|
+
listApiKeys: {
|
|
3619
|
+
parameters: {
|
|
3620
|
+
query?: never;
|
|
3621
|
+
header?: never;
|
|
3622
|
+
path?: never;
|
|
3623
|
+
cookie?: never;
|
|
3624
|
+
};
|
|
3625
|
+
requestBody?: never;
|
|
3626
|
+
responses: {
|
|
3627
|
+
/** @description Bare array of masked API-key metadata. */
|
|
3628
|
+
200: {
|
|
3629
|
+
headers: {
|
|
3630
|
+
[name: string]: unknown;
|
|
3631
|
+
};
|
|
3632
|
+
content: {
|
|
3633
|
+
"application/json": {
|
|
3634
|
+
id: string;
|
|
3635
|
+
name: string;
|
|
3636
|
+
key_prefix: string;
|
|
3637
|
+
scopes?: string[];
|
|
3638
|
+
created_at?: string;
|
|
3639
|
+
}[];
|
|
3640
|
+
};
|
|
3641
|
+
};
|
|
3642
|
+
};
|
|
3643
|
+
};
|
|
3644
|
+
createApiKey: {
|
|
3645
|
+
parameters: {
|
|
3646
|
+
query?: never;
|
|
3647
|
+
header?: never;
|
|
3648
|
+
path?: never;
|
|
3649
|
+
cookie?: never;
|
|
3650
|
+
};
|
|
3651
|
+
requestBody: {
|
|
3652
|
+
content: {
|
|
3653
|
+
"application/json": {
|
|
3654
|
+
name: string;
|
|
3655
|
+
scopes?: string[];
|
|
3656
|
+
};
|
|
3657
|
+
};
|
|
3658
|
+
};
|
|
3659
|
+
responses: {
|
|
3660
|
+
/** @description Created API key (bare body — includes one-time plaintext `key`). */
|
|
3661
|
+
201: {
|
|
3662
|
+
headers: {
|
|
3663
|
+
[name: string]: unknown;
|
|
3664
|
+
};
|
|
3665
|
+
content: {
|
|
3666
|
+
"application/json": {
|
|
3667
|
+
id: string;
|
|
3668
|
+
name: string;
|
|
3669
|
+
key: string;
|
|
3670
|
+
scopes?: string[];
|
|
3671
|
+
created_at?: string;
|
|
3672
|
+
};
|
|
3673
|
+
};
|
|
3674
|
+
};
|
|
3675
|
+
};
|
|
3676
|
+
};
|
|
3677
|
+
deleteApiKey: {
|
|
3678
|
+
parameters: {
|
|
3679
|
+
query?: never;
|
|
3680
|
+
header?: never;
|
|
3681
|
+
path: {
|
|
3682
|
+
key_id: string;
|
|
3683
|
+
};
|
|
3684
|
+
cookie?: never;
|
|
3685
|
+
};
|
|
3686
|
+
requestBody?: never;
|
|
3687
|
+
responses: {
|
|
3688
|
+
/** @description Flat revoke ack. */
|
|
3689
|
+
200: {
|
|
3690
|
+
headers: {
|
|
3691
|
+
[name: string]: unknown;
|
|
3692
|
+
};
|
|
3693
|
+
content: {
|
|
3694
|
+
"application/json": {
|
|
3695
|
+
success: boolean;
|
|
3696
|
+
};
|
|
3697
|
+
};
|
|
3698
|
+
};
|
|
3699
|
+
};
|
|
3700
|
+
};
|
|
3701
|
+
runtimeStateMachineReplay: {
|
|
3702
|
+
parameters: {
|
|
3703
|
+
query?: never;
|
|
3704
|
+
header?: never;
|
|
3705
|
+
path?: never;
|
|
3706
|
+
cookie?: never;
|
|
3707
|
+
};
|
|
3708
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
3709
|
+
responses: {
|
|
3710
|
+
200: components["responses"]["OkEnvelope"];
|
|
3711
|
+
};
|
|
3712
|
+
};
|
|
3713
|
+
streamEvents: {
|
|
3714
|
+
parameters: {
|
|
3715
|
+
query?: never;
|
|
3716
|
+
header?: never;
|
|
3717
|
+
path?: never;
|
|
3718
|
+
cookie?: never;
|
|
3719
|
+
};
|
|
3720
|
+
requestBody?: never;
|
|
3721
|
+
responses: {
|
|
3722
|
+
/** @description text/event-stream */
|
|
3723
|
+
200: {
|
|
3724
|
+
headers: {
|
|
3725
|
+
[name: string]: unknown;
|
|
3726
|
+
};
|
|
3727
|
+
content: {
|
|
3728
|
+
"text/event-stream": string;
|
|
3729
|
+
};
|
|
3730
|
+
};
|
|
3731
|
+
};
|
|
3732
|
+
};
|
|
3733
|
+
getTrace: {
|
|
3734
|
+
parameters: {
|
|
3735
|
+
query?: never;
|
|
3736
|
+
header?: never;
|
|
3737
|
+
path: {
|
|
3738
|
+
trace_id: string;
|
|
3739
|
+
};
|
|
3740
|
+
cookie?: never;
|
|
3741
|
+
};
|
|
3742
|
+
requestBody?: never;
|
|
3743
|
+
responses: {
|
|
3744
|
+
200: components["responses"]["OkEnvelope"];
|
|
3745
|
+
/** @description trace_not_found / legacy_trace_not_available */
|
|
3746
|
+
404: {
|
|
3747
|
+
headers: {
|
|
3748
|
+
[name: string]: unknown;
|
|
3749
|
+
};
|
|
3750
|
+
content?: never;
|
|
3751
|
+
};
|
|
3752
|
+
};
|
|
3753
|
+
};
|
|
3754
|
+
queryTraces: {
|
|
3755
|
+
parameters: {
|
|
3756
|
+
query?: {
|
|
3757
|
+
flow?: string;
|
|
3758
|
+
user?: string;
|
|
3759
|
+
from?: string;
|
|
3760
|
+
to?: string;
|
|
3761
|
+
outcome?: "executed" | "refused" | "awaiting_human_decision" | "failed";
|
|
3762
|
+
limit?: number;
|
|
3763
|
+
cursor?: string;
|
|
3764
|
+
};
|
|
3765
|
+
header?: never;
|
|
3766
|
+
path?: never;
|
|
3767
|
+
cookie?: never;
|
|
3768
|
+
};
|
|
3769
|
+
requestBody?: never;
|
|
3770
|
+
responses: {
|
|
3771
|
+
200: components["responses"]["OkEnvelope"];
|
|
3772
|
+
/** @description invalid_query */
|
|
3773
|
+
400: {
|
|
3774
|
+
headers: {
|
|
3775
|
+
[name: string]: unknown;
|
|
3776
|
+
};
|
|
3777
|
+
content?: never;
|
|
3778
|
+
};
|
|
3779
|
+
};
|
|
3780
|
+
};
|
|
3781
|
+
replayTrace: {
|
|
3782
|
+
parameters: {
|
|
3783
|
+
query?: never;
|
|
3784
|
+
header?: never;
|
|
3785
|
+
path: {
|
|
3786
|
+
trace_id: string;
|
|
3787
|
+
};
|
|
3788
|
+
cookie?: never;
|
|
3789
|
+
};
|
|
3790
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
3791
|
+
responses: {
|
|
3792
|
+
200: components["responses"]["OkEnvelope"];
|
|
3793
|
+
/** @description trace_not_found / legacy_trace_not_available */
|
|
3794
|
+
404: {
|
|
3795
|
+
headers: {
|
|
3796
|
+
[name: string]: unknown;
|
|
3797
|
+
};
|
|
3798
|
+
content?: never;
|
|
3799
|
+
};
|
|
3800
|
+
/** @description trace_in_flight (no terminal outcome recorded yet) */
|
|
3801
|
+
409: {
|
|
3802
|
+
headers: {
|
|
3803
|
+
[name: string]: unknown;
|
|
3804
|
+
};
|
|
3805
|
+
content?: never;
|
|
3806
|
+
};
|
|
3807
|
+
};
|
|
3808
|
+
};
|
|
3809
|
+
getTraceBundle: {
|
|
3810
|
+
parameters: {
|
|
3811
|
+
query?: never;
|
|
3812
|
+
header?: never;
|
|
3813
|
+
path: {
|
|
3814
|
+
trace_id: string;
|
|
3815
|
+
};
|
|
3816
|
+
cookie?: never;
|
|
3817
|
+
};
|
|
3818
|
+
requestBody?: never;
|
|
3819
|
+
responses: {
|
|
3820
|
+
/** @description application/gzip bundle */
|
|
3821
|
+
200: {
|
|
3822
|
+
headers: {
|
|
3823
|
+
[name: string]: unknown;
|
|
3824
|
+
};
|
|
3825
|
+
content: {
|
|
3826
|
+
"application/gzip": string;
|
|
3827
|
+
};
|
|
3828
|
+
};
|
|
3829
|
+
/** @description trace_not_found / legacy_trace_not_available */
|
|
3830
|
+
404: {
|
|
3831
|
+
headers: {
|
|
3832
|
+
[name: string]: unknown;
|
|
3833
|
+
};
|
|
3834
|
+
content?: never;
|
|
3835
|
+
};
|
|
3836
|
+
/** @description trace_in_flight (no terminal outcome) */
|
|
3837
|
+
409: {
|
|
3838
|
+
headers: {
|
|
3839
|
+
[name: string]: unknown;
|
|
3840
|
+
};
|
|
3841
|
+
content?: never;
|
|
3842
|
+
};
|
|
3843
|
+
/** @description bundle_too_large (>200 MB after compression) */
|
|
3844
|
+
422: {
|
|
3845
|
+
headers: {
|
|
3846
|
+
[name: string]: unknown;
|
|
3847
|
+
};
|
|
3848
|
+
content?: never;
|
|
3849
|
+
};
|
|
3850
|
+
};
|
|
3851
|
+
};
|
|
3852
|
+
getAuditEvidenceBundle: {
|
|
3853
|
+
parameters: {
|
|
3854
|
+
query?: {
|
|
3855
|
+
/** @description Inclusive lower `seq` bound (non-negative integer). */
|
|
3856
|
+
from?: number;
|
|
3857
|
+
/** @description Inclusive upper `seq` bound (non-negative integer; must be >= `from`). */
|
|
3858
|
+
to?: number;
|
|
3859
|
+
};
|
|
3860
|
+
header?: never;
|
|
3861
|
+
path: {
|
|
3862
|
+
/** @description The event log whose hash-chain to export. */
|
|
3863
|
+
log: "state_machine" | "flows";
|
|
3864
|
+
};
|
|
3865
|
+
cookie?: never;
|
|
3866
|
+
};
|
|
3867
|
+
requestBody?: never;
|
|
3868
|
+
responses: {
|
|
3869
|
+
/** @description application/gzip bundle */
|
|
3870
|
+
200: {
|
|
3871
|
+
headers: {
|
|
3872
|
+
[name: string]: unknown;
|
|
3873
|
+
};
|
|
3874
|
+
content: {
|
|
3875
|
+
"application/gzip": string;
|
|
3876
|
+
};
|
|
3877
|
+
};
|
|
3878
|
+
/** @description invalid_range — `from`/`to` not non-negative integers, or `from > to` */
|
|
3879
|
+
400: {
|
|
3880
|
+
headers: {
|
|
3881
|
+
[name: string]: unknown;
|
|
3882
|
+
};
|
|
3883
|
+
content?: never;
|
|
3884
|
+
};
|
|
3885
|
+
/** @description unknown_log (unsupported `{log}`) / evidence_not_found (unauthorized) */
|
|
3886
|
+
404: {
|
|
3887
|
+
headers: {
|
|
3888
|
+
[name: string]: unknown;
|
|
3889
|
+
};
|
|
3890
|
+
content?: never;
|
|
3891
|
+
};
|
|
3892
|
+
/** @description payload_too_large — selected range exceeds the per-bundle event cap; narrow via `from`/`to` */
|
|
3893
|
+
413: {
|
|
3894
|
+
headers: {
|
|
3895
|
+
[name: string]: unknown;
|
|
3896
|
+
};
|
|
3897
|
+
content?: never;
|
|
3898
|
+
};
|
|
3899
|
+
};
|
|
3900
|
+
};
|
|
3901
|
+
listAuditLog: {
|
|
3902
|
+
parameters: {
|
|
3903
|
+
query?: {
|
|
3904
|
+
/** @description Inclusive lower bound on `created_at` (ISO date-time). */
|
|
3905
|
+
from?: string;
|
|
3906
|
+
/** @description Inclusive upper bound on `created_at` (ISO date-time; must be >= `from`). */
|
|
3907
|
+
to?: string;
|
|
3908
|
+
limit?: number;
|
|
3909
|
+
/** @description Opaque pagination cursor from a prior response's `next_cursor`. */
|
|
3910
|
+
cursor?: string;
|
|
3911
|
+
/** @description `binding_violations` only — filter by entity name. */
|
|
3912
|
+
entity?: string;
|
|
3913
|
+
/** @description `binding_violations` only — filter by field name. */
|
|
3914
|
+
field?: string;
|
|
3915
|
+
/** @description `binding_violations` only — filter by binding mode. */
|
|
3916
|
+
binding_mode?: "bind" | "assert" | "immutable";
|
|
3917
|
+
/** @description `topic_refusals` only — filter by refusal category slug. */
|
|
3918
|
+
category?: string;
|
|
3919
|
+
/** @description `topic_refusals` only — filter by decision reason. */
|
|
3920
|
+
reason?: "matched" | "no_verdict" | "unscored";
|
|
3921
|
+
/** @description `topic_refusals` only — filter by verdict (currently always `hard_refusal`). */
|
|
3922
|
+
verdict?: string;
|
|
3923
|
+
};
|
|
3924
|
+
header?: never;
|
|
3925
|
+
path: {
|
|
3926
|
+
/** @description The audit row-table to list. */
|
|
3927
|
+
log: "binding_violations" | "topic_refusals";
|
|
3928
|
+
};
|
|
3929
|
+
cookie?: never;
|
|
3930
|
+
};
|
|
3931
|
+
requestBody?: never;
|
|
3932
|
+
responses: {
|
|
3933
|
+
200: components["responses"]["OkEnvelope"];
|
|
3934
|
+
/** @description invalid_query (malformed filter/cursor) / invalid_range (`from > to`) */
|
|
3935
|
+
400: {
|
|
3936
|
+
headers: {
|
|
3937
|
+
[name: string]: unknown;
|
|
3938
|
+
};
|
|
3939
|
+
content?: never;
|
|
3940
|
+
};
|
|
3941
|
+
/** @description audit_log_not_found — unknown `{log}` OR unauthorized (opaque, indistinguishable) */
|
|
3942
|
+
404: {
|
|
3943
|
+
headers: {
|
|
3944
|
+
[name: string]: unknown;
|
|
3945
|
+
};
|
|
3946
|
+
content?: never;
|
|
3947
|
+
};
|
|
3948
|
+
};
|
|
3949
|
+
};
|
|
3950
|
+
getTrustKeysManifest: {
|
|
3951
|
+
parameters: {
|
|
3952
|
+
query?: never;
|
|
3953
|
+
header?: never;
|
|
3954
|
+
path?: never;
|
|
3955
|
+
cookie?: never;
|
|
3956
|
+
};
|
|
3957
|
+
requestBody?: never;
|
|
3958
|
+
responses: {
|
|
3959
|
+
200: components["responses"]["OkEnvelope"];
|
|
3960
|
+
};
|
|
3961
|
+
};
|
|
3962
|
+
runtimeImportsSnapshot: {
|
|
3963
|
+
parameters: {
|
|
3964
|
+
query?: never;
|
|
3965
|
+
header?: never;
|
|
3966
|
+
path?: never;
|
|
3967
|
+
cookie?: never;
|
|
3968
|
+
};
|
|
3969
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
3970
|
+
responses: {
|
|
3971
|
+
200: components["responses"]["OkEnvelope"];
|
|
3972
|
+
};
|
|
3973
|
+
};
|
|
3974
|
+
bulkImportRuntimeRecords: {
|
|
3975
|
+
parameters: {
|
|
3976
|
+
query?: never;
|
|
3977
|
+
header?: never;
|
|
3978
|
+
path: {
|
|
3979
|
+
entity_name: components["parameters"]["EntityNamePath"];
|
|
3980
|
+
};
|
|
3981
|
+
cookie?: never;
|
|
3982
|
+
};
|
|
3983
|
+
requestBody: components["requestBodies"]["JsonObject"];
|
|
3984
|
+
responses: {
|
|
3985
|
+
200: components["responses"]["OkEnvelope"];
|
|
3986
|
+
};
|
|
3987
|
+
};
|
|
3988
|
+
listReceipts: {
|
|
3989
|
+
parameters: {
|
|
3990
|
+
query?: {
|
|
3991
|
+
/** @description Filter to one signal; omitted = all three. */
|
|
3992
|
+
signal?: "refusal" | "binding_violation" | "validation_violation";
|
|
3993
|
+
/** @description Filter by conversation/request correlation id. */
|
|
3994
|
+
trace_id?: string;
|
|
3995
|
+
/** @description Inclusive lower bound on `created_at` (ISO date-time). */
|
|
3996
|
+
from?: string;
|
|
3997
|
+
/** @description Inclusive upper bound on `created_at` (ISO date-time; must be >= `from`). */
|
|
3998
|
+
to?: string;
|
|
3999
|
+
limit?: number;
|
|
4000
|
+
/** @description Opaque pagination cursor from a prior response's `next_cursor`. */
|
|
4001
|
+
cursor?: string;
|
|
4002
|
+
};
|
|
4003
|
+
header?: never;
|
|
4004
|
+
path?: never;
|
|
4005
|
+
cookie?: never;
|
|
4006
|
+
};
|
|
4007
|
+
requestBody?: never;
|
|
4008
|
+
responses: {
|
|
4009
|
+
200: components["responses"]["OkEnvelope"];
|
|
4010
|
+
/** @description invalid_query (unknown signal / malformed cursor / bad limit) / invalid_range (`from > to`) */
|
|
4011
|
+
400: {
|
|
4012
|
+
headers: {
|
|
4013
|
+
[name: string]: unknown;
|
|
4014
|
+
};
|
|
4015
|
+
content?: never;
|
|
4016
|
+
};
|
|
4017
|
+
};
|
|
4018
|
+
};
|
|
4019
|
+
}
|
|
4020
|
+
//# sourceMappingURL=runtime.d.ts.map
|