{"openapi":"3.1.0","info":{"title":"AI Runtime Governor","description":"Runtime governance, risk, and safety layer for AI agents. Intercepts tool calls and applies layered policy + neuro-risk evaluation with full RBAC, audit trail, and SURGE token governance integration.\n\n## Authentication\n\nAll protected endpoints accept one of:\n- **Bearer token**: `Authorization: Bearer <jwt>`\n- **API key**: `X-API-Key: airg_<key>`\n- **Query param** (SSE only): `?token=<jwt>`\n\n## Rate Limits\n\n| Endpoint | Limit |\n|----------|-------|\n| `POST /auth/login` | 5 req/min per IP |\n| `POST /actions/evaluate` | 120 req/min per token |\n| All other endpoints | 60 req/min per token |\n","termsOfService":"https://app.airg.nov-tia.com/terms","contact":{"name":"AI Runtime Governor","url":"https://app.airg.nov-tia.com/","email":"support@nov-tia.com"},"license":{"name":"BSL 1.1","url":"https://github.com/othnielObasi/ai-runtime-governor-core/blob/main/LICENSE"},"version":"0.4.0"},"servers":[{"url":"https://api.airg.nov-tia.com","description":"Production"}],"paths":{"/auth/login":{"post":{"tags":["auth"],"summary":"Login","description":"Authenticate with username/password and receive a JWT access token.\n\nRate limited to 5 attempts per minute per IP. Failed attempts are logged\nwith IP and user-agent for security auditing.","operationId":"login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/signup":{"post":{"tags":["auth"],"summary":"Signup","description":"Register a new user account and receive a JWT access token.\n\nCreates a new organization, provisions a SURGE wallet, and assigns\nthe default 'viewer' role. Disabled when GOVERNOR_REGISTRATION_ENABLED=false.","operationId":"signup_auth_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/me":{"get":{"tags":["auth"],"summary":"Me","description":"Return the authenticated user's profile, permissions, organization, and wallet info.","operationId":"me_auth_me_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/users":{"get":{"tags":["auth"],"summary":"List Users","description":"Superadmin sees all users; admin sees only their org's users.","operationId":"list_users_auth_users_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserRead"},"title":"Response List Users Auth Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["auth"],"summary":"Create User","description":"Create a new user (admin+). Org-admins create within their org; superadmins can create globally.","operationId":"create_user_auth_users_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/users/{user_id}":{"patch":{"tags":["auth"],"summary":"Update User","description":"Update a user's name, role, active status, or password (admin+).","operationId":"update_user_auth_users__user_id__patch","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["auth"],"summary":"Revoke User","description":"Soft-delete (deactivate) a user. Preserves audit trail; user cannot log in.","operationId":"revoke_user_auth_users__user_id__delete","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/users/{user_id}/rotate-key":{"post":{"tags":["auth"],"summary":"Rotate Api Key","description":"Rotate a user's API key (admin+). Returns the new key once; store it securely.","operationId":"rotate_api_key_auth_users__user_id__rotate_key_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyRotatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/login-history":{"get":{"tags":["auth"],"summary":"All Login History","description":"Return recent login history across all users (superadmin only).","operationId":"all_login_history_auth_login_history_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoginHistoryRead"},"title":"Response All Login History Auth Login History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/users/{user_id}/login-history":{"get":{"tags":["auth"],"summary":"User Login History","description":"Return login history for a specific user (superadmin only).","operationId":"user_login_history_auth_users__user_id__login_history_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoginHistoryRead"},"title":"Response User Login History Auth Users  User Id  Login History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/me/rotate-key":{"post":{"tags":["auth"],"summary":"Rotate Own Key","description":"Let authenticated users regenerate their own API key.","operationId":"rotate_own_key_auth_me_rotate_key_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyRotatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/me/keys":{"get":{"tags":["auth"],"summary":"List My Keys","description":"List all API keys for the current user.","operationId":"list_my_keys_auth_me_keys_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyRead"},"title":"Response List My Keys Auth Me Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["auth"],"summary":"Create My Key","description":"Generate a new API key with an optional label.","operationId":"create_my_key_auth_me_keys_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate","default":{"label":"default"}}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/me/keys/{key_id}":{"delete":{"tags":["auth"],"summary":"Revoke My Key","description":"Revoke (deactivate) one of your API keys.","operationId":"revoke_my_key_auth_me_keys__key_id__delete","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/permissions":{"get":{"tags":["Roles"],"summary":"List Permissions","description":"List all available permissions in the system.","operationId":"list_permissions_auth_permissions_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"},"title":"Response List Permissions Auth Permissions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/roles":{"get":{"tags":["Roles"],"summary":"List Roles","description":"List all roles (system + custom).","operationId":"list_roles_auth_roles_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RoleResponse"},"title":"Response List Roles Auth Roles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Roles"],"summary":"Create Role","description":"Create a new custom role.","operationId":"create_role_auth_roles_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/roles/{role_name}":{"patch":{"tags":["Roles"],"summary":"Update Role","description":"Update a custom role. System roles cannot be modified.","operationId":"update_role_auth_roles__role_name__patch","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"role_name","in":"path","required":true,"schema":{"type":"string","title":"Role Name"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Roles"],"summary":"Delete Role","description":"Delete a custom role. System roles cannot be deleted.","operationId":"delete_role_auth_roles__role_name__delete","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"role_name","in":"path","required":true,"schema":{"type":"string","title":"Role Name"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/actions/evaluate":{"post":{"tags":["actions"],"summary":"Evaluate Action Route","description":"Evaluate a tool call and return a governance decision.\n\nRequires operator or admin credentials (JWT or API key).\nAlso generates a SURGE governance receipt for on-chain attestation.\nWhen trace_id is present in context, a 'governance' span is auto-created\nin the trace for full agent lifecycle visibility.\n\nIf SURGE fee gating is enabled, the agent's wallet balance is checked\nbefore evaluation. Returns 402 Payment Required if balance ≤ 0.\n\nPre-evaluation gates:\n  - Budget enforcer: blocks if agent has blown through eval quotas.\nPost-evaluation hooks:\n  - Metrics recording (Prometheus counters + latency histogram)\n  - Agent fingerprinting (record + deviation check)\n  - Impact assessment recording\n  - SIEM dispatch for high-severity events","operationId":"evaluate_action_route_actions_evaluate_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionDecision"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/actions":{"get":{"tags":["actions"],"summary":"List Actions","description":"List recent governed actions with optional filters and pagination metadata.","operationId":"list_actions_actions_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of records to skip for pagination","default":0,"title":"Offset"},"description":"Number of records to skip for pagination"},{"name":"tool","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by tool name","title":"Tool"},"description":"Filter by tool name"},{"name":"decision","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by decision (allow/block/review)","title":"Decision"},"description":"Filter by decision (allow/block/review)"},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by agent_id","title":"Agent Id"},"description":"Filter by agent_id"},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ActionLogRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies":{"get":{"tags":["policies"],"summary":"List Policies","description":"List all dynamic (DB-stored) policies.","operationId":"list_policies_policies_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"If true, return only active policies.","default":false,"title":"Active Only"},"description":"If true, return only active policies."},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PolicyRead"},"title":"Response List Policies Policies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["policies"],"summary":"Create Policy","description":"Create a new dynamic policy.","operationId":"create_policy_policies_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/all":{"get":{"tags":["policies"],"summary":"List All Policies","description":"Return both base YAML policies and dynamic DB policies combined.","operationId":"list_all_policies_policies_all_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List All Policies Policies All Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/export/all":{"get":{"tags":["policies"],"summary":"Export Policies","description":"Export all dynamic policies as JSON (for backup / transfer).","operationId":"export_policies_policies_export_all_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PolicyRead"},"title":"Response Export Policies Policies Export All Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/template":{"get":{"tags":["policies"],"summary":"Download Template","description":"Return a policy template that users can fill in and upload.","operationId":"download_template_policies_template_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Download Template Policies Template Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/import":{"post":{"tags":["policies"],"summary":"Import Policies","description":"Bulk import policies from a JSON template.\n\nExpects {\"policies\": [{ policy_id, description, severity, action, match_json }, ...]}.\nSkips policies whose ID already exists. Returns counts of created/skipped/failed.","operationId":"import_policies_policies_import_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Import Policies Policies Import Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/audit/trail":{"get":{"tags":["policies"],"summary":"List Policy Audit","description":"Query the immutable policy change audit trail.","operationId":"list_policy_audit_policies_audit_trail_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"policy_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by policy ID","title":"Policy Id"},"description":"Filter by policy ID"},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter: create|edit|archive|activate|delete|import|toggle|bulk_archive|bulk_activate|bulk_delete","title":"Action"},"description":"Filter: create|edit|archive|activate|delete|import|toggle|bulk_archive|bulk_activate|bulk_delete"},{"name":"username","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by who made the change","title":"Username"},"description":"Filter by who made the change"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PolicyAuditRead"},"title":"Response List Policy Audit Policies Audit Trail Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/audit/stats":{"get":{"tags":["policies"],"summary":"Policy Audit Stats","description":"Summary statistics for the policy audit trail.","operationId":"policy_audit_stats_policies_audit_stats_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Policy Audit Stats Policies Audit Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/simulate":{"post":{"tags":["policies"],"summary":"Simulate Policy","description":"Simulate a draft policy against a sample action without persisting anything.\n\nReturns whether the draft policy matches the sample action, what\nexisting policies would also match, and the combined decision.","operationId":"simulate_policy_policies_simulate_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/severity-weights":{"get":{"tags":["policies"],"summary":"Get Severity Weights","description":"Get the effective severity rubric weights for the caller's organization.\n\nReturns the global defaults or org-specific overrides if configured.","operationId":"get_severity_weights_policies_severity_weights_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Severity Weights Policies Severity Weights Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["policies"],"summary":"Update Severity Weights","description":"Set per-organization severity rubric weights.\n\nThe three weights must sum to 1.0 (±0.001). Each must be in [0.0, 1.0].","operationId":"update_severity_weights_policies_severity_weights_put","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeverityWeightsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Severity Weights Policies Severity Weights Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/governance-mode":{"get":{"tags":["policies"],"summary":"Get Governance Mode Endpoint","description":"Get the governance mode for the caller's organization.","operationId":"get_governance_mode_endpoint_policies_governance_mode_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Governance Mode Endpoint Policies Governance Mode Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["policies"],"summary":"Update Governance Mode","description":"Switch the organization's governance mode.\n\nModes:\n  - allow-by-default: unmatched actions are allowed (current default)\n  - deny-by-default: unmatched actions are blocked (zero-trust)\n  - audit-only: all actions are allowed but logged for review\n\nSwitching to deny-by-default requires at least one 'allow' policy\nto exist for the org (prevents accidental lockout).","operationId":"update_governance_mode_policies_governance_mode_patch","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernanceModeUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Governance Mode Policies Governance Mode Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/allowlist":{"post":{"tags":["policies"],"summary":"Create Allowlist","description":"Bulk-create allow policies for specified tools.\n\nUseful when switching to deny-by-default mode — creates one allow\npolicy per tool so your agents don't get locked out.","operationId":"create_allowlist_policies_allowlist_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllowlistRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Allowlist Policies Allowlist Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/{policy_id}":{"get":{"tags":["policies"],"summary":"Get Policy","description":"Get a single dynamic policy by ID.","operationId":"get_policy_policies__policy_id__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","title":"Policy Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["policies"],"summary":"Update Policy","description":"Partially update an existing dynamic policy.\n\nOnly the fields provided in the request body are changed.","operationId":"update_policy_policies__policy_id__patch","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","title":"Policy Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["policies"],"summary":"Delete Policy","description":"Delete a dynamic policy by its ID.","operationId":"delete_policy_policies__policy_id__delete","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","title":"Policy Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Policy Policies  Policy Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/{policy_id}/toggle":{"patch":{"tags":["policies"],"summary":"Toggle Policy","description":"Toggle a policy's active state.","operationId":"toggle_policy_policies__policy_id__toggle_patch","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","title":"Policy Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/{policy_id}/archive":{"patch":{"tags":["policies"],"summary":"Archive Policy","description":"Explicitly archive a policy (set is_active=False). Idempotent.\n\nArchived policies are preserved in the database but excluded from\nthe active evaluation pipeline. They can be re-activated at any time.","operationId":"archive_policy_policies__policy_id__archive_patch","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","title":"Policy Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/{policy_id}/activate":{"patch":{"tags":["policies"],"summary":"Activate Policy","description":"Explicitly activate an archived policy (set is_active=True). Idempotent.\n\nRe-activates a previously archived policy, putting it back into\nthe live evaluation pipeline immediately.","operationId":"activate_policy_policies__policy_id__activate_patch","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","title":"Policy Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/{policy_id}/versions":{"get":{"tags":["policies"],"summary":"List Policy Versions","description":"List all saved versions of a policy (newest first).","operationId":"list_policy_versions_policies__policy_id__versions_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","title":"Policy Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PolicyVersionRead"},"title":"Response List Policy Versions Policies  Policy Id  Versions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/{policy_id}/restore/{version}":{"post":{"tags":["policies"],"summary":"Restore Policy Version","description":"Restore a policy to a previous version.\n\nCreates a *new* version with the content from the specified historical\nversion — history is never rewritten.","operationId":"restore_policy_version_policies__policy_id__restore__version__post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","title":"Policy Id"}},{"name":"version","in":"path","required":true,"schema":{"type":"integer","title":"Version"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/{policy_id}/approve":{"post":{"tags":["policies"],"summary":"Approve Policy","description":"Approve a draft policy, transitioning it to active status.\n\nOnly policies with status='draft' can be approved.","operationId":"approve_policy_policies__policy_id__approve_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","title":"Policy Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/policies/{policy_id}/reject":{"post":{"tags":["policies"],"summary":"Reject Policy","description":"Reject a draft policy. Requires a mandatory reason.\n\nRejected policies are immutable — create a new policy to try again.","operationId":"reject_policy_policies__policy_id__reject_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","title":"Policy Id"}},{"name":"reason","in":"query","required":true,"schema":{"type":"string","minLength":10,"description":"Mandatory rejection reason.","title":"Reason"},"description":"Mandatory rejection reason."},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/summary/overview":{"get":{"tags":["summary"],"summary":"Governance Summary","description":"Rich governance summary.\n\nReturns per-decision counts, average risk score, top blocked tool,\nand a pre-formatted narrative message.","operationId":"governance_summary_summary_overview_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SummaryOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/status":{"get":{"tags":["admin"],"summary":"Get Status","description":"Return current governor runtime status.","operationId":"get_status_admin_status_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernorStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/kill":{"post":{"tags":["admin"],"summary":"Enable Kill Switch","description":"Activate the global kill switch – blocks all subsequent actions.","operationId":"enable_kill_switch_admin_kill_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernorStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/resume":{"post":{"tags":["admin"],"summary":"Disable Kill Switch","description":"Deactivate the global kill switch – resume normal evaluation.","operationId":"disable_kill_switch_admin_resume_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernorStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/quarantine/{agent_id}":{"post":{"tags":["admin"],"summary":"Quarantine Agent","description":"Quarantine a specific agent — blocks only that agent's actions.","operationId":"quarantine_agent_admin_quarantine__agent_id__post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuarantineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin"],"summary":"Get Quarantine Status","description":"Check if a specific agent is currently quarantined.","operationId":"get_quarantine_status_admin_quarantine__agent_id__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuarantineStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/unquarantine/{agent_id}":{"post":{"tags":["admin"],"summary":"Unquarantine Agent","description":"Remove quarantine from a specific agent — resume its evaluation.","operationId":"unquarantine_agent_admin_unquarantine__agent_id__post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuarantineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/quarantine":{"get":{"tags":["admin"],"summary":"List Quarantined","description":"List all currently quarantined agent IDs.","operationId":"list_quarantined_admin_quarantine_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuarantineListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/budget/reset":{"post":{"tags":["admin"],"summary":"Reset Budget Circuit Breaker","description":"Reset the budget enforcer's circuit breaker for an agent.\n\nThis clears consecutive-block counters and disengages the circuit breaker\nso the agent can resume evaluations immediately.","operationId":"reset_budget_circuit_breaker_admin_budget_reset_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"type":"string","description":"Agent whose circuit breaker to reset (default: anonymous)","default":"anonymous","title":"Agent Id"},"description":"Agent whose circuit breaker to reset (default: anonymous)"},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/budget/status":{"get":{"tags":["admin"],"summary":"Budget Status","description":"View budget enforcer status for all tracked agents.","operationId":"budget_status_admin_budget_status_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/status":{"get":{"tags":["surge"],"summary":"Surge Status","description":"Return current SURGE governance integration status.","operationId":"surge_status_surge_status_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SurgeGovernanceStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/receipts":{"get":{"tags":["surge"],"summary":"List Receipts","description":"List recent governance receipts (newest first, org-scoped).","operationId":"list_receipts_surge_receipts_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GovernanceReceipt"},"title":"Response List Receipts Surge Receipts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/receipts/{receipt_id}":{"get":{"tags":["surge"],"summary":"Get Receipt","description":"Retrieve a specific governance receipt by ID.","operationId":"get_receipt_surge_receipts__receipt_id__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernanceReceipt"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/policies/stake":{"post":{"tags":["surge"],"summary":"Stake Policy","description":"Stake $SURGE tokens on a policy. DB-persisted.","operationId":"stake_policy_surge_policies_stake_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StakePolicyRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyStake"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/policies/staked":{"get":{"tags":["surge"],"summary":"List Staked Policies","description":"List all policies with $SURGE token stakes.","operationId":"list_staked_policies_surge_policies_staked_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PolicyStake"},"title":"Response List Staked Policies Surge Policies Staked Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/policies/stake/{policy_id}":{"delete":{"tags":["surge"],"summary":"Unstake Policy","description":"Remove a policy stake (returns $SURGE to staker).","operationId":"unstake_policy_surge_policies_stake__policy_id__delete","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","title":"Policy Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Unstake Policy Surge Policies Stake  Policy Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/wallets":{"post":{"tags":["surge"],"summary":"Create Wallet","description":"Create a virtual SURGE wallet for an agent/org.","operationId":"create_wallet_surge_wallets_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["surge"],"summary":"List Wallets","description":"List virtual SURGE wallets scoped to the user's organization.","operationId":"list_wallets_surge_wallets_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WalletRead"},"title":"Response List Wallets Surge Wallets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/wallets/{wallet_id}":{"get":{"tags":["surge"],"summary":"Get Wallet","description":"Get a specific wallet by ID (org-scoped).","operationId":"get_wallet_surge_wallets__wallet_id__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string","title":"Wallet Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/wallets/{wallet_id}/topup":{"post":{"tags":["surge"],"summary":"Topup Wallet","description":"Deposit $SURGE into a wallet (simulates on-chain deposit).","operationId":"topup_wallet_surge_wallets__wallet_id__topup_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string","title":"Wallet Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletTopUp"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/actions/stream":{"get":{"tags":["stream"],"summary":"Real-time action event stream (SSE)","description":"Opens a Server-Sent Events connection that streams governance decisions in real time. Every `POST /actions/evaluate` call triggers an `action_evaluated` event on this stream.","operationId":"stream_actions_actions_stream_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"SSE stream of action events","content":{"text/event-stream":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/actions/stream/status":{"get":{"tags":["stream"],"summary":"Stream connection status","description":"Returns the number of active SSE subscribers.","operationId":"stream_status_actions_stream_status_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/traces/ingest":{"post":{"tags":["traces"],"summary":"Ingest Spans","description":"Ingest a batch of trace spans.\n\nSpans can come from any agent framework — the only requirement is a\nconsistent trace_id to group spans into a trace. Duplicate span_ids\nare silently skipped (idempotent).","operationId":"ingest_spans_traces_ingest_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpanBatchCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ingest Spans Traces Ingest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/traces":{"get":{"tags":["traces"],"summary":"List Traces","description":"List traces with summary information, ordered by most recent first.","operationId":"list_traces_traces_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by agent_id","title":"Agent Id"},"description":"Filter by agent_id"},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by session_id","title":"Session Id"},"description":"Filter by session_id"},{"name":"has_blocks","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Only traces that triggered governance blocks","title":"Has Blocks"},"description":"Only traces that triggered governance blocks"},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TraceListItem"},"title":"Response List Traces Traces Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/traces/{trace_id}":{"get":{"tags":["traces"],"summary":"Get Trace","description":"Get a full trace with all spans and correlated governance decisions.\n\nMerges agent-reported spans (from /traces/ingest) with governance\ndecisions (from /actions/evaluate) that share the same trace_id.","operationId":"get_trace_traces__trace_id__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","title":"Trace Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["traces"],"summary":"Delete Trace","description":"Delete all spans for a trace. Governance decisions in action_logs are not deleted.","operationId":"delete_trace_traces__trace_id__delete","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"trace_id","in":"path","required":true,"schema":{"type":"string","title":"Trace Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Trace Traces  Trace Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/escalation/config":{"get":{"tags":["escalation"],"summary":"List Configs","description":"List all escalation configurations (global + per-agent).","operationId":"list_configs_escalation_config_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EscalationConfigRead"},"title":"Response List Configs Escalation Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["escalation"],"summary":"Create Config","description":"Create an escalation configuration. Scope must be unique.","operationId":"create_config_escalation_config_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationConfigCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationConfigRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/escalation/config/{scope}":{"get":{"tags":["escalation"],"summary":"Get Config","description":"Get escalation config for a specific scope ('*' or 'agent:<id>').","operationId":"get_config_escalation_config__scope__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"scope","in":"path","required":true,"schema":{"type":"string","title":"Scope"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationConfigRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["escalation"],"summary":"Update Config","description":"Update escalation config for a scope. Only provided fields are changed.","operationId":"update_config_escalation_config__scope__put","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"scope","in":"path","required":true,"schema":{"type":"string","title":"Scope"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationConfigUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationConfigRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["escalation"],"summary":"Delete Config","description":"Delete an escalation configuration.","operationId":"delete_config_escalation_config__scope__delete","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"scope","in":"path","required":true,"schema":{"type":"string","title":"Scope"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/escalation/queue":{"get":{"tags":["escalation"],"summary":"List Queue","description":"List escalation events (review queue). Default: most recent first.","operationId":"list_queue_escalation_queue_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter: pending|approved|rejected|expired|auto_resolved","title":"Status"},"description":"Filter: pending|approved|rejected|expired|auto_resolved"},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter: critical|high|medium|low","title":"Severity"},"description":"Filter: critical|high|medium|low"},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"trigger","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EscalationEventRead"},"title":"Response List Queue Escalation Queue Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/escalation/queue/stats":{"get":{"tags":["escalation"],"summary":"Queue Stats","description":"Summary statistics for the escalation review queue.","operationId":"queue_stats_escalation_queue_stats_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__escalation__routes__EscalationStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/escalation/queue/{event_id}":{"get":{"tags":["escalation"],"summary":"Get Event","description":"Get a single escalation event by ID.","operationId":"get_event_escalation_queue__event_id__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationEventRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/escalation/queue/{event_id}/resolve":{"post":{"tags":["escalation"],"summary":"Resolve Event","description":"Approve or reject a pending escalation event.\n\n- approved: Operator confirms the action can proceed (or was investigated)\n- rejected: Operator confirms the block was correct and no further action needed","operationId":"resolve_event_escalation_queue__event_id__resolve_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationResolve"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationEventRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/escalation/queue/bulk-resolve":{"post":{"tags":["escalation"],"summary":"Bulk Resolve","description":"Resolve multiple escalation events at once.","operationId":"bulk_resolve_escalation_queue_bulk_resolve_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_bulk_resolve_escalation_queue_bulk_resolve_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Bulk Resolve Escalation Queue Bulk Resolve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/escalation/queue/{event_id}/hold":{"post":{"tags":["escalation"],"summary":"Hold For Review","description":"Long-poll endpoint for SDK review_mode='hold'.\n\nBlocks until the escalation event is resolved (approved/rejected/expired)\nor the timeout is reached. The SDK calls this after receiving a 'review'\ndecision to wait for a human operator to act.\n\nReturns the final status of the event and whether the wait timed out.","operationId":"hold_for_review_escalation_queue__event_id__hold_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}},{"name":"timeout_seconds","in":"query","required":false,"schema":{"type":"integer","maximum":300,"minimum":1,"description":"Max seconds to wait","default":60,"title":"Timeout Seconds"},"description":"Max seconds to wait"},{"name":"poll_interval","in":"query","required":false,"schema":{"type":"number","maximum":5.0,"minimum":0.5,"description":"Seconds between polls","default":1.0,"title":"Poll Interval"},"description":"Seconds between polls"},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoldResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/escalation/webhooks":{"get":{"tags":["escalation"],"summary":"List Webhooks","description":"List all registered escalation webhooks.","operationId":"list_webhooks_escalation_webhooks_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookRead"},"title":"Response List Webhooks Escalation Webhooks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["escalation"],"summary":"Create Webhook","description":"Register a new escalation webhook endpoint.","operationId":"create_webhook_escalation_webhooks_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/escalation/webhooks/{webhook_id}":{"put":{"tags":["escalation"],"summary":"Update Webhook","description":"Update a webhook configuration.","operationId":"update_webhook_escalation_webhooks__webhook_id__put","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer","title":"Webhook Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["escalation"],"summary":"Delete Webhook","description":"Delete a webhook.","operationId":"delete_webhook_escalation_webhooks__webhook_id__delete","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer","title":"Webhook Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notifications":{"get":{"tags":["notifications"],"summary":"List Channels","description":"List all notification channels.","operationId":"list_channels_notifications_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NotificationChannelRead"},"title":"Response List Channels Notifications Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["notifications"],"summary":"Create Channel","description":"Register a new notification channel.","operationId":"create_channel_notifications_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notifications/{channel_id}":{"get":{"tags":["notifications"],"summary":"Get Channel","description":"Get a single notification channel by ID.","operationId":"get_channel_notifications__channel_id__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"integer","title":"Channel Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["notifications"],"summary":"Update Channel","description":"Update a notification channel configuration.","operationId":"update_channel_notifications__channel_id__patch","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"integer","title":"Channel Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["notifications"],"summary":"Delete Channel","description":"Delete a notification channel.","operationId":"delete_channel_notifications__channel_id__delete","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"integer","title":"Channel Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Channel Notifications  Channel Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notifications/{channel_id}/test":{"post":{"tags":["notifications"],"summary":"Test Channel","description":"Send a test notification through a channel to verify configuration.","operationId":"test_channel_notifications__channel_id__test_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"integer","title":"Channel Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Test Channel Notifications  Channel Id  Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/actions/verify":{"post":{"tags":["verification"],"summary":"Verify Action Route","description":"Verify a tool execution result against the governance safety model.\n\nThe agent calls this AFTER executing a tool to submit the actual result.\nThe verification engine runs 8 independent checks:\n\n1. **Credential leak scan** — secrets, API keys, tokens in output\n2. **Destructive output detection** — mass deletion, schema drops, etc.\n3. **Scope compliance** — result consistent with allowed scope\n4. **Diff size anomaly** — unexpectedly large changes\n5. **Result-intent alignment** — was a blocked action executed anyway?\n6. **Output injection detection** — prompt injection in tool output\n7. **Independent re-verification** — policy engine re-run on result\n8. **Cross-session drift** — behavioural baseline comparison\n\nReturns one of: `compliant`, `suspicious`, or `violation`.\nViolations may trigger escalation (review queue + notifications).","operationId":"verify_action_route_actions_verify_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/actions/verifications":{"get":{"tags":["verification"],"summary":"List Verifications","description":"List post-execution verification records with optional filters.","operationId":"list_verifications_actions_verifications_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"verdict","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(compliant|violation|suspicious)$"},{"type":"null"}],"title":"Verdict"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_VerificationLogRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/actions/scan-output":{"post":{"tags":["verification"],"summary":"Scan Output Route","description":"Scan agent response text for exfiltration URLs, injection, and PII before sending to users.\n\nThis closes the output-side gap: the governor normally evaluates tool-call\nintents (input), but this endpoint scans the agent's **conversational output**\nfor threats like:\n- URL-based data exfiltration (markdown images, link-preview attacks)\n- Prompt injection patterns embedded in output\n- PII leakage in response text\n\nReturns ``safe=True`` if no threats found, along with individual findings.\nWhen threats are found, ``sanitized_text`` contains the text with dangerous\nURLs redacted.","operationId":"scan_output_route_actions_scan_output_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutputScanInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutputScanResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conversations/turns":{"post":{"tags":["conversations"],"summary":"Create Turn","description":"Record a conversation turn — user prompt, agent reasoning, agent response.\n\nAll text fields (prompt, agent_reasoning, agent_response) are encrypted at\nrest when GOVERNOR_ENCRYPTION_KEY is configured.\n\nRequires operator or admin credentials.","operationId":"create_turn_conversations_turns_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationTurnCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Turn Conversations Turns Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["conversations"],"summary":"List Turns","description":"List conversation turns with optional filters. Text is decrypted on read.","operationId":"list_turns_conversations_turns_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"conversation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by conversation ID","title":"Conversation Id"},"description":"Filter by conversation ID"},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by agent ID","title":"Agent Id"},"description":"Filter by agent ID"},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by session ID","title":"Session Id"},"description":"Filter by session ID"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by user ID","title":"User Id"},"description":"Filter by user ID"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConversationTurnRead"},"title":"Response List Turns Conversations Turns Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conversations/turns/batch":{"post":{"tags":["conversations"],"summary":"Create Turns Batch","description":"Batch-ingest multiple conversation turns in one call.","operationId":"create_turns_batch_conversations_turns_batch_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationTurnBatch"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Turns Batch Conversations Turns Batch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conversations/turns/{turn_id}":{"get":{"tags":["conversations"],"summary":"Get Turn","description":"Get a single conversation turn by ID.","operationId":"get_turn_conversations_turns__turn_id__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"turn_id","in":"path","required":true,"schema":{"type":"integer","title":"Turn Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationTurnRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conversations/{conversation_id}/timeline":{"get":{"tags":["conversations"],"summary":"Conversation Timeline","description":"Return a chronological timeline of conversation turns and governed actions\nfor a conversation, interleaved by timestamp.\n\nThis is the key forensic view — shows exactly:\n  User said X → Agent planned Y → Governor evaluated Z → Agent responded W","operationId":"conversation_timeline_conversations__conversation_id__timeline_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Conversation Timeline Conversations  Conversation Id  Timeline Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/conversations":{"get":{"tags":["conversations"],"summary":"List Conversations","description":"List distinct conversations with turn counts and time range.","operationId":"list_conversations_conversations_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConversationSummary"},"title":"Response List Conversations Conversations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/compliance/clauses":{"get":{"tags":["compliance"],"summary":"List Clauses","description":"List all regulatory clauses across all frameworks.","operationId":"list_clauses_compliance_clauses_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClauseOut"},"title":"Response List Clauses Compliance Clauses Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["compliance"],"summary":"Create Clause","description":"Create a new custom regulatory clause (superadmin only).","operationId":"create_clause_compliance_clauses_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClauseCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClauseOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/compliance/clauses/{framework}":{"get":{"tags":["compliance"],"summary":"List Clauses By Framework","description":"List clauses for a specific framework (eu_ai_act, nist_ai_rmf, owasp_llm).","operationId":"list_clauses_by_framework_compliance_clauses__framework__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"framework","in":"path","required":true,"schema":{"type":"string","title":"Framework"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClauseOut"},"title":"Response List Clauses By Framework Compliance Clauses  Framework  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/compliance/clauses/{clause_id}":{"put":{"tags":["compliance"],"summary":"Update Clause","description":"Update a clause's title or text (superadmin only).","operationId":"update_clause_compliance_clauses__clause_id__put","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"clause_id","in":"path","required":true,"schema":{"type":"integer","title":"Clause Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClauseUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClauseOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/compliance/clauses/seed":{"post":{"tags":["compliance"],"summary":"Reseed Clauses","description":"Re-seed missing default clauses (superadmin only).","operationId":"reseed_clauses_compliance_clauses_seed_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reseed Clauses Compliance Clauses Seed Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/settings":{"get":{"tags":["settings"],"summary":"Get Settings","description":"View current governor settings for your organization.\n\nReturns the effective settings (global defaults + org-level overrides).\nkill_switch and modules_enabled are read-only — controlled by platform admins.","operationId":"get_settings_settings_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernorSettings"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["settings"],"summary":"Update Settings","description":"Update governor settings for your organization.\n\nOnly the fields you include in the request body are updated.\nkill_switch and user management remain admin-only.\n\nRequires operator role or higher.","operationId":"update_settings_settings_patch","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernorSettings"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/settings/modules":{"get":{"tags":["settings"],"summary":"List Modules","description":"List all available governance modules and their current status.\n\nShows whether each module is enabled (by config) and loaded (runtime).","operationId":"list_modules_settings_modules_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ModuleStatus"},"title":"Response List Modules Settings Modules Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/agents":{"get":{"tags":["agent-profile"],"summary":"List Agents","description":"List all known agents with basic summary metrics.","operationId":"list_agents_agents_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentListItem"},"title":"Response List Agents Agents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/agents/{agent_id}/summary":{"get":{"tags":["agent-profile"],"summary":"Agent Summary","description":"Unified per-agent summary aggregating all governance modules.","operationId":"agent_summary_agents__agent_id__summary_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Lookback window in days","default":30,"title":"Days"},"description":"Lookback window in days"},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentProfileSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/config":{"get":{"tags":["billing"],"summary":"Billing Config","description":"Public endpoint: check whether Stripe billing is enabled.","operationId":"billing_config_billing_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingConfigResponse"}}}}}}},"/billing/subscribe":{"post":{"tags":["billing"],"summary":"Subscribe Wallet","description":"Create a metered Stripe subscription for an agent wallet.\n\nRequires operator or admin credentials.","operationId":"subscribe_wallet_billing_subscribe_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/status/{wallet_id}":{"get":{"tags":["billing"],"summary":"Billing Status","description":"Check billing status for a wallet.","operationId":"billing_status_billing_status__wallet_id__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string","title":"Wallet Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/portal/{wallet_id}":{"post":{"tags":["billing"],"summary":"Create Portal Session","description":"Generate a Stripe Customer Portal URL for managing the subscription.","operationId":"create_portal_session_billing_portal__wallet_id__post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string","title":"Wallet Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/webhook":{"post":{"tags":["billing"],"summary":"Stripe Webhook","description":"Receive Stripe webhook events.\n\nHandles:\n  - invoice.payment_failed → engage kill switch for the affected wallet\n  - invoice.payment_succeeded → clear kill switch if it was payment-triggered\n  - customer.subscription.deleted → invalidate cache + mark inactive","operationId":"stripe_webhook_billing_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stripe Webhook Billing Webhook Post"}}}}}}},"/metrics":{"get":{"tags":["Metrics"],"summary":"Prometheus Metrics","description":"Prometheus-compatible metrics endpoint.","operationId":"prometheus_metrics_metrics_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/metrics/summary":{"get":{"tags":["Metrics"],"summary":"Metrics Summary","description":"JSON metrics summary.","operationId":"metrics_summary_metrics_summary_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pii/entities":{"get":{"tags":["PII Scanner"],"summary":"List Entity Types","description":"List all supported PII entity types.","operationId":"list_entity_types_pii_entities_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pii/scan":{"post":{"tags":["PII Scanner"],"summary":"Scan For Pii","description":"Scan tool call inputs and outputs for PII (requires operator role).","operationId":"scan_for_pii_pii_scan_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PIIScanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PIIScanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fingerprint/agents":{"get":{"tags":["Agent Fingerprinting"],"summary":"List Fingerprinted Agents","description":"List all agents with behavioural fingerprints.","operationId":"list_fingerprinted_agents_fingerprint_agents_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fingerprint/agents/{agent_id}":{"get":{"tags":["Agent Fingerprinting"],"summary":"Get Agent Fingerprint","description":"Get detailed fingerprint for a specific agent.","operationId":"get_agent_fingerprint_fingerprint_agents__agent_id__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Agent Fingerprinting"],"summary":"Reset Agent Fingerprint","description":"Reset an agent's fingerprint (requires admin role).","operationId":"reset_agent_fingerprint_fingerprint_agents__agent_id__delete","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fingerprint/agents/{agent_id}/maturity":{"get":{"tags":["Agent Fingerprinting"],"summary":"Get Agent Maturity","description":"Get fingerprint maturity level.","operationId":"get_agent_maturity_fingerprint_agents__agent_id__maturity_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fingerprint/agents/{agent_id}/drift":{"get":{"tags":["Agent Fingerprinting"],"summary":"Get Agent Drift","description":"Analyse behavioural drift for an agent against its baseline fingerprint.\n\nCompares the agent's recent activity (last 50 evaluations) to its\nhistorical baseline and returns a drift score, drift level, and\nper-dimension breakdown.","operationId":"get_agent_drift_fingerprint_agents__agent_id__drift_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/v2/status":{"get":{"tags":["SURGE Governance Receipts"],"summary":"Surge Status","description":"SURGE engine status and chain integrity.","operationId":"surge_status_surge_v2_status_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/v2/receipts":{"get":{"tags":["SURGE Governance Receipts"],"summary":"List Receipts","description":"List recent governance receipts.","operationId":"list_receipts_surge_v2_receipts_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"}},{"name":"decision","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decision"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/v2/receipts/{receipt_id}":{"get":{"tags":["SURGE Governance Receipts"],"summary":"Get Receipt","description":"Get a specific receipt.","operationId":"get_receipt_surge_v2_receipts__receipt_id__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/v2/receipts/{receipt_id}/verify":{"get":{"tags":["SURGE Governance Receipts"],"summary":"Verify Receipt","description":"Verify a single receipt's integrity.","operationId":"verify_receipt_surge_v2_receipts__receipt_id__verify_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/v2/checkpoints":{"get":{"tags":["SURGE Governance Receipts"],"summary":"List Checkpoints","description":"List all Merkle checkpoints.","operationId":"list_checkpoints_surge_v2_checkpoints_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/v2/checkpoints/{checkpoint_id}/receipts":{"get":{"tags":["SURGE Governance Receipts"],"summary":"Get Checkpoint Receipts","description":"Get all receipts belonging to a specific Merkle checkpoint.","operationId":"get_checkpoint_receipts_surge_v2_checkpoints__checkpoint_id__receipts_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"checkpoint_id","in":"path","required":true,"schema":{"type":"string","title":"Checkpoint Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/v2/verify":{"get":{"tags":["SURGE Governance Receipts"],"summary":"Verify Chain","description":"Verify the entire receipt chain integrity.","operationId":"verify_chain_surge_v2_verify_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/v2/export":{"get":{"tags":["SURGE Governance Receipts"],"summary":"Export Bundle","description":"Export auditor-ready compliance bundle.","operationId":"export_bundle_surge_v2_export_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"period_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Start"}},{"name":"period_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period End"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/v2/issue":{"post":{"tags":["SURGE Governance Receipts"],"summary":"Issue Receipt","description":"Issue a new governance receipt (requires operator role).","operationId":"issue_receipt_surge_v2_issue_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/surge/v2/checkpoint":{"post":{"tags":["SURGE Governance Receipts"],"summary":"Create Checkpoint","description":"Create a Merkle tree checkpoint (requires operator role).","operationId":"create_checkpoint_surge_v2_checkpoint_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/impact/assess":{"get":{"tags":["Impact Assessment"],"summary":"Full Assessment","description":"Full impact assessment report for the specified period.","operationId":"full_assessment_impact_assess_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(24h|7d|30d|90d|all)$","default":"30d","title":"Period"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/impact/assess/agent/{agent_id}":{"get":{"tags":["Impact Assessment"],"summary":"Agent Assessment","description":"Risk profile for a specific agent.","operationId":"agent_assessment_impact_assess_agent__agent_id__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(24h|7d|30d|90d|all)$","default":"30d","title":"Period"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/impact/assess/tool/{tool}":{"get":{"tags":["Impact Assessment"],"summary":"Tool Assessment","description":"Risk profile for a specific tool.","operationId":"tool_assessment_impact_assess_tool__tool__get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"tool","in":"path","required":true,"schema":{"type":"string","title":"Tool"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(24h|7d|30d|90d|all)$","default":"30d","title":"Period"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/impact/agents":{"get":{"tags":["Impact Assessment"],"summary":"List Agents","description":"List all agents with evaluation data.","operationId":"list_agents_impact_agents_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(24h|7d|30d|90d|all)$","default":"all","title":"Period"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/impact/tools":{"get":{"tags":["Impact Assessment"],"summary":"List Tools","description":"List all tools with evaluation data.","operationId":"list_tools_impact_tools_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(24h|7d|30d|90d|all)$","default":"all","title":"Period"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/moderation/scan":{"post":{"tags":["moderation"],"summary":"Moderation Scan","description":"Scan text for harmful content (hate, violence, self-harm, etc.).","operationId":"moderation_scan_moderation_scan_post","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/moderation/categories":{"get":{"tags":["moderation"],"summary":"List Categories","description":"List supported moderation categories and their default actions.","operationId":"list_categories_moderation_categories_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"tags":["meta"],"summary":"Root","description":"Service identity and version. Use `/health` or `/ready` for monitoring.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Root  Get"}}}}}}},"/health":{"get":{"tags":["meta"],"summary":"Health","description":"Lightweight liveness probe — returns 200 if the process is running.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/healthz":{"get":{"tags":["meta"],"summary":"Healthz","description":"Health check with database connectivity verification.","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Healthz Healthz Get"}}}}}}},"/ready":{"get":{"tags":["meta"],"summary":"Readiness","description":"Readiness probe — verifies DB, migrations, and module loading.","operationId":"readiness_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Readiness Ready Get"}}}}}}},"/modules/status":{"get":{"tags":["meta"],"summary":"Modules Status","description":"Report which optional compliance/governance modules are loaded.","operationId":"modules_status_modules_status_get","security":[{"HTTPBearer":[]},{"APIKeyHeader":[]}],"parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JWT via query param (for SSE/EventSource only)","title":"Token"},"description":"JWT via query param (for SSE/EventSource only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Modules Status Modules Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ActionDecision":{"properties":{"action_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Action Id","description":"Audit-log row ID. Use this when calling POST /actions/verify."},"decision":{"type":"string","title":"Decision","description":"One of 'allow', 'block', or 'review'."},"risk_score":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Risk Score"},"explanation":{"type":"string","title":"Explanation"},"policy_ids":{"items":{"type":"string"},"type":"array","title":"Policy Ids"},"modified_args":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Modified Args"},"execution_trace":{"items":{"$ref":"#/components/schemas/TraceStep"},"type":"array","title":"Execution Trace","description":"Ordered trace of each evaluation layer: which fired, outcome, risk contribution, matched ids, and wall-clock duration. Layers that were not reached due to short-circuit are omitted."},"chain_pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chain Pattern","description":"Machine name of the detected chain pattern, if any."},"chain_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chain Description","description":"Human-readable description of the detected chain pattern."},"session_depth":{"type":"integer","title":"Session Depth","description":"Number of prior actions in this agent's session history.","default":0},"escalation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Escalation Id","description":"ID of the escalation event in the review queue, if created."},"auto_ks_triggered":{"type":"boolean","title":"Auto Ks Triggered","description":"True if this evaluation caused the auto-kill-switch to engage.","default":false},"escalation_severity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Escalation Severity","description":"Escalation severity: critical | high | medium | low (if escalated)."},"deviation_count":{"type":"integer","title":"Deviation Count","description":"Number of behavioural deviations detected by fingerprint engine.","default":0},"deviation_types":{"items":{"type":"string"},"type":"array","title":"Deviation Types","description":"Types of deviations detected (e.g. tool_frequency, arg_anomaly)."},"pii_findings_count":{"type":"integer","title":"Pii Findings Count","description":"Number of PII entities detected in this action's payload.","default":0},"evidence_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Hash","description":"SHA-256 hash of the evidence graph for auditability."},"verification_required":{"type":"boolean","title":"Verification Required","description":"True if POST /actions/verify must be called after executing this tool.","default":false},"verification_deadline_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Verification Deadline Seconds","description":"Seconds within which verification must be submitted, if required."},"governance_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Governance Mode","description":"Governance mode active during evaluation: allow-by-default | deny-by-default | audit-only."},"base_risk_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Base Risk Score","description":"Pre-jitter risk score for audit purposes. Only set when score jitter is enabled."},"adversary_probability":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Adversary Probability","description":"P(adversarial | evidence) from Bayesian classifier. Range 0.0–1.0."},"tool_sensitivity_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Sensitivity Tier","description":"Sensitivity tier of the tool: critical | high | standard."},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Machine-readable error code (e.g. TOOL_BLOCKED, INJECTION_DETECTED_SEMANTIC). Present on block/review decisions. Use for programmatic handling in SDKs."},"remediation":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Remediation","description":"Structured remediation guidance: {summary, steps, docs_url, api_action}. Tells the operator/developer exactly how to resolve this block."}},"type":"object","required":["decision","risk_score","explanation"],"title":"ActionDecision","description":"Governor's verdict on an ActionInput."},"ActionInput":{"properties":{"tool":{"type":"string","maxLength":256,"minLength":1,"pattern":"^[a-zA-Z0-9_\\-.:]+$","title":"Tool","description":"Name of the tool the agent wants to call."},"args":{"additionalProperties":true,"type":"object","title":"Args","description":"Arguments passed to the tool."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"Alias for args — merged into args if both are present."},"agent_id":{"anyOf":[{"type":"string","maxLength":128,"pattern":"^[a-zA-Z0-9_\\-.:]+$"},{"type":"null"}],"title":"Agent Id","description":"Agent identifier (top-level convenience; also accepted inside context)."},"session_id":{"anyOf":[{"type":"string","maxLength":256,"pattern":"^[a-zA-Z0-9_\\-.:]+$"},{"type":"null"}],"title":"Session Id","description":"Session identifier (top-level convenience; also accepted inside context)."},"context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context","description":"Optional opaque context (e.g. user, session, agent_id, scopes, allowed_tools). Recognised keys: agent_id, session_id, user_id, channel, allowed_tools, conversation_id, turn_id."},"prompt":{"anyOf":[{"type":"string","maxLength":100000},{"type":"null"}],"title":"Prompt","description":"Optional: the user prompt / message that triggered this tool call. Stored encrypted at rest for forensic audit trails. Omit if your SDK sends conversation turns via POST /conversations/turns instead."}},"type":"object","required":["tool"],"title":"ActionInput","description":"Describes a tool invocation the agent wishes to make."},"ActionLogRead":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"tool":{"type":"string","title":"Tool"},"decision":{"type":"string","title":"Decision"},"risk_score":{"type":"integer","title":"Risk Score"},"explanation":{"type":"string","title":"Explanation"},"policy_ids":{"items":{"type":"string"},"type":"array","title":"Policy Ids"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"turn_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Turn Id"},"chain_pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chain Pattern"}},"type":"object","required":["id","created_at","tool","decision","risk_score","explanation","policy_ids"],"title":"ActionLogRead"},"ActivityRate":{"properties":{"actions_per_day":{"type":"number","title":"Actions Per Day","default":0.0},"actions_per_hour":{"type":"number","title":"Actions Per Hour","default":0.0},"last_active_minutes_ago":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Active Minutes Ago"}},"type":"object","title":"ActivityRate"},"AgentListItem":{"properties":{"agent_id":{"type":"string","title":"Agent Id"},"total_evaluations":{"type":"integer","title":"Total Evaluations"},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen"},"block_rate_pct":{"type":"number","title":"Block Rate Pct","default":0.0},"avg_risk":{"type":"number","title":"Avg Risk","default":0.0}},"type":"object","required":["agent_id","total_evaluations"],"title":"AgentListItem"},"AgentProfileSummary":{"properties":{"agent_id":{"type":"string","title":"Agent Id"},"first_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Seen"},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen"},"evaluations":{"$ref":"#/components/schemas/EvaluationStats"},"top_tools":{"items":{"$ref":"#/components/schemas/ToolBreakdown"},"type":"array","title":"Top Tools"},"top_policies":{"items":{"$ref":"#/components/schemas/PolicyHit"},"type":"array","title":"Top Policies"},"chain_patterns":{"items":{"$ref":"#/components/schemas/ChainPatternHit"},"type":"array","title":"Chain Patterns"},"verification":{"$ref":"#/components/schemas/VerificationStats"},"fingerprint":{"$ref":"#/components/schemas/FingerprintInfo"},"surge":{"$ref":"#/components/schemas/SurgeStats"},"conversations":{"$ref":"#/components/schemas/ConversationStats"},"traces":{"$ref":"#/components/schemas/TraceStats"},"budget":{"$ref":"#/components/schemas/BudgetStatus"},"daily_timeline":{"items":{"$ref":"#/components/schemas/TimelinePoint"},"type":"array","title":"Daily Timeline"},"risk_distribution":{"items":{"$ref":"#/components/schemas/RiskBucket"},"type":"array","title":"Risk Distribution"},"escalations":{"$ref":"#/components/schemas/app__api__routes_agent_profile__EscalationStats"},"scans":{"$ref":"#/components/schemas/ScanStats"},"wallet":{"$ref":"#/components/schemas/WalletInfo"},"compliance_tags":{"$ref":"#/components/schemas/ComplianceTagCounts"},"conversation_depth":{"$ref":"#/components/schemas/ConversationDepth"},"trace_performance":{"$ref":"#/components/schemas/TracePerformance"},"verification_detail":{"$ref":"#/components/schemas/VerificationDetail"},"escalation_resolution":{"$ref":"#/components/schemas/EscalationResolution"},"escalation_thresholds":{"$ref":"#/components/schemas/EscalationThresholds"},"receipt_integrity":{"$ref":"#/components/schemas/ReceiptIntegrity"},"session_distribution":{"$ref":"#/components/schemas/SessionUserDistribution"},"decision_trend":{"$ref":"#/components/schemas/DecisionTrend"},"kill_switch":{"$ref":"#/components/schemas/KillSwitchStatus"},"activity_rate":{"$ref":"#/components/schemas/ActivityRate"}},"type":"object","required":["agent_id"],"title":"AgentProfileSummary"},"AllowlistRequest":{"properties":{"tools":{"items":{"type":"string"},"type":"array","maxItems":50,"minItems":1,"title":"Tools","description":"Tool names to allow."},"agent_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Agent Id","description":"Optional agent scope."},"note":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Note","description":"Reason for creating the allowlist."}},"type":"object","required":["tools"],"title":"AllowlistRequest","description":"Bulk-create allow policies for deny-by-default mode."},"ApiKeyCreate":{"properties":{"label":{"type":"string","maxLength":128,"title":"Label","default":"default"}},"type":"object","title":"ApiKeyCreate"},"ApiKeyCreated":{"properties":{"id":{"type":"integer","title":"Id"},"label":{"type":"string","title":"Label"},"key_preview":{"type":"string","title":"Key Preview"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"raw_key":{"type":"string","title":"Raw Key"}},"type":"object","required":["id","label","key_preview","is_active","created_at","raw_key"],"title":"ApiKeyCreated","description":"Returned once on creation — includes the full raw key."},"ApiKeyRead":{"properties":{"id":{"type":"integer","title":"Id"},"label":{"type":"string","title":"Label"},"key_preview":{"type":"string","title":"Key Preview"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"}},"type":"object","required":["id","label","key_preview","is_active","created_at"],"title":"ApiKeyRead"},"BillingConfigResponse":{"properties":{"stripe_enabled":{"type":"boolean","title":"Stripe Enabled"},"fee_gating_enabled":{"type":"boolean","title":"Fee Gating Enabled"}},"type":"object","required":["stripe_enabled","fee_gating_enabled"],"title":"BillingConfigResponse"},"BillingStatusResponse":{"properties":{"wallet_id":{"type":"string","title":"Wallet Id"},"stripe_enabled":{"type":"boolean","title":"Stripe Enabled"},"has_subscription":{"type":"boolean","title":"Has Subscription"},"subscription_active":{"type":"boolean","title":"Subscription Active"}},"type":"object","required":["wallet_id","stripe_enabled","has_subscription","subscription_active"],"title":"BillingStatusResponse"},"Body_bulk_resolve_escalation_queue_bulk_resolve_post":{"properties":{"event_ids":{"items":{"type":"integer"},"type":"array","title":"Event Ids"},"body":{"$ref":"#/components/schemas/EscalationResolve"}},"type":"object","required":["event_ids","body"],"title":"Body_bulk_resolve_escalation_queue_bulk_resolve_post"},"BudgetStatus":{"properties":{"circuit_breaker_engaged":{"type":"boolean","title":"Circuit Breaker Engaged","default":false},"evaluations_this_session":{"type":"integer","title":"Evaluations This Session","default":0}},"type":"object","title":"BudgetStatus"},"ChainPatternHit":{"properties":{"pattern":{"type":"string","title":"Pattern"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["pattern","count"],"title":"ChainPatternHit"},"ChannelCount":{"properties":{"channel":{"type":"string","title":"Channel"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["channel","count"],"title":"ChannelCount"},"ClauseCreate":{"properties":{"framework":{"type":"string","title":"Framework"},"article_id":{"type":"string","title":"Article Id"},"title":{"type":"string","title":"Title"},"clause_text":{"type":"string","title":"Clause Text"}},"type":"object","required":["framework","article_id","title","clause_text"],"title":"ClauseCreate"},"ClauseOut":{"properties":{"id":{"type":"integer","title":"Id"},"framework":{"type":"string","title":"Framework"},"article_id":{"type":"string","title":"Article Id"},"title":{"type":"string","title":"Title"},"clause_text":{"type":"string","title":"Clause Text"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","framework","article_id","title","clause_text"],"title":"ClauseOut"},"ClauseUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"clause_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clause Text"}},"type":"object","title":"ClauseUpdate"},"ComplianceTagCounts":{"properties":{"owasp_llm":{"type":"integer","title":"Owasp Llm","default":0},"nist_ai_rmf":{"type":"integer","title":"Nist Ai Rmf","default":0},"eu_ai_act":{"type":"integer","title":"Eu Ai Act","default":0}},"type":"object","title":"ComplianceTagCounts"},"ConversationDepth":{"properties":{"avg_turns_per_conversation":{"type":"number","title":"Avg Turns Per Conversation","default":0.0},"models_used":{"items":{"$ref":"#/components/schemas/ModelUsage"},"type":"array","title":"Models Used"},"total_prompt_tokens":{"type":"integer","title":"Total Prompt Tokens","default":0},"total_completion_tokens":{"type":"integer","title":"Total Completion Tokens","default":0}},"type":"object","title":"ConversationDepth"},"ConversationStats":{"properties":{"total_conversations":{"type":"integer","title":"Total Conversations","default":0},"total_turns":{"type":"integer","title":"Total Turns","default":0}},"type":"object","title":"ConversationStats"},"ConversationSummary":{"properties":{"conversation_id":{"type":"string","title":"Conversation Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"turn_count":{"type":"integer","title":"Turn Count","default":0},"action_count":{"type":"integer","title":"Action Count","default":0},"first_turn_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Turn At"},"last_turn_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Turn At"}},"type":"object","required":["conversation_id"],"title":"ConversationSummary","description":"High-level view of a conversation thread."},"ConversationTurnBatch":{"properties":{"turns":{"items":{"$ref":"#/components/schemas/ConversationTurnCreate"},"type":"array","maxItems":100,"minItems":1,"title":"Turns"}},"type":"object","required":["turns"],"title":"ConversationTurnBatch","description":"Batch ingest multiple turns."},"ConversationTurnCreate":{"properties":{"conversation_id":{"type":"string","maxLength":128,"minLength":1,"title":"Conversation Id","description":"Groups turns into one thread."},"turn_index":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Turn Index","description":"0-based position in conversation.","default":0},"agent_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Agent Id"},"session_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Session Id"},"user_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"User Id"},"channel":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Channel"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"User message / prompt. Encrypted at rest."},"agent_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Reasoning","description":"Agent's chain-of-thought / plan. Encrypted at rest."},"agent_response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Response","description":"Final response shown to user. Encrypted at rest."},"tool_plan":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Plan","description":"Ordered list of tools the agent plans to call."},"model_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Model Id","description":"LLM model identifier."},"prompt_tokens":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Prompt Tokens"},"completion_tokens":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Completion Tokens"}},"type":"object","required":["conversation_id"],"title":"ConversationTurnCreate","description":"Payload for ingesting a conversation turn."},"ConversationTurnRead":{"properties":{"id":{"type":"integer","title":"Id"},"conversation_id":{"type":"string","title":"Conversation Id"},"turn_index":{"type":"integer","title":"Turn Index","default":0},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"agent_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Reasoning"},"agent_response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Response"},"tool_plan":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Plan"},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"},"prompt_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prompt Tokens"},"completion_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completion Tokens"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","conversation_id"],"title":"ConversationTurnRead"},"DecisionTrend":{"properties":{"block_rate_trend":{"type":"string","title":"Block Rate Trend","default":"stable"},"risk_trend":{"type":"string","title":"Risk Trend","default":"stable"},"recent_block_rate":{"type":"number","title":"Recent Block Rate","default":0.0},"prior_block_rate":{"type":"number","title":"Prior Block Rate","default":0.0},"recent_avg_risk":{"type":"number","title":"Recent Avg Risk","default":0.0},"prior_avg_risk":{"type":"number","title":"Prior Avg Risk","default":0.0}},"type":"object","title":"DecisionTrend"},"DriftSignalRead":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"weight":{"type":"number","title":"Weight"},"triggered":{"type":"boolean","title":"Triggered","default":false},"value":{"type":"number","title":"Value","default":0.0},"detail":{"type":"string","title":"Detail","default":""}},"type":"object","required":["name","description","weight"],"title":"DriftSignalRead","description":"One dimension of drift analysis."},"EscalationConfigCreate":{"properties":{"scope":{"type":"string","title":"Scope","description":"'*' for global, 'agent:<id>' for per-agent","default":"*"},"auto_ks_enabled":{"type":"boolean","title":"Auto Ks Enabled","default":false},"auto_ks_block_threshold":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Auto Ks Block Threshold","default":3},"auto_ks_risk_threshold":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Auto Ks Risk Threshold","default":82},"auto_ks_window_size":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Auto Ks Window Size","default":10},"review_risk_threshold":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Review Risk Threshold","default":70},"review_expiry_minutes":{"type":"integer","maximum":10080.0,"minimum":0.0,"title":"Review Expiry Minutes","description":"Auto-expire pending reviews after N minutes (0 = never)","default":30},"notify_on_block":{"type":"boolean","title":"Notify On Block","default":true},"notify_on_review":{"type":"boolean","title":"Notify On Review","default":true},"notify_on_auto_ks":{"type":"boolean","title":"Notify On Auto Ks","default":true}},"type":"object","title":"EscalationConfigCreate"},"EscalationConfigRead":{"properties":{"id":{"type":"integer","title":"Id"},"scope":{"type":"string","title":"Scope"},"auto_ks_enabled":{"type":"boolean","title":"Auto Ks Enabled"},"auto_ks_block_threshold":{"type":"integer","title":"Auto Ks Block Threshold"},"auto_ks_risk_threshold":{"type":"integer","title":"Auto Ks Risk Threshold"},"auto_ks_window_size":{"type":"integer","title":"Auto Ks Window Size"},"review_risk_threshold":{"type":"integer","title":"Review Risk Threshold"},"review_expiry_minutes":{"type":"integer","title":"Review Expiry Minutes"},"notify_on_block":{"type":"boolean","title":"Notify On Block"},"notify_on_review":{"type":"boolean","title":"Notify On Review"},"notify_on_auto_ks":{"type":"boolean","title":"Notify On Auto Ks"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","scope","auto_ks_enabled","auto_ks_block_threshold","auto_ks_risk_threshold","auto_ks_window_size","review_risk_threshold","review_expiry_minutes","notify_on_block","notify_on_review","notify_on_auto_ks"],"title":"EscalationConfigRead"},"EscalationConfigUpdate":{"properties":{"auto_ks_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Ks Enabled"},"auto_ks_block_threshold":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":1.0},{"type":"null"}],"title":"Auto Ks Block Threshold"},"auto_ks_risk_threshold":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":1.0},{"type":"null"}],"title":"Auto Ks Risk Threshold"},"auto_ks_window_size":{"anyOf":[{"type":"integer","maximum":200.0,"minimum":1.0},{"type":"null"}],"title":"Auto Ks Window Size"},"review_risk_threshold":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Review Risk Threshold"},"review_expiry_minutes":{"anyOf":[{"type":"integer","maximum":10080.0,"minimum":0.0},{"type":"null"}],"title":"Review Expiry Minutes"},"notify_on_block":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notify On Block"},"notify_on_review":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notify On Review"},"notify_on_auto_ks":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notify On Auto Ks"}},"type":"object","title":"EscalationConfigUpdate"},"EscalationEventRead":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"action_log_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Action Log Id"},"tool":{"type":"string","title":"Tool"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"trigger":{"type":"string","title":"Trigger"},"severity":{"type":"string","title":"Severity"},"decision":{"type":"string","title":"Decision"},"risk_score":{"type":"integer","title":"Risk Score"},"explanation":{"type":"string","title":"Explanation"},"policy_ids":{"items":{"type":"string"},"type":"array","title":"Policy Ids","default":[]},"chain_pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chain Pattern"},"status":{"type":"string","title":"Status"},"resolved_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved By"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"},"resolution_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Note"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["id","created_at","tool","trigger","severity","decision","risk_score","explanation","status"],"title":"EscalationEventRead"},"EscalationResolution":{"properties":{"median_resolution_minutes":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Median Resolution Minutes"},"top_triggers":{"items":{"$ref":"#/components/schemas/TriggerCount"},"type":"array","title":"Top Triggers"},"expiry_rate_pct":{"type":"number","title":"Expiry Rate Pct","default":0.0}},"type":"object","title":"EscalationResolution"},"EscalationResolve":{"properties":{"status":{"type":"string","pattern":"^(approved|rejected)$","title":"Status"},"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Note"}},"type":"object","required":["status"],"title":"EscalationResolve"},"EscalationThresholds":{"properties":{"has_custom_config":{"type":"boolean","title":"Has Custom Config","default":false},"auto_ks_enabled":{"type":"boolean","title":"Auto Ks Enabled","default":false},"auto_ks_block_threshold":{"type":"integer","title":"Auto Ks Block Threshold","default":3},"auto_ks_risk_threshold":{"type":"integer","title":"Auto Ks Risk Threshold","default":82},"review_risk_threshold":{"type":"integer","title":"Review Risk Threshold","default":70},"review_expiry_minutes":{"type":"integer","title":"Review Expiry Minutes","default":30}},"type":"object","title":"EscalationThresholds"},"EvaluationStats":{"properties":{"total":{"type":"integer","title":"Total","default":0},"allowed":{"type":"integer","title":"Allowed","default":0},"blocked":{"type":"integer","title":"Blocked","default":0},"review":{"type":"integer","title":"Review","default":0},"block_rate_pct":{"type":"number","title":"Block Rate Pct","default":0.0},"avg_risk":{"type":"number","title":"Avg Risk","default":0.0},"high_risk_count":{"type":"integer","title":"High Risk Count","default":0}},"type":"object","title":"EvaluationStats"},"FingerprintInfo":{"properties":{"maturity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Maturity"},"total_evaluations":{"type":"integer","title":"Total Evaluations","default":0},"drift_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Drift Score"},"drift_signals":{"items":{"type":"string"},"type":"array","title":"Drift Signals"}},"type":"object","title":"FingerprintInfo"},"GovernanceModeUpdate":{"properties":{"governance_mode":{"type":"string","pattern":"^(allow-by-default|deny-by-default|audit-only)$","title":"Governance Mode","description":"allow-by-default | deny-by-default | audit-only"}},"type":"object","required":["governance_mode"],"title":"GovernanceModeUpdate","description":"Update the organization's governance mode."},"GovernanceReceipt":{"properties":{"receipt_id":{"type":"string","title":"Receipt Id","description":"Unique receipt identifier"},"timestamp":{"type":"string","title":"Timestamp","description":"ISO-8601 evaluation timestamp"},"tool":{"type":"string","title":"Tool","description":"Tool that was evaluated"},"decision":{"type":"string","title":"Decision","description":"allow | block | review"},"risk_score":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Risk Score"},"policy_ids":{"items":{"type":"string"},"type":"array","title":"Policy Ids"},"chain_pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chain Pattern"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"digest":{"type":"string","title":"Digest","description":"SHA-256 digest of receipt payload for integrity verification"},"governance_fee_surge":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Governance Fee Surge","description":"$SURGE fee charged for this evaluation (tiered by risk score)"}},"type":"object","required":["receipt_id","timestamp","tool","decision","risk_score","digest"],"title":"GovernanceReceipt","description":"Signed receipt of a governance evaluation — suitable for on-chain attestation."},"GovernorSettings":{"properties":{"kill_switch":{"type":"boolean","title":"Kill Switch","default":false},"modules_enabled":{"type":"boolean","title":"Modules Enabled","default":true},"injection_detector_enabled":{"type":"boolean","title":"Injection Detector Enabled","default":true},"pii_scanner_enabled":{"type":"boolean","title":"Pii Scanner Enabled","default":true},"pii_risk_boost_per_finding":{"type":"number","title":"Pii Risk Boost Per Finding","default":15.0},"pii_max_risk_boost":{"type":"number","title":"Pii Max Risk Boost","default":50.0},"pii_min_confidence":{"type":"number","title":"Pii Min Confidence","default":0.6},"budget_enforcer_enabled":{"type":"boolean","title":"Budget Enforcer Enabled","default":true},"budget_max_evals_per_session":{"type":"integer","title":"Budget Max Evals Per Session","default":500},"budget_max_evals_per_hour":{"type":"integer","title":"Budget Max Evals Per Hour","default":1000},"budget_max_evals_per_day":{"type":"integer","title":"Budget Max Evals Per Day","default":10000},"content_moderator_enabled":{"type":"boolean","title":"Content Moderator Enabled","default":true},"fingerprinting_enabled":{"type":"boolean","title":"Fingerprinting Enabled","default":true},"impact_assessment_enabled":{"type":"boolean","title":"Impact Assessment Enabled","default":true},"surge_v2_enabled":{"type":"boolean","title":"Surge V2 Enabled","default":true},"verification_required":{"type":"boolean","title":"Verification Required","default":false},"verification_deadline_seconds":{"type":"integer","title":"Verification Deadline Seconds","default":300}},"type":"object","title":"GovernorSettings","description":"Current governor settings visible to org users."},"GovernorStatus":{"properties":{"kill_switch":{"type":"boolean","title":"Kill Switch","description":"If true, all actions will be blocked."}},"type":"object","required":["kill_switch"],"title":"GovernorStatus"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HoldResult":{"properties":{"event_id":{"type":"integer","title":"Event Id"},"status":{"type":"string","title":"Status"},"resolved_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved By"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"},"resolution_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution Note"},"timed_out":{"type":"boolean","title":"Timed Out","default":false}},"type":"object","required":["event_id","status"],"title":"HoldResult"},"IssueRequest":{"properties":{"tool":{"type":"string","title":"Tool"},"decision":{"type":"string","pattern":"^(allow|block|review)$","title":"Decision"},"risk_score":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Risk Score"},"explanation":{"type":"string","title":"Explanation","default":""},"policy_ids":{"items":{"type":"string"},"type":"array","title":"Policy Ids"},"chain_pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chain Pattern"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"extra_context":{"additionalProperties":true,"type":"object","title":"Extra Context"}},"type":"object","required":["tool","decision","risk_score"],"title":"IssueRequest"},"KeyRotatedResponse":{"properties":{"api_key":{"type":"string","title":"Api Key"},"warning":{"type":"string","title":"Warning","default":"Store this key securely. It will not be shown again."}},"type":"object","required":["api_key"],"title":"KeyRotatedResponse","description":"Returned once when a key is created or rotated. The raw key is shown\nexactly once — it cannot be retrieved again."},"KillSwitchStatus":{"properties":{"global_active":{"type":"boolean","title":"Global Active","default":false},"agent_quarantined":{"type":"boolean","title":"Agent Quarantined","default":false}},"type":"object","title":"KillSwitchStatus"},"LoginHistoryRead":{"properties":{"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"username":{"type":"string","title":"Username"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip Address"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"method":{"type":"string","title":"Method"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","user_id","username","method","created_at"],"title":"LoginHistoryRead"},"LoginRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"LoginRequest"},"MeResponse":{"properties":{"username":{"type":"string","title":"Username"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role"},"org_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Org Id"},"org_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Name"},"org_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Slug"}},"type":"object","required":["username","name","role"],"title":"MeResponse"},"ModelUsage":{"properties":{"model_id":{"type":"string","title":"Model Id"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["model_id","count"],"title":"ModelUsage"},"ModuleStatus":{"properties":{"name":{"type":"string","title":"Name"},"enabled":{"type":"boolean","title":"Enabled"},"loaded":{"type":"boolean","title":"Loaded"},"description":{"type":"string","title":"Description"}},"type":"object","required":["name","enabled","loaded","description"],"title":"ModuleStatus","description":"Status of a single governance module."},"NotificationChannelCreate":{"properties":{"label":{"type":"string","title":"Label","default":""},"channel_type":{"type":"string","pattern":"^(email|slack|whatsapp|jira|webhook)$","title":"Channel Type"},"config_json":{"additionalProperties":true,"type":"object","title":"Config Json","description":"Channel-specific config. Email: {smtp_host, smtp_port, from_addr, to_addrs, use_tls, username?, password?}. Slack: {webhook_url} or {bot_token, channel}. WhatsApp: {api_url, phone_number_id, access_token, to_numbers}. Jira: {base_url, project_key, issue_type, email, api_token}. Webhook: {url, auth_header?}."},"on_block":{"type":"boolean","title":"On Block","default":true},"on_review":{"type":"boolean","title":"On Review","default":true},"on_auto_ks":{"type":"boolean","title":"On Auto Ks","default":true},"on_policy_change":{"type":"boolean","title":"On Policy Change","default":false}},"type":"object","required":["channel_type","config_json"],"title":"NotificationChannelCreate"},"NotificationChannelRead":{"properties":{"id":{"type":"integer","title":"Id"},"label":{"type":"string","title":"Label"},"channel_type":{"type":"string","title":"Channel Type"},"config_json":{"additionalProperties":true,"type":"object","title":"Config Json"},"on_block":{"type":"boolean","title":"On Block"},"on_review":{"type":"boolean","title":"On Review"},"on_auto_ks":{"type":"boolean","title":"On Auto Ks"},"on_policy_change":{"type":"boolean","title":"On Policy Change"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"last_sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Sent At"},"error_count":{"type":"integer","title":"Error Count","default":0}},"type":"object","required":["id","label","channel_type","config_json","on_block","on_review","on_auto_ks","on_policy_change","is_active"],"title":"NotificationChannelRead"},"NotificationChannelUpdate":{"properties":{"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"config_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config Json"},"on_block":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"On Block"},"on_review":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"On Review"},"on_auto_ks":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"On Auto Ks"},"on_policy_change":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"On Policy Change"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"NotificationChannelUpdate"},"OutputScanFinding":{"properties":{"check":{"type":"string","title":"Check","description":"Check identifier: url-exfiltration, output-injection, pii-leak, etc."},"result":{"type":"string","title":"Result","description":"pass | fail | warn"},"detail":{"type":"string","title":"Detail","description":"Human-readable explanation."},"risk_contribution":{"type":"integer","title":"Risk Contribution","default":0}},"type":"object","required":["check","result","detail"],"title":"OutputScanFinding","description":"One finding from the output scan."},"OutputScanInput":{"properties":{"text":{"type":"string","maxLength":200000,"title":"Text","description":"The agent's response text to scan."},"agent_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Agent Id"},"session_id":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Session Id"},"context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context"}},"type":"object","required":["text"],"title":"OutputScanInput","description":"Agent submits its response text for exfiltration/injection scanning before sending to users."},"OutputScanResult":{"properties":{"safe":{"type":"boolean","title":"Safe","description":"True if no threats found."},"risk_score":{"type":"integer","title":"Risk Score","description":"Aggregate risk score 0–100.","default":0},"findings":{"items":{"$ref":"#/components/schemas/OutputScanFinding"},"type":"array","title":"Findings"},"sanitized_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sanitized Text","description":"Text with dangerous URLs redacted (if any found)."}},"type":"object","required":["safe"],"title":"OutputScanResult","description":"Result of scanning agent output text."},"PIIScanRequest":{"properties":{"tool":{"type":"string","title":"Tool","description":"Tool name"},"args":{"additionalProperties":true,"type":"object","title":"Args","description":"Tool arguments to scan"},"context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context","description":"Optional context"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result","description":"Tool output to scan"},"enabled_entities":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Enabled Entities","description":"Entity types to scan for"}},"type":"object","required":["tool","args"],"title":"PIIScanRequest"},"PIIScanResponse":{"properties":{"input_scan":{"additionalProperties":true,"type":"object","title":"Input Scan"},"output_scan":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Output Scan"},"total_findings":{"type":"integer","title":"Total Findings"},"has_pii":{"type":"boolean","title":"Has Pii"},"risk_boost":{"type":"number","title":"Risk Boost"}},"type":"object","required":["input_scan","total_findings","has_pii","risk_boost"],"title":"PIIScanResponse"},"PaginatedResponse_ActionLogRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ActionLogRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","description":"Total number of matching records"},"limit":{"type":"integer","title":"Limit","description":"Page size used for this request"},"offset":{"type":"integer","title":"Offset","description":"Offset used for this request"},"has_more":{"type":"boolean","title":"Has More","description":"Whether more records exist beyond this page"}},"type":"object","required":["items","total","limit","offset","has_more"],"title":"PaginatedResponse[ActionLogRead]"},"PaginatedResponse_VerificationLogRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/VerificationLogRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","description":"Total number of matching records"},"limit":{"type":"integer","title":"Limit","description":"Page size used for this request"},"offset":{"type":"integer","title":"Offset","description":"Offset used for this request"},"has_more":{"type":"boolean","title":"Has More","description":"Whether more records exist beyond this page"}},"type":"object","required":["items","total","limit","offset","has_more"],"title":"PaginatedResponse[VerificationLogRead]"},"PolicyAuditRead":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"action":{"type":"string","title":"Action"},"policy_id":{"type":"string","title":"Policy Id"},"username":{"type":"string","title":"Username"},"user_role":{"type":"string","title":"User Role"},"changes_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Changes Json"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["id","created_at","action","policy_id","username","user_role"],"title":"PolicyAuditRead"},"PolicyCreate":{"properties":{"policy_id":{"type":"string","maxLength":120,"minLength":1,"pattern":"^[a-zA-Z0-9_\\-.:]+$","title":"Policy Id","description":"Stable identifier for this policy."},"description":{"type":"string","maxLength":1000,"minLength":1,"title":"Description"},"severity":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Severity","description":"Risk score 0-100 derived from rubric: 0.40*blast_radius + 0.35*reversibility + 0.25*data_sensitivity."},"match_json":{"additionalProperties":true,"type":"object","title":"Match Json"},"action":{"type":"string","pattern":"^(allow|block|review)$","title":"Action"},"override_justification":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Override Justification","description":"Free-text justification (≥ 20 chars) to bypass severity-action coherence. Admin-only. Logged in audit trail."},"status":{"anyOf":[{"type":"string","pattern":"^(draft|active)$"},{"type":"null"}],"title":"Status","description":"Initial status. Admins default to 'active'; non-admins default to 'draft'."},"level":{"type":"string","pattern":"^(org|team)$","title":"Level","description":"Hierarchy level. 'system' is reserved for base policies.","default":"org"}},"type":"object","required":["policy_id","description","severity","action"],"title":"PolicyCreate"},"PolicyHit":{"properties":{"policy_id":{"type":"string","title":"Policy Id"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["policy_id","count"],"title":"PolicyHit"},"PolicyRead":{"properties":{"policy_id":{"type":"string","maxLength":120,"minLength":1,"pattern":"^[a-zA-Z0-9_\\-.:]+$","title":"Policy Id","description":"Stable identifier for this policy."},"description":{"type":"string","maxLength":1000,"minLength":1,"title":"Description"},"severity":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Severity","description":"Risk score 0-100 derived from rubric: 0.40*blast_radius + 0.35*reversibility + 0.25*data_sensitivity."},"match_json":{"additionalProperties":true,"type":"object","title":"Match Json"},"action":{"type":"string","title":"Action"},"is_active":{"type":"boolean","title":"Is Active","default":true},"version":{"type":"integer","title":"Version","default":1},"status":{"type":"string","title":"Status","default":"active"},"level":{"type":"string","title":"Level","default":"org"},"has_override":{"type":"boolean","title":"Has Override","default":false},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["policy_id","description","severity","match_json","action"],"title":"PolicyRead"},"PolicyStake":{"properties":{"policy_id":{"type":"string","title":"Policy Id"},"description":{"type":"string","title":"Description"},"severity":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Severity"},"staked_surge":{"type":"string","title":"Staked Surge","description":"Amount of $SURGE staked on this policy"},"staker_wallet":{"type":"string","title":"Staker Wallet","description":"Wallet address of the policy staker"},"created_at":{"type":"string","title":"Created At"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["policy_id","description","severity","staked_surge","staker_wallet","created_at"],"title":"PolicyStake","description":"A policy backed by $SURGE token stake."},"PolicyUpdate":{"properties":{"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"},"severity":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Severity"},"match_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Match Json"},"action":{"anyOf":[{"type":"string","pattern":"^(allow|block|review)$"},{"type":"null"}],"title":"Action"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"override_justification":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Override Justification","description":"Free-text justification (≥ 20 chars) to bypass severity-action coherence on this update."}},"type":"object","title":"PolicyUpdate","description":"Partial update — only supplied fields are changed."},"PolicyVersionRead":{"properties":{"id":{"type":"integer","title":"Id"},"policy_id":{"type":"string","title":"Policy Id"},"version":{"type":"integer","title":"Version"},"description":{"type":"string","title":"Description"},"severity":{"type":"integer","title":"Severity"},"match_json":{"additionalProperties":true,"type":"object","title":"Match Json"},"action":{"type":"string","title":"Action"},"is_active":{"type":"boolean","title":"Is Active"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["id","policy_id","version","description","severity","match_json","action","is_active"],"title":"PolicyVersionRead"},"PortalResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"PortalResponse"},"QuarantineListResponse":{"properties":{"quarantined_agents":{"items":{"type":"string"},"type":"array","title":"Quarantined Agents"},"count":{"type":"integer","title":"Count","default":0}},"type":"object","title":"QuarantineListResponse"},"QuarantineResponse":{"properties":{"status":{"type":"string","title":"Status"},"agent_id":{"type":"string","title":"Agent Id"}},"type":"object","required":["status","agent_id"],"title":"QuarantineResponse"},"QuarantineStatusResponse":{"properties":{"agent_id":{"type":"string","title":"Agent Id"},"quarantined":{"type":"boolean","title":"Quarantined"}},"type":"object","required":["agent_id","quarantined"],"title":"QuarantineStatusResponse"},"ReceiptIntegrity":{"properties":{"total_signed":{"type":"integer","title":"Total Signed","default":0},"total_unsigned":{"type":"integer","title":"Total Unsigned","default":0},"chain_intact":{"type":"boolean","title":"Chain Intact","default":true},"latest_receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Receipt Id"},"latest_digest":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Digest"}},"type":"object","title":"ReceiptIntegrity"},"RiskBucket":{"properties":{"bucket":{"type":"string","title":"Bucket"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["bucket","count"],"title":"RiskBucket"},"RoleCreate":{"properties":{"name":{"type":"string","maxLength":64,"minLength":2,"title":"Name"},"description":{"type":"string","maxLength":256,"title":"Description","default":""},"permissions":{"items":{"type":"string"},"type":"array","title":"Permissions"}},"type":"object","required":["name"],"title":"RoleCreate"},"RoleResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"permissions":{"items":{"type":"string"},"type":"array","title":"Permissions"},"is_system":{"type":"boolean","title":"Is System"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name","description","permissions","is_system","is_active"],"title":"RoleResponse"},"RoleUpdate":{"properties":{"description":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Description"},"permissions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Permissions"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"RoleUpdate"},"ScanRequest":{"properties":{"text":{"type":"string","maxLength":500000,"minLength":1,"title":"Text"}},"type":"object","required":["text"],"title":"ScanRequest"},"ScanResponse":{"properties":{"flagged":{"type":"boolean","title":"Flagged"},"decision":{"type":"string","title":"Decision"},"categories":{"additionalProperties":true,"type":"object","title":"Categories"},"triggered":{"items":{},"type":"array","title":"Triggered"},"provider":{"type":"string","title":"Provider"},"latency_ms":{"type":"number","title":"Latency Ms"}},"type":"object","required":["flagged","decision","categories","triggered","provider","latency_ms"],"title":"ScanResponse"},"ScanStats":{"properties":{"pii_flagged":{"type":"integer","title":"Pii Flagged","default":0},"injection_flagged":{"type":"integer","title":"Injection Flagged","default":0},"moderation_flagged":{"type":"integer","title":"Moderation Flagged","default":0}},"type":"object","title":"ScanStats","description":"PII / injection / moderation summary derived from action explanations."},"SessionUserDistribution":{"properties":{"unique_sessions":{"type":"integer","title":"Unique Sessions","default":0},"unique_users":{"type":"integer","title":"Unique Users","default":0},"channels":{"items":{"$ref":"#/components/schemas/ChannelCount"},"type":"array","title":"Channels"}},"type":"object","title":"SessionUserDistribution"},"SettingsUpdate":{"properties":{"injection_detector_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Injection Detector Enabled"},"pii_scanner_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pii Scanner Enabled"},"pii_risk_boost_per_finding":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Pii Risk Boost Per Finding"},"pii_max_risk_boost":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Pii Max Risk Boost"},"pii_min_confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Pii Min Confidence"},"budget_enforcer_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Budget Enforcer Enabled"},"budget_max_evals_per_session":{"anyOf":[{"type":"integer","maximum":100000.0,"minimum":1.0},{"type":"null"}],"title":"Budget Max Evals Per Session"},"budget_max_evals_per_hour":{"anyOf":[{"type":"integer","maximum":1000000.0,"minimum":1.0},{"type":"null"}],"title":"Budget Max Evals Per Hour"},"budget_max_evals_per_day":{"anyOf":[{"type":"integer","maximum":10000000.0,"minimum":1.0},{"type":"null"}],"title":"Budget Max Evals Per Day"},"content_moderator_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Content Moderator Enabled"},"fingerprinting_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Fingerprinting Enabled"},"impact_assessment_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Impact Assessment Enabled"},"surge_v2_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Surge V2 Enabled"},"verification_required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Verification Required"},"verification_deadline_seconds":{"anyOf":[{"type":"integer","maximum":3600.0,"minimum":30.0},{"type":"null"}],"title":"Verification Deadline Seconds"}},"type":"object","title":"SettingsUpdate","description":"Partial update for org-level settings. Only supplied fields are updated."},"SeverityWeightsUpdate":{"properties":{"blast_radius":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Blast Radius"},"reversibility":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Reversibility"},"data_sensitivity":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Data Sensitivity"}},"type":"object","required":["blast_radius","reversibility","data_sensitivity"],"title":"SeverityWeightsUpdate","description":"Per-org rubric weight overrides."},"SignupRequest":{"properties":{"name":{"type":"string","maxLength":100,"minLength":2,"title":"Name"},"username":{"type":"string","maxLength":100,"minLength":2,"title":"Username"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password"}},"type":"object","required":["name","username","password"],"title":"SignupRequest"},"SimulationRequest":{"properties":{"policy":{"$ref":"#/components/schemas/PolicyCreate"},"sample_action":{"$ref":"#/components/schemas/SimulationSampleAction"}},"type":"object","required":["policy","sample_action"],"title":"SimulationRequest","description":"Request body for POST /policies/simulate."},"SimulationResponse":{"properties":{"matched":{"type":"boolean","title":"Matched"},"decision":{"type":"string","title":"Decision"},"severity":{"type":"integer","title":"Severity"},"explanation":{"type":"string","title":"Explanation"},"existing_policies_matched":{"items":{"type":"string"},"type":"array","title":"Existing Policies Matched"},"combined_decision":{"type":"string","title":"Combined Decision"},"combined_risk_score":{"type":"integer","title":"Combined Risk Score"}},"type":"object","required":["matched","decision","severity","explanation","existing_policies_matched","combined_decision","combined_risk_score"],"title":"SimulationResponse","description":"Result of a policy simulation."},"SimulationSampleAction":{"properties":{"tool":{"type":"string","title":"Tool"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"args":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Args"}},"type":"object","required":["tool"],"title":"SimulationSampleAction","description":"A sample action payload to test a draft policy against."},"SpanBatchCreate":{"properties":{"spans":{"items":{"$ref":"#/components/schemas/SpanCreate"},"type":"array","maxItems":500,"minItems":1,"title":"Spans"}},"type":"object","required":["spans"],"title":"SpanBatchCreate","description":"Batch ingest multiple spans."},"SpanCreate":{"properties":{"trace_id":{"type":"string","maxLength":128,"minLength":1,"title":"Trace Id","description":"Groups all spans of one agent task."},"span_id":{"type":"string","maxLength":128,"minLength":1,"title":"Span Id","description":"Unique identifier for this span."},"parent_span_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Parent Span Id","description":"Parent span for nesting."},"kind":{"type":"string","pattern":"^(agent|llm|tool|governance|retrieval|chain|custom)$","title":"Kind"},"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name"},"status":{"type":"string","pattern":"^(ok|error)$","title":"Status","default":"ok"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"duration_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Ms"},"agent_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Agent Id"},"session_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Session Id"},"attributes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Attributes","description":"Flexible metadata (model, tokens, cost, etc.)"},"input":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input","description":"LLM prompt / tool args."},"output":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output","description":"LLM response / tool result."},"events":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Events","description":"Timestamped sub-events within the span."}},"type":"object","required":["trace_id","span_id","kind","name","start_time"],"title":"SpanCreate","description":"One span in an agent trace (ingested from SDK / agent framework)."},"SpanKindCount":{"properties":{"kind":{"type":"string","title":"Kind"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["kind","count"],"title":"SpanKindCount"},"SpanRead":{"properties":{"id":{"type":"integer","title":"Id"},"trace_id":{"type":"string","title":"Trace Id"},"span_id":{"type":"string","title":"Span Id"},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id"},"kind":{"type":"string","title":"Kind"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status","default":"ok"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"duration_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Ms"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"attributes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Attributes"},"input":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input"},"output":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output"},"events":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Events"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","trace_id","span_id","kind","name","start_time","created_at"],"title":"SpanRead"},"StakePolicyRequest":{"properties":{"policy_id":{"type":"string","title":"Policy Id"},"description":{"type":"string","title":"Description"},"severity":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Severity"},"match_json":{"additionalProperties":true,"type":"object","title":"Match Json"},"action":{"type":"string","pattern":"^(allow|block|review)$","title":"Action"},"surge_amount":{"type":"string","title":"Surge Amount","description":"$SURGE tokens to stake"},"wallet_address":{"type":"string","title":"Wallet Address","description":"Staker's wallet address"}},"type":"object","required":["policy_id","description","severity","action","surge_amount","wallet_address"],"title":"StakePolicyRequest"},"SubscribeRequest":{"properties":{"wallet_id":{"type":"string","title":"Wallet Id","description":"Agent wallet to subscribe"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Contact email for Stripe customer"}},"type":"object","required":["wallet_id"],"title":"SubscribeRequest"},"SubscribeResponse":{"properties":{"wallet_id":{"type":"string","title":"Wallet Id"},"stripe_customer_id":{"type":"string","title":"Stripe Customer Id"},"stripe_subscription_id":{"type":"string","title":"Stripe Subscription Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["wallet_id","stripe_customer_id","stripe_subscription_id","status"],"title":"SubscribeResponse"},"SummaryOut":{"properties":{"total_actions":{"type":"integer","title":"Total Actions"},"blocked":{"type":"integer","title":"Blocked"},"allowed":{"type":"integer","title":"Allowed"},"under_review":{"type":"integer","title":"Under Review"},"avg_risk":{"type":"number","title":"Avg Risk"},"top_blocked_tool":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Top Blocked Tool"},"high_risk_count":{"type":"integer","title":"High Risk Count","default":0},"message":{"type":"string","title":"Message"}},"type":"object","required":["total_actions","blocked","allowed","under_review","avg_risk","message"],"title":"SummaryOut"},"SurgeGovernanceStatus":{"properties":{"fee_gating_enabled":{"type":"boolean","title":"Fee Gating Enabled"},"governance_fee_tiers":{"additionalProperties":true,"type":"object","title":"Governance Fee Tiers","description":"Fee tiers: risk_threshold → SURGE cost"},"total_receipts_issued":{"type":"integer","title":"Total Receipts Issued"},"total_fees_collected":{"type":"string","title":"Total Fees Collected"},"total_staked_policies":{"type":"integer","title":"Total Staked Policies"},"total_surge_staked":{"type":"string","title":"Total Surge Staked"},"surge_wallet":{"type":"string","title":"Surge Wallet"}},"type":"object","required":["fee_gating_enabled","governance_fee_tiers","total_receipts_issued","total_fees_collected","total_staked_policies","total_surge_staked","surge_wallet"],"title":"SurgeGovernanceStatus","description":"Status of the SURGE governance integration."},"SurgeStats":{"properties":{"total_receipts":{"type":"integer","title":"Total Receipts","default":0},"total_fees":{"type":"number","title":"Total Fees","default":0.0}},"type":"object","title":"SurgeStats"},"TimelinePoint":{"properties":{"date":{"type":"string","title":"Date"},"total":{"type":"integer","title":"Total","default":0},"blocked":{"type":"integer","title":"Blocked","default":0},"avg_risk":{"type":"number","title":"Avg Risk","default":0.0}},"type":"object","required":["date"],"title":"TimelinePoint"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"role":{"type":"string","title":"Role"},"username":{"type":"string","title":"Username"},"name":{"type":"string","title":"Name"}},"type":"object","required":["access_token","role","username","name"],"title":"TokenResponse"},"ToolBreakdown":{"properties":{"tool":{"type":"string","title":"Tool"},"count":{"type":"integer","title":"Count"},"blocked":{"type":"integer","title":"Blocked"},"avg_risk":{"type":"number","title":"Avg Risk"}},"type":"object","required":["tool","count","blocked","avg_risk"],"title":"ToolBreakdown"},"TopItem":{"properties":{"name":{"type":"string","title":"Name"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["name","count"],"title":"TopItem"},"TraceDetail":{"properties":{"trace_id":{"type":"string","title":"Trace Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"spans":{"items":{"$ref":"#/components/schemas/SpanRead"},"type":"array","title":"Spans"},"governance_decisions":{"items":{"$ref":"#/components/schemas/ActionLogRead"},"type":"array","title":"Governance Decisions"},"span_count":{"type":"integer","title":"Span Count"},"governance_count":{"type":"integer","title":"Governance Count","default":0},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"total_duration_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Duration Ms"},"has_errors":{"type":"boolean","title":"Has Errors","default":false},"has_blocks":{"type":"boolean","title":"Has Blocks","default":false}},"type":"object","required":["trace_id","spans","span_count"],"title":"TraceDetail","description":"Full trace with all spans and correlated governance decisions."},"TraceListItem":{"properties":{"trace_id":{"type":"string","title":"Trace Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"span_count":{"type":"integer","title":"Span Count"},"governance_count":{"type":"integer","title":"Governance Count","default":0},"root_span_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Root Span Name"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"total_duration_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Duration Ms"},"has_errors":{"type":"boolean","title":"Has Errors","default":false},"has_blocks":{"type":"boolean","title":"Has Blocks","default":false}},"type":"object","required":["trace_id","span_count","start_time"],"title":"TraceListItem","description":"Summary of a trace for listing."},"TracePerformance":{"properties":{"avg_duration_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Duration Ms"},"error_rate_pct":{"type":"number","title":"Error Rate Pct","default":0.0},"span_kinds":{"items":{"$ref":"#/components/schemas/SpanKindCount"},"type":"array","title":"Span Kinds"},"slowest_trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slowest Trace Id"},"slowest_duration_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Slowest Duration Ms"}},"type":"object","title":"TracePerformance"},"TraceStats":{"properties":{"total_traces":{"type":"integer","title":"Total Traces","default":0},"total_spans":{"type":"integer","title":"Total Spans","default":0}},"type":"object","title":"TraceStats"},"TraceStep":{"properties":{"layer":{"type":"integer","title":"Layer","description":"Layer index (1–5)."},"name":{"type":"string","title":"Name","description":"Human-readable layer name."},"key":{"type":"string","title":"Key","description":"Machine key: kill | firewall | scope | policy | neuro."},"outcome":{"type":"string","title":"Outcome","description":"'pass' | 'block' | 'review'."},"risk_contribution":{"type":"integer","title":"Risk Contribution","description":"Risk points this layer added or confirmed.","default":0},"matched_ids":{"items":{"type":"string"},"type":"array","title":"Matched Ids","description":"Policy IDs or pattern keys matched."},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail","description":"Human-readable detail for this layer."},"duration_ms":{"type":"number","title":"Duration Ms","description":"Wall-clock time for this layer in milliseconds.","default":0.0}},"type":"object","required":["layer","name","key","outcome"],"title":"TraceStep","description":"One layer's record in the evaluation pipeline trace."},"TriggerCount":{"properties":{"trigger":{"type":"string","title":"Trigger"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["trigger","count"],"title":"TriggerCount"},"UserCreate":{"properties":{"username":{"type":"string","title":"Username"},"name":{"type":"string","title":"Name"},"password":{"type":"string","title":"Password"},"role":{"type":"string","pattern":"^(superadmin|admin|operator|auditor)$","title":"Role","default":"operator"}},"type":"object","required":["username","name","password"],"title":"UserCreate"},"UserRead":{"properties":{"id":{"type":"integer","title":"Id"},"username":{"type":"string","title":"Username"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At"},"login_count":{"type":"integer","title":"Login Count","default":0}},"type":"object","required":["id","username","name","role","is_active","created_at"],"title":"UserRead"},"UserUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"role":{"anyOf":[{"type":"string","pattern":"^(superadmin|admin|operator|auditor)$"},{"type":"null"}],"title":"Role"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},"type":"object","title":"UserUpdate"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerificationDetail":{"properties":{"avg_risk_delta":{"type":"number","title":"Avg Risk Delta","default":0.0},"escalation_rate_pct":{"type":"number","title":"Escalation Rate Pct","default":0.0},"top_failing_tools":{"items":{"$ref":"#/components/schemas/TopItem"},"type":"array","title":"Top Failing Tools"}},"type":"object","title":"VerificationDetail"},"VerificationFinding":{"properties":{"check":{"type":"string","title":"Check","description":"Check identifier: credential-scan, scope-compliance, etc."},"result":{"type":"string","title":"Result","description":"pass | fail | warn"},"detail":{"type":"string","title":"Detail","description":"Human-readable explanation."},"risk_contribution":{"type":"integer","title":"Risk Contribution","default":0},"duration_ms":{"type":"number","title":"Duration Ms","default":0.0}},"type":"object","required":["check","result","detail"],"title":"VerificationFinding","description":"Result of one verification check."},"VerificationInput":{"properties":{"action_id":{"type":"integer","title":"Action Id","description":"ID returned from the /actions/evaluate response log."},"tool":{"type":"string","title":"Tool","description":"Tool that was executed."},"result":{"additionalProperties":true,"type":"object","title":"Result","description":"Execution result. Recognised keys: status, output, diff, error. All values are scanned by the verification pipeline."},"context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context","description":"Same context as the original evaluate call (agent_id, session_id, trace_id, etc.)."}},"type":"object","required":["action_id","tool","result"],"title":"VerificationInput","description":"Agent submits this after executing a tool call."},"VerificationLogRead":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"action_id":{"type":"integer","title":"Action Id"},"tool":{"type":"string","title":"Tool"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"},"verdict":{"type":"string","title":"Verdict"},"risk_delta":{"type":"integer","title":"Risk Delta","default":0},"findings_json":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Findings Json"},"drift_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Drift Score"},"escalated":{"type":"boolean","title":"Escalated","default":false},"escalation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Escalation Id"}},"type":"object","required":["id","created_at","action_id","tool","verdict"],"title":"VerificationLogRead"},"VerificationResult":{"properties":{"verification":{"type":"string","title":"Verification","description":"compliant | violation | suspicious"},"risk_delta":{"type":"integer","title":"Risk Delta","description":"Risk score adjustment from verification.","default":0},"findings":{"items":{"$ref":"#/components/schemas/VerificationFinding"},"type":"array","title":"Findings"},"escalated":{"type":"boolean","title":"Escalated","description":"True if the violation was escalated.","default":false},"escalation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Escalation Id"},"drift_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Drift Score","description":"Cross-session drift score 0.0–1.0."},"drift_signals":{"items":{"$ref":"#/components/schemas/DriftSignalRead"},"type":"array","title":"Drift Signals"}},"type":"object","required":["verification"],"title":"VerificationResult","description":"Governor's post-execution verdict."},"VerificationStats":{"properties":{"total":{"type":"integer","title":"Total","default":0},"compliant":{"type":"integer","title":"Compliant","default":0},"violation":{"type":"integer","title":"Violation","default":0},"suspicious":{"type":"integer","title":"Suspicious","default":0},"avg_drift_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Drift Score"}},"type":"object","title":"VerificationStats"},"WalletCreate":{"properties":{"wallet_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-zA-Z0-9._@-]+$","title":"Wallet Id","description":"Wallet identifier (e.g. agent_id or org name)"},"label":{"type":"string","maxLength":256,"title":"Label","description":"Human-readable wallet label","default":""},"initial_balance":{"type":"string","title":"Initial Balance","description":"Starting $SURGE balance","default":"50.0000"}},"type":"object","required":["wallet_id"],"title":"WalletCreate","description":"Create a virtual SURGE wallet."},"WalletInfo":{"properties":{"wallet_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wallet Id"},"balance":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Balance"},"total_fees_paid":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Fees Paid"}},"type":"object","title":"WalletInfo"},"WalletRead":{"properties":{"wallet_id":{"type":"string","title":"Wallet Id"},"label":{"type":"string","title":"Label"},"balance":{"type":"string","title":"Balance"},"total_deposited":{"type":"string","title":"Total Deposited"},"total_fees_paid":{"type":"string","title":"Total Fees Paid"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["wallet_id","label","balance","total_deposited","total_fees_paid","created_at","updated_at"],"title":"WalletRead","description":"Virtual SURGE wallet balance."},"WalletTopUp":{"properties":{"amount":{"type":"string","maxLength":32,"title":"Amount","description":"$SURGE amount to deposit"}},"type":"object","required":["amount"],"title":"WalletTopUp","description":"Deposit $SURGE into a wallet."},"WebhookCreate":{"properties":{"url":{"type":"string","maxLength":1024,"minLength":1,"title":"Url"},"label":{"type":"string","maxLength":256,"title":"Label","default":""},"on_block":{"type":"boolean","title":"On Block","default":true},"on_review":{"type":"boolean","title":"On Review","default":true},"on_auto_ks":{"type":"boolean","title":"On Auto Ks","default":true},"auth_header":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Auth Header"}},"type":"object","required":["url"],"title":"WebhookCreate"},"WebhookRead":{"properties":{"id":{"type":"integer","title":"Id"},"url":{"type":"string","title":"Url"},"label":{"type":"string","title":"Label"},"on_block":{"type":"boolean","title":"On Block"},"on_review":{"type":"boolean","title":"On Review"},"on_auto_ks":{"type":"boolean","title":"On Auto Ks"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","url","label","on_block","on_review","on_auto_ks","is_active"],"title":"WebhookRead"},"WebhookUpdate":{"properties":{"url":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"Url"},"label":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Label"},"on_block":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"On Block"},"on_review":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"On Review"},"on_auto_ks":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"On Auto Ks"},"auth_header":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Auth Header"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"WebhookUpdate"},"app__api__routes_agent_profile__EscalationStats":{"properties":{"total":{"type":"integer","title":"Total","default":0},"pending":{"type":"integer","title":"Pending","default":0},"approved":{"type":"integer","title":"Approved","default":0},"rejected":{"type":"integer","title":"Rejected","default":0},"expired":{"type":"integer","title":"Expired","default":0},"critical":{"type":"integer","title":"Critical","default":0},"high":{"type":"integer","title":"High","default":0},"auto_ks_triggers":{"type":"integer","title":"Auto Ks Triggers","default":0}},"type":"object","title":"EscalationStats"},"app__escalation__routes__EscalationStats":{"properties":{"total":{"type":"integer","title":"Total"},"pending":{"type":"integer","title":"Pending"},"approved":{"type":"integer","title":"Approved"},"rejected":{"type":"integer","title":"Rejected"},"expired":{"type":"integer","title":"Expired"},"auto_resolved":{"type":"integer","title":"Auto Resolved"},"critical":{"type":"integer","title":"Critical"},"high":{"type":"integer","title":"High"},"medium":{"type":"integer","title":"Medium"},"low":{"type":"integer","title":"Low"}},"type":"object","required":["total","pending","approved","rejected","expired","auto_resolved","critical","high","medium","low"],"title":"EscalationStats"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"},"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"}}},"tags":[{"name":"auth","description":"User registration, login, JWT tokens, API key management, and login history."},{"name":"Roles","description":"RBAC role definitions — create, list, update, and delete custom roles with granular permissions."},{"name":"actions","description":"Core governance pipeline — evaluate tool calls against policies and list evaluation logs."},{"name":"verification","description":"Post-execution verification — submit tool outputs for compliance scanning and list verification records."},{"name":"policies","description":"Policy lifecycle — CRUD, versioning, import/export, simulation, severity weights, and audit trail."},{"name":"summary","description":"Dashboard overview — aggregated statistics for the governance dashboard."},{"name":"admin","description":"System administration — kill switch, quarantine, budget controls, and system status."},{"name":"surge","description":"SURGE v1 token governance — wallets, staked policies, and governance receipts."},{"name":"SURGE Governance Receipts","description":"SURGE v2 cryptographic receipts — issue, verify, checkpoint, and export compliance bundles with Merkle audit trails."},{"name":"stream","description":"Real-time Server-Sent Events (SSE) — live stream of governance decisions for monitoring dashboards."},{"name":"traces","description":"Distributed tracing — ingest OpenTelemetry-style spans and query trace trees for debugging."},{"name":"conversations","description":"Multi-turn conversation tracking — ingest turns, query timelines, and analyze session patterns."},{"name":"escalation","description":"Human-in-the-loop escalation — queue management, approval workflows, webhooks, and notification channels."},{"name":"notifications","description":"Notification channel management — configure Email, Slack, WhatsApp, Jira, and webhook alerting."},{"name":"compliance","description":"Regulatory compliance — EU AI Act, NIST AI RMF, and OWASP LLM Top 10 clause mapping."},{"name":"settings","description":"Runtime configuration — view and toggle system settings and module states."},{"name":"agent-profile","description":"Agent identity management — register agents and query per-agent governance summaries."},{"name":"billing","description":"Stripe metered billing — subscriptions, portal sessions, usage tracking, and webhooks."},{"name":"moderation","description":"Content moderation — scan text for harmful content using built-in heuristics and/or OpenAI Moderation API."},{"name":"Metrics","description":"Prometheus-compatible metrics — counters, histograms, and summary statistics for monitoring."},{"name":"PII Scanner","description":"PII detection — scan text for personally identifiable information (SSN, email, phone, etc.)."},{"name":"Agent Fingerprinting","description":"Behavioral fingerprinting — track agent identity, maturity scoring, and drift detection."},{"name":"Impact Assessment","description":"Risk impact analysis — assess potential impact of tools and agents before deployment."},{"name":"meta","description":"Health checks, readiness probes, and system metadata."}]}