{"openapi":"3.1.0","info":{"title":"Veirox","version":"0.1.0"},"paths":{"/api/auth/config":{"get":{"tags":["auth"],"summary":"Auth Config","description":"Public auth capabilities for the login page (no auth).\n\nLets the console hide the \"Sign up\" / \"Forgot password?\" links on\ndeployments where those self-service flows are disabled, instead of\nshowing them and 403-ing when clicked. Reads the same operator flags the\nregister / forgot-password gates use, so it stays in sync within one\nRedis-pub/sub round-trip.","operationId":"auth_config_api_auth_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Auth Config Api Auth Config Get"}}}}}}},"/api/auth/register":{"post":{"tags":["auth"],"summary":"Register","operationId":"register_api_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"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"}}}}}}},"/api/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_api_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/LoginResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","description":"Revoke the current session + blocklist the access token's jti.\n\nStays in ``_AUTH_EXEMPT`` so a client with an already-expired access\ntoken can still drop the cookies. We do best-effort revocation when\nthe access token is parseable, and best-effort session-row revoke\nwhen the refresh cookie is present — neither failure stops the\ncookie clearing.","operationId":"logout_api_auth_logout_post","parameters":[{"name":"veirox_refresh_token","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Veirox Refresh Token"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/refresh":{"post":{"tags":["auth"],"summary":"Refresh Access Token","description":"Exchange the refresh-token cookie for a new access token + rotate.\n\nDecision #1: rotation with 30 s grace. If the lookup hits the\n*previous* hash within the grace window, we treat it as a legitimate\nconcurrent-tab refresh and serve the same new token. If the previous\nhash hits *after* the grace window expired, that's a smoking-gun\nreuse — we revoke the entire session and 401 every future call.","operationId":"refresh_access_token_api_auth_refresh_post","parameters":[{"name":"veirox_refresh_token","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Veirox Refresh Token"}}],"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"}}}}}}},"/api/auth/logout-all":{"post":{"tags":["auth"],"summary":"Logout All","description":"Revoke every session for the current user + clear cookies on this device.\n\nAlso stamps the per-user revocation epoch so any access JWTs not\nimmediately blocklisted (we only have this one's jti) are vetoed by\nthe auth middleware AND any of the user's API keys are vetoed on\ntheir next request (RBAC P0-5). Useful after suspected account\ncompromise.\n\nRestricted to JWT (human) sessions so an exfiltrated API key cannot\nlog the owning human out of their own browser sessions.","operationId":"logout_all_api_auth_logout_all_post","responses":{"204":{"description":"Successful Response"}}}},"/api/auth/me/account":{"delete":{"tags":["auth"],"summary":"Delete My Account","description":"SAAS-06: self-service \"delete my account\" — creates an erasure DSR\nfor the current user and revokes every active session.\n\nThe user's data is removed asynchronously by the DSR worker. A 202\nresponse is returned immediately; the client should land on /login.\nRejected with 400 if the caller is the sole owner of any org.","operationId":"delete_my_account_api_auth_me_account_delete","responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Delete My Account Api Auth Me Account Delete"}}}}}}},"/api/auth/resend-verify":{"post":{"tags":["auth"],"summary":"Resend Verify","description":"Reissue a verification link. Always returns 200 regardless of\nwhether the email maps to an unverified user (prevents enumeration).","operationId":"resend_verify_api_auth_resend_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Resend Verify Api Auth Resend Verify Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/me":{"get":{"tags":["auth"],"summary":"Me","operationId":"me_api_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}}}},"patch":{"tags":["auth"],"summary":"Update Me","operationId":"update_me_api_auth_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/me/avatar":{"post":{"tags":["auth"],"summary":"Upload Avatar","operationId":"upload_avatar_api_auth_me_avatar_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_avatar_api_auth_me_avatar_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["auth"],"summary":"Remove Avatar","operationId":"remove_avatar_api_auth_me_avatar_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}}}}},"/api/auth/change-password":{"post":{"tags":["auth"],"summary":"Change Password","operationId":"change_password_api_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/forgot-password":{"post":{"tags":["auth"],"summary":"Forgot Password","description":"Always returns 200 — no enumeration of registered emails.","operationId":"forgot_password_api_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Forgot Password Api Auth Forgot Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/reset-password":{"post":{"tags":["auth"],"summary":"Reset Password","operationId":"reset_password_api_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/verify-email":{"post":{"tags":["auth"],"summary":"Verify Email","operationId":"verify_email_api_auth_verify_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/accept-invite":{"post":{"tags":["auth"],"summary":"Accept Invite","operationId":"accept_invite_api_auth_accept_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptInviteRequest"}}},"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"}}}}}}},"/api/auth/sessions":{"get":{"tags":["auth"],"summary":"List Sessions","operationId":"list_sessions_api_auth_sessions_get","parameters":[{"name":"veirox_refresh_token","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Veirox Refresh Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/veirox__schemas__identity__SessionOut"},"title":"Response List Sessions Api Auth Sessions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/sessions/{session_id}":{"delete":{"tags":["auth"],"summary":"Revoke Session","operationId":"revoke_session_api_auth_sessions__session_id__delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/mfa/methods":{"get":{"tags":["auth"],"summary":"List Mfa Methods","operationId":"list_mfa_methods_api_auth_mfa_methods_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/MfaMethodOut"},"type":"array","title":"Response List Mfa Methods Api Auth Mfa Methods Get"}}}}}}},"/api/auth/mfa/totp/setup":{"post":{"tags":["auth"],"summary":"Mfa Totp Setup","description":"Stateless setup — returns the QR + Fernet-encrypted secret. The\nencrypted secret is echoed back by /verify so we don't have to keep\na Redis row for abandoned setups.","operationId":"mfa_totp_setup_api_auth_mfa_totp_setup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaTotpSetupResponse"}}}}}}},"/api/auth/mfa/totp/verify":{"post":{"tags":["auth"],"summary":"Mfa Totp Verify","description":"Validate the bootstrap TOTP code, persist the method, and — if this\nis the user's first MFA method — also return a fresh set of backup\ncodes (decision #10).","operationId":"mfa_totp_verify_api_auth_mfa_totp_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaTotpVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaEnrollResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/mfa/webauthn/register/options":{"post":{"tags":["auth"],"summary":"Mfa Webauthn Register Options","operationId":"mfa_webauthn_register_options_api_auth_mfa_webauthn_register_options_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Mfa Webauthn Register Options Api Auth Mfa Webauthn Register Options Post"}}}}}}},"/api/auth/mfa/webauthn/register/verify":{"post":{"tags":["auth"],"summary":"Mfa Webauthn Register Verify","operationId":"mfa_webauthn_register_verify_api_auth_mfa_webauthn_register_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaWebauthnRegisterVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaEnrollResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/mfa/webauthn/auth/options":{"post":{"tags":["auth"],"summary":"Mfa Webauthn Auth Options","description":"Build a WebAuthn assertion request for the user identified by mfa_token.\n\nExempt from the auth middleware (mfa_token is the only credential at\nthis stage). The token's signature attests the user_id.","operationId":"mfa_webauthn_auth_options_api_auth_mfa_webauthn_auth_options_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaWebauthnAuthOptionsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Mfa Webauthn Auth Options Api Auth Mfa Webauthn Auth Options Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/mfa/challenge":{"post":{"tags":["auth"],"summary":"Mfa Challenge","description":"Complete the second factor.\n\nTwo ways in:\n- Login flow: caller passed ``mfa_token`` from /login. We trust the\n  JWT's ``sub`` claim.\n- In-session step-up (e.g. backup-code regen): caller is already\n  authenticated; we pull user_id from the request context. Out of\n  scope for SAAS-04 but the endpoint shape supports it for free.","operationId":"mfa_challenge_api_auth_mfa_challenge_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaChallengeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/mfa/{method_id}":{"delete":{"tags":["auth"],"summary":"Delete Mfa Method","operationId":"delete_mfa_method_api_auth_mfa__method_id__delete","parameters":[{"name":"method_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Method Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/mfa/backup-codes/regenerate":{"post":{"tags":["auth"],"summary":"Regenerate Backup Codes","description":"Step-up: caller must prove a current MFA factor in the body.","operationId":"regenerate_backup_codes_api_auth_mfa_backup_codes_regenerate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaChallengeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackupCodesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/orgs":{"get":{"tags":["auth"],"summary":"List My Orgs","description":"Return all organizations the current user belongs to, with their role.\n\nMulti-org users can use this endpoint to discover org IDs before\ncalling ``POST /api/auth/switch-org/{org_id}`` to change active context.\n\n``memberships`` is org-RLS-scoped, so listing the user's memberships under\nthe request session (GUC = current org) would return ONLY the active org —\nthe org switcher would then have no alternatives. This is a legitimate\ncross-tenant lookup narrowed to the caller's own ``user_id``, so run it\nunder ``bypass_rls`` on a fresh session.","operationId":"list_my_orgs_api_auth_orgs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/OrgWithRoleOut"},"type":"array","title":"Response List My Orgs Api Auth Orgs Get"}}}}}}},"/api/auth/switch-org/{org_id}":{"post":{"tags":["auth"],"summary":"Switch Org","description":"Issue a new JWT scoped to *org_id*.\n\nThe caller must already be a member of the target org. On success,\nreturns a fresh ``TokenResponse`` with a new access token and sets the\n``veirox_access_token`` cookie (mirrors the login flow). The old\naccess token is blocklisted so it cannot be replayed after the switch.\n\nUse-case: a user who belongs to multiple organizations switches their\nactive context from org A to org B without a full re-login.","operationId":"switch_org_api_auth_switch_org__org_id__post","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"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"}}}}}}},"/api/auth/device-code":{"post":{"tags":["auth"],"summary":"Device Code Start","operationId":"auth_device_code_start","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceCodeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceCodeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/device-token":{"post":{"tags":["auth"],"summary":"Device Token Poll","operationId":"auth_device_token_poll","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceTokenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DeviceTokenSuccess"},{"$ref":"#/components/schemas/DeviceTokenError"}],"title":"Response Auth Device Token Poll"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/cli-grant/info":{"get":{"tags":["auth"],"summary":"Cli Grant Info","operationId":"auth_cli_grant_info","parameters":[{"name":"user_code","in":"query","required":true,"schema":{"type":"string","title":"User Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliGrantInfoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/cli-grant/redeem":{"post":{"tags":["auth"],"summary":"Cli Grant Redeem","operationId":"auth_cli_grant_redeem","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliGrantRedeemRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/cli-grant/deny":{"post":{"tags":["auth"],"summary":"Cli Grant Deny","operationId":"auth_cli_grant_deny","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliGrantDenyRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations":{"get":{"tags":["organizations","mcp-exposed"],"summary":"List Orgs","operationId":"rest_list_orgs","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/OrganizationOut"},"type":"array","title":"Response Rest List Orgs"}}}}}},"post":{"tags":["organizations"],"summary":"Create Org","operationId":"create_org_api_organizations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations/{org_id}":{"get":{"tags":["organizations","mcp-exposed"],"summary":"Get Org","operationId":"rest_get_org","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["organizations"],"summary":"Update Org","operationId":"update_org_api_organizations__org_id__patch","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations/{org_id}/branding":{"patch":{"tags":["organizations"],"summary":"Update Org Branding","description":"Update whitelabel branding — cosmetic only, any org:write member.","operationId":"update_org_branding_api_organizations__org_id__branding_patch","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationBrandingUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations/{org_id}/llm-key":{"delete":{"tags":["organizations"],"summary":"Clear Llm Key","description":"Clear the organization's LLM credential. Owner-only.","operationId":"clear_llm_key_api_organizations__org_id__llm_key_delete","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations/{org_id}/members":{"get":{"tags":["organizations","mcp-exposed"],"summary":"List Members","operationId":"rest_list_org_members","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MemberOut"},"title":"Response Rest List Org Members"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations/{org_id}/members/{user_id}":{"delete":{"tags":["organizations","mcp-exposed"],"summary":"Remove Member","operationId":"rest_remove_org_member","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["organizations","mcp-exposed"],"summary":"Update Member Role","operationId":"rest_update_org_member_role","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations/{org_id}/invitations":{"post":{"tags":["organizations","mcp-exposed"],"summary":"Create Invitation","operationId":"rest_create_invitation","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["organizations","mcp-exposed"],"summary":"List Invitations","operationId":"rest_list_invitations","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InvitationOut"},"title":"Response Rest List Invitations"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations/{org_id}/invitations/{invitation_id}":{"delete":{"tags":["organizations","mcp-exposed"],"summary":"Revoke Invitation","operationId":"rest_revoke_invitation","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}},{"name":"invitation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invitation Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations/{org_id}/leave":{"post":{"tags":["organizations"],"summary":"Leave Org","description":"Self-service: leave the specified organization.\n\nAny authenticated member can leave their own org. The last owner is\nblocked — they must promote another member first.","operationId":"leave_org_api_organizations__org_id__leave_post","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me/preferences":{"get":{"tags":["preferences"],"summary":"List Preferences","operationId":"list_preferences_api_me_preferences_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PreferenceOut"},"type":"array","title":"Response List Preferences Api Me Preferences Get"}}}}}}},"/api/me/preferences/{key}":{"get":{"tags":["preferences"],"summary":"Get Preference","operationId":"get_preference_api_me_preferences__key__get","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]{0,119}$","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferenceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["preferences"],"summary":"Put Preference","operationId":"put_preference_api_me_preferences__key__put","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]{0,119}$","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferencePut"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferenceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["preferences"],"summary":"Delete Preference","operationId":"delete_preference_api_me_preferences__key__delete","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]{0,119}$","title":"Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/onboarding/bootstrap":{"post":{"tags":["onboarding"],"summary":"Bootstrap Onboarding","operationId":"onboarding_bootstrap","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BootstrapRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BootstrapResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/onboarding/status":{"get":{"tags":["onboarding"],"summary":"Onboarding Status","operationId":"onboarding_status","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingStatusResponse"}}}}}}},"/api/onboarding/skip":{"post":{"tags":["onboarding"],"summary":"Onboarding Skip","operationId":"onboarding_skip","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingStatusResponse"}}}}}}},"/api/onboarding/complete":{"post":{"tags":["onboarding"],"summary":"Onboarding Complete","operationId":"onboarding_complete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingStatusResponse"}}}}}}},"/api/version":{"get":{"tags":["version"],"summary":"Get Version","operationId":"get_api_version","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionResponse"}}}}}}},"/api/dashboard/stats":{"get":{"tags":["dashboard"],"summary":"Get Dashboard Stats","operationId":"get_dashboard_stats_api_dashboard_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardStats"}}}}}}},"/api/dashboard/org-summary":{"get":{"tags":["dashboard"],"summary":"Get Org Dashboard Summary","operationId":"get_org_dashboard_summary_api_dashboard_org_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgDashboardSummary"}}}}}}},"/api/dashboard/resources":{"get":{"tags":["dashboard","mcp-exposed"],"summary":"Get Project Resource Summary","operationId":"rest_get_project_resource_summary","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectResourceSummary"}}}}}}},"/api/dashboard/org-resources":{"get":{"tags":["dashboard","mcp-exposed"],"summary":"Get Org Resource Summary","operationId":"rest_get_org_resource_summary","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgResourceSummary"}}}}}}},"/api/dashboard/agent-funnel":{"get":{"tags":["dashboard","mcp-exposed"],"summary":"Get Agent Funnel Summary","operationId":"rest_get_agent_funnel_summary","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentFunnelSummaryOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/usage/summary":{"get":{"tags":["usage"],"summary":"Get Usage Summary","description":"Aggregate cost and token totals for the given period.","operationId":"get_usage_summary_api_usage_summary_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(7d|30d|90d|all)$","default":"30d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Usage Summary Api Usage Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/usage/trend":{"get":{"tags":["usage"],"summary":"Get Usage Trend","description":"Daily cost and token totals for trend chart.","operationId":"get_usage_trend_api_usage_trend_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(7d|30d|90d)$","default":"30d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Usage Trend Api Usage Trend Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/usage/by-agent":{"get":{"tags":["usage"],"summary":"Get Usage By Agent","description":"Cost and token breakdown by agent type.","operationId":"get_usage_by_agent_api_usage_by_agent_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(7d|30d|90d|all)$","default":"30d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Usage By Agent Api Usage By Agent Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/usage/by-task":{"get":{"tags":["usage"],"summary":"Get Usage By Task","description":"Cost and token breakdown by task (top N by cost).","operationId":"get_usage_by_task_api_usage_by_task_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(7d|30d|90d|all)$","default":"30d","title":"Period"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Usage By Task Api Usage By Task Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/usage/top-sessions":{"get":{"tags":["usage"],"summary":"Get Top Sessions","description":"Top N most expensive sessions in the given period.","operationId":"get_top_sessions_api_usage_top_sessions_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(7d|30d|90d|all)$","default":"30d","title":"Period"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Top Sessions Api Usage Top Sessions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/observability/client-errors":{"post":{"tags":["observability"],"summary":"Client Errors","description":"Ingest a browser-reported error.\n\nRegistered on ``public_router`` so no Permission() gate runs here.\nBrowsers posting from a pre-auth state (login-page crash, token\nexpiry) would otherwise hit 401 even though ``/client-errors`` is\nexplicitly in ``_AUTH_EXEMPT`` and ``_PROJECT_EXEMPT``.\n\nPayload is scrubbed before persistence; we only keep the URL path,\nmessage, stack, and user agent. No form fields, cookies, or\nsecrets are ever forwarded by the frontend reporter.","operationId":"client_errors_api_observability_client_errors_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientErrorIn"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/observability/client-events":{"post":{"tags":["observability"],"summary":"Record Client Event","description":"Ingest a console telemetry event from the browser.\n\nAuth-exempt (registered on ``public_router``) and rate-limited at\n100 requests/minute per caller identity (API key > user > IP).\nThe ``event`` field MUST match ``^console\\.[a-z0-9_.]+$`` — any\nother value is rejected with 422 before hitting Redis.\n\n``props`` values are hashed down to ≤32-char labels before storage\nso Redis label cardinality stays bounded.","operationId":"record_client_event_api_observability_client_events_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientEventIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Response Record Client Event Api Observability Client Events Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/observability/rag":{"get":{"tags":["observability"],"summary":"Get Rag Health","description":"Per-project RAG health: index state (live) + recent search activity.\n\nIndex figures are exact (counted from entity_embeddings now); search\nfigures cover the trailing ``hours`` window from the live metric buckets.","operationId":"get_rag_health_api_observability_rag_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"description":"trailing window for search activity","default":24,"title":"Hours"},"description":"trailing window for search activity"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Rag Health Api Observability Rag Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects":{"get":{"tags":["projects","mcp-exposed"],"summary":"List Projects","operationId":"rest_list_projects","parameters":[{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProjectOut"},"title":"Response Rest List Projects"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["projects","mcp-exposed"],"summary":"Create Project","operationId":"rest_create_project","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}":{"get":{"tags":["projects","mcp-exposed"],"summary":"Get Project","operationId":"rest_get_project","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["projects","mcp-exposed"],"summary":"Update Project","operationId":"rest_update_project","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["projects","mcp-exposed"],"summary":"Delete Project","operationId":"rest_delete_project","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/feature-flags":{"get":{"tags":["projects","mcp-exposed"],"summary":"Get Project Feature Flags","operationId":"rest_get_project_feature_flags","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectFeatureFlagsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/members":{"get":{"tags":["projects","mcp-exposed"],"summary":"List Project Members","description":"List users who have explicit project-level access.","operationId":"rest_list_project_members","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProjectMemberOut"},"title":"Response Rest List Project Members"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["projects","mcp-exposed"],"summary":"Add Project Member","description":"Grant a user explicit access to a specific project.","operationId":"rest_add_project_member","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddProjectMemberRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMemberOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/members/{user_id}":{"patch":{"tags":["projects","mcp-exposed"],"summary":"Update Project Member Role","description":"Change a user's project-level role.","operationId":"rest_update_project_member","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectMemberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMemberOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["projects","mcp-exposed"],"summary":"Remove Project Member","description":"Remove a user's explicit project access.","operationId":"rest_remove_project_member","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/task-templates":{"get":{"tags":["task-templates"],"summary":"List Templates","operationId":"list_templates_api_task_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TaskTemplateOut"},"type":"array","title":"Response List Templates Api Task Templates Get"}}}}}}},"/api/tasks/stats":{"get":{"tags":["tasks","mcp-exposed"],"summary":"Get Task Stats","operationId":"rest_get_task_stats","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStatsOut"}}}}}}},"/api/tasks":{"get":{"tags":["tasks","mcp-exposed"],"summary":"List Tasks","operationId":"rest_list_tasks","parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"agent_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Type"}},{"name":"enabled","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"created_desc","title":"Sort"}},{"name":"created_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created After"}},{"name":"created_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created Before"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_TaskListOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tasks","mcp-exposed"],"summary":"Create Task","operationId":"rest_create_task","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tasks/bulk-delete":{"post":{"tags":["tasks","mcp-exposed"],"summary":"Bulk Delete Tasks","operationId":"rest_bulk_delete_tasks","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskBulkDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskBulkDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tasks/preview":{"post":{"tags":["tasks","mcp-exposed"],"summary":"Preview Task Draft","operationId":"rest_preview_task_draft","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPreviewRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPreviewOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tasks/{task_id}":{"get":{"tags":["tasks","mcp-exposed"],"summary":"Get Task","operationId":"rest_get_task","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["tasks","mcp-exposed"],"summary":"Update Task","operationId":"rest_update_task","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tasks","mcp-exposed"],"summary":"Delete Task","operationId":"rest_delete_task","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tasks/{task_id}/preview":{"get":{"tags":["tasks","mcp-exposed"],"summary":"Preview Task","operationId":"rest_preview_task","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPreviewOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tasks/{task_id}/clone":{"post":{"tags":["tasks","mcp-exposed"],"summary":"Clone Task","operationId":"rest_clone_task","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tasks/{task_id}/trigger":{"post":{"tags":["tasks","mcp-exposed"],"summary":"Trigger Task","operationId":"rest_trigger_task","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskTriggerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions":{"get":{"tags":["sdk-sessions","mcp-exposed"],"summary":"List Project Sessions","operationId":"rest_list_sessions","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive substring match on title / first prompt","title":"Q"},"description":"Case-insensitive substring match on title / first prompt"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by channel source: webchat, telegram, slack, whatsapp, task","title":"Source"},"description":"Filter by channel source: webchat, telegram, slack, whatsapp, task"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Rest List Sessions"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/index":{"get":{"tags":["sdk-sessions","mcp-exposed"],"summary":"List Session Index","description":"Return a normalized, paginated session index for the console.\n\nThis additive endpoint intentionally does not replace ``GET /api/sessions``\nbecause the CLI currently depends on that legacy SDK shape.","operationId":"rest_list_session_index","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search title, summary, ids, or task name","title":"Q"},"description":"Search title, summary, ids, or task name"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"web, telegram, slack, whatsapp, task","title":"Source"},"description":"web, telegram, slack, whatsapp, task"},{"name":"trigger_source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"manual, scheduled, webhook, web","title":"Trigger Source"},"description":"manual, scheduled, webhook, web"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"pending, running, completed, failed, cancelled, timeout","title":"Status"},"description":"pending, running, completed, failed, cancelled, timeout"},{"name":"created_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created After"}},{"name":"created_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created Before"}},{"name":"min_cost","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Cost"}},{"name":"max_cost","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Cost"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"last_activity | created_at | cost | tokens | duration | status","default":"last_activity","title":"Sort"},"description":"last_activity | created_at | cost | tokens | duration | status"},{"name":"sort_dir","in":"query","required":false,"schema":{"type":"string","description":"asc | desc","default":"desc","title":"Sort Dir"},"description":"asc | desc"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionIndexResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/detail/{session_id}":{"get":{"tags":["sdk-sessions","mcp-exposed"],"summary":"Get Session Index Detail","operationId":"rest_get_session_index_detail","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionIndexOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_ref}/resume":{"post":{"tags":["sdk-sessions"],"summary":"Resume Session Endpoint","description":"Resume an existing agent session with ``prompt`` as the next user turn.\n\nHuman surface (console/CLI). Explicit — resuming is never implied by a\ncomment mention. 409 if the session is already running; 404 if it can't be\nresumed; 409 if a name is ambiguous.\n\nIdempotency-keyed like ``trigger_task`` — a client retry (network blip,\ndouble-click) must not enqueue a second agent run for the same intent.","operationId":"resume_session","parameters":[{"name":"session_ref","in":"path","required":true,"schema":{"type":"string","title":"Session Ref"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionResumeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/pin":{"post":{"tags":["sdk-sessions","mcp-exposed"],"summary":"Pin Session","description":"Pin a session. Preserves existing source/task_id components in the tag.","operationId":"rest_pin_session","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["sdk-sessions","mcp-exposed"],"summary":"Unpin Session","description":"Unpin a session. Preserves existing source/task_id components in the tag.","operationId":"rest_unpin_session","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}":{"get":{"tags":["sdk-sessions","mcp-exposed"],"summary":"Get Session","operationId":"rest_get_session","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rest Get Session"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["sdk-sessions","mcp-exposed"],"summary":"Update Session","operationId":"rest_update_session","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionRenameRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rest Update Session"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["sdk-sessions","mcp-exposed"],"summary":"Delete","operationId":"rest_delete_session","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/search":{"post":{"tags":["sdk-sessions","mcp-exposed"],"summary":"Search Session Turns","description":"Semantic/keyword search over past session transcripts (turn-level).\n\nReturns turn references (internal session_id + turn_index + role + snippet).\nFetch the surrounding turns with GET /sessions/{session_id}/turns.","operationId":"rest_search_session_turns","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionSearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Rest Search Session Turns"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/turns":{"get":{"tags":["sdk-sessions","mcp-exposed"],"summary":"Get Turns","description":"Return transcript turns in [around-window, around+window] for one session.\n\n``session_id`` is the internal Session.id (as returned by /sessions/search).\nReads only the window — never the whole session.","operationId":"rest_get_session_turns","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"around","in":"query","required":true,"schema":{"type":"integer","minimum":0,"description":"center turn_index","title":"Around"},"description":"center turn_index"},{"name":"window","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":0,"default":3,"title":"Window"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rest Get Session Turns"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/messages":{"get":{"tags":["sdk-sessions","mcp-exposed"],"summary":"Get Messages","operationId":"rest_get_session_messages","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Rest Get Session Messages"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/fork":{"post":{"tags":["sdk-sessions","mcp-exposed"],"summary":"Fork","operationId":"rest_fork_session","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SessionForkRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rest Fork Session"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/turn-usage":{"get":{"tags":["sdk-sessions","mcp-exposed"],"summary":"Get Turn Usage","description":"Aggregate token usage by reading assistant messages in the SDK JSONL transcript.\n\n``session_id`` may be either the DB session UUID or the SDK session ID (JSONL\nfilename stem).  When a DB UUID is provided the SDK session ID is resolved via\nthe ``sessions.sdk_session_id`` column so the correct JSONL file is loaded.","operationId":"rest_get_session_turn_usage","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rest Get Session Turn Usage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/shares":{"post":{"tags":["sdk-sessions"],"summary":"Create Session Share","description":"Mint a read-only public share link for this session's transcript.","operationId":"create_session_share_api_sessions__session_id__shares_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SessionShareCreateRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionShareCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["sdk-sessions"],"summary":"List Session Shares","description":"List share links for this session (never returns plaintext tokens).","operationId":"list_session_shares_api_sessions__session_id__shares_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SessionShareOut"},"title":"Response List Session Shares Api Sessions  Session Id  Shares Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/shares/{share_id}":{"delete":{"tags":["sdk-sessions"],"summary":"Revoke Session Share","description":"Revoke a share link (idempotent).","operationId":"revoke_session_share_api_sessions_shares__share_id__delete","parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Share Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/task-sessions/stats":{"get":{"tags":["task-sessions","mcp-exposed"],"summary":"Get Session Stats","operationId":"rest_get_task_session_stats","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionStatsOut"}}}}}}},"/api/task-sessions":{"get":{"tags":["task-sessions","mcp-exposed"],"summary":"List Sessions","operationId":"rest_list_task_sessions","parameters":[{"name":"task_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/SessionStatus"},{"type":"null"}],"title":"Status"}},{"name":"agent_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Type"}},{"name":"trigger_source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Source"}},{"name":"created_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created After"}},{"name":"created_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created Before"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_SessionOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/task-sessions/count":{"get":{"tags":["task-sessions","mcp-exposed"],"summary":"Count Sessions","operationId":"rest_count_task_sessions","parameters":[{"name":"task_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/SessionStatus"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/task-sessions/bulk-delete":{"post":{"tags":["task-sessions","mcp-exposed"],"summary":"Bulk Delete Sessions","operationId":"rest_bulk_delete_task_sessions","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionBulkDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionBulkDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/task-sessions/{session_id}/retry":{"post":{"tags":["task-sessions","mcp-exposed"],"summary":"Retry Session","description":"Create a fresh new session for the same task, starting from scratch (no resume).","operationId":"rest_retry_task_session","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskTriggerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/task-sessions/{session_id}":{"get":{"tags":["task-sessions","mcp-exposed"],"summary":"Get Session","operationId":"rest_get_task_session","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/task-sessions/{session_id}/presence/heartbeat":{"post":{"tags":["task-sessions"],"summary":"Heartbeat Session Presence","operationId":"heartbeat_session_presence_api_task_sessions__session_id__presence_heartbeat_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/task-sessions/{session_id}/presence":{"get":{"tags":["task-sessions","mcp-exposed"],"summary":"Get Session Presence","operationId":"rest_get_session_presence","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionPresenceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["task-sessions"],"summary":"Leave Session Presence","operationId":"leave_session_presence_api_task_sessions__session_id__presence_delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/task-sessions/{session_id}/cancel":{"post":{"tags":["task-sessions","mcp-exposed"],"summary":"Cancel Session","operationId":"rest_cancel_task_session","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/veirox__schemas__conversations__SessionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/task-sessions/{session_id}/artifacts":{"post":{"tags":["task-sessions","mcp-exposed"],"summary":"Create Session Artifact","description":"Export the session workspace directory as a downloadable tar.gz artifact.","operationId":"rest_create_task_session_artifact","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/task-sessions/{session_id}/export":{"get":{"tags":["task-sessions","mcp-exposed"],"summary":"Export Session","description":"Export session timeline as Markdown or PDF.\n\nThin wrapper over the centralized export subsystem — the ``session``\nserializer (services/export/serializers.py) owns the rendering and SDK\ntranscript loading. Kept at this URL + operation_id for the stable\nMCP/CLI contract. Accepts the same ``sections`` / cap query params as\n``/api/exports/session/{id}`` so external agents can request compact\nexports.","operationId":"rest_export_task_session","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(md|pdf)$","default":"md","title":"Format"}},{"name":"sections","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated section keys to INCLUDE. Omit for all. Valid: cover, exec_summary, toc, metadata, trace_links, system_prompt, task_prompt, git_clone, usage, timeline, transcript, thinking, tool_calls, tool_results, reports, artifacts, approvals, notifications, errors.","title":"Sections"},"description":"Comma-separated section keys to INCLUDE. Omit for all. Valid: cover, exec_summary, toc, metadata, trace_links, system_prompt, task_prompt, git_clone, usage, timeline, transcript, thinking, tool_calls, tool_results, reports, artifacts, approvals, notifications, errors."},{"name":"max_transcript_messages","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":5000,"minimum":0},{"type":"null"}],"title":"Max Transcript Messages"}},{"name":"max_tool_result_chars","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":50000,"minimum":0},{"type":"null"}],"title":"Max Tool Result Chars"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports":{"get":{"tags":["reports","mcp-exposed"],"summary":"List Reports","operationId":"rest_list_reports","parameters":[{"name":"task_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"}},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ReportListOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["reports","mcp-exposed"],"summary":"Create Report","operationId":"rest_create_report","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/{report_id}":{"get":{"tags":["reports","mcp-exposed"],"summary":"Get Report","operationId":"rest_get_report","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["reports","mcp-exposed"],"summary":"Delete Report","operationId":"rest_delete_report","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Report Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/{report_id}/pdf":{"get":{"tags":["reports","mcp-exposed"],"summary":"Get Report Pdf","operationId":"rest_get_report_pdf","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/{report_id}/screenshot":{"post":{"tags":["reports","mcp-exposed"],"summary":"Screenshot Report","operationId":"rest_screenshot_report","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/{report_id}/clone":{"post":{"tags":["reports","mcp-exposed"],"summary":"Clone Report","operationId":"rest_clone_report","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Report Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notification-logs":{"get":{"tags":["notification-logs"],"summary":"List Notification Logs","operationId":"list_notification_logs_api_notification_logs_get","parameters":[{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"}},{"name":"channel_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/NotificationChannelType"},{"type":"null"}],"title":"Channel Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NotificationLogOut"},"title":"Response List Notification Logs Api Notification Logs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notification-logs/send":{"post":{"tags":["notification-logs"],"summary":"Send Notification Manual","description":"Manually send a Slack or email notification from the portal.\n\nB5: ``Idempotency-Key`` is honoured so a retried POST does not deliver\nthe same Slack/Email/Pushover/Telegram/WhatsApp message twice.","operationId":"send_notification_manual_api_notification_logs_send_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSendRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationLogOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications/preferences":{"get":{"tags":["notifications"],"summary":"Get Preferences","operationId":"get_preferences_api_notifications_preferences_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferenceOut"}}}}}},"put":{"tags":["notifications"],"summary":"Update Preferences","operationId":"update_preferences_api_notifications_preferences_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferenceUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferenceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications":{"get":{"tags":["notifications"],"summary":"List Notifications","operationId":"list_notifications_api_notifications_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"read","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Read"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_NotificationOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications/{notification_id}/deliveries":{"get":{"tags":["notifications"],"summary":"Get Notification Deliveries","description":"Per-channel delivery status for one of the caller's notifications.","operationId":"get_notification_deliveries_api_notifications__notification_id__deliveries_get","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Notification Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NotificationDeliveryOut"},"title":"Response Get Notification Deliveries Api Notifications  Notification Id  Deliveries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications/unread-count":{"get":{"tags":["notifications"],"summary":"Unread Count","operationId":"unread_count_api_notifications_unread_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnreadCountOut"}}}}}}},"/api/notifications/read-all":{"post":{"tags":["notifications"],"summary":"Mark All Read","operationId":"mark_all_read_api_notifications_read_all_post","responses":{"204":{"description":"Successful Response"}}}},"/api/notifications/{notification_id}/read":{"post":{"tags":["notifications"],"summary":"Mark Read","operationId":"mark_read_api_notifications__notification_id__read_post","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Notification Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notifications/stream":{"get":{"tags":["notifications"],"summary":"Stream Notifications","description":"Per-user SSE: pushes a signal whenever a new notification lands so the\nbell badge updates live. Subscribes to the Redis channel the processor\npublishes to (NT-02).","operationId":"stream_notifications_api_notifications_stream_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/notifications/web-push/vapid-key":{"get":{"tags":["notifications"],"summary":"Get Vapid Key","description":"Public VAPID key + whether web push is configured server-side.","operationId":"get_vapid_key_api_notifications_web_push_vapid_key_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebPushVapidKeyOut"}}}}}}},"/api/notifications/web-push/subscriptions":{"get":{"tags":["notifications"],"summary":"List Web Push Subscriptions","operationId":"list_web_push_subscriptions_api_notifications_web_push_subscriptions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebPushSubscriptionOut"},"title":"Response List Web Push Subscriptions Api Notifications Web Push Subscriptions Get"}}}}}},"post":{"tags":["notifications"],"summary":"Subscribe Web Push","operationId":"subscribe_web_push_api_notifications_web_push_subscriptions_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebPushSubscriptionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebPushSubscriptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["notifications"],"summary":"Unsubscribe Web Push","operationId":"unsubscribe_web_push_api_notifications_web_push_subscriptions_delete","parameters":[{"name":"endpoint","in":"query","required":true,"schema":{"type":"string","title":"Endpoint"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/approvals":{"get":{"tags":["approvals","mcp-exposed"],"summary":"List Approvals","operationId":"rest_list_approvals","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"approval_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approval Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ApprovalOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/approvals/{approval_id}":{"get":{"tags":["approvals","mcp-exposed"],"summary":"Get Approval","description":"Public read — no project header required, sensitive fields omitted.","operationId":"rest_get_approval","parameters":[{"name":"approval_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Approval Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalPublicOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/approvals/{approval_id}/comments":{"get":{"tags":["approvals","mcp-exposed"],"summary":"List Comments","description":"Public comments list — visible alongside the unscoped detail view.\n\nEN-4: verify the approval exists first so an unknown id 404s consistently\nwith ``GET /{approval_id}`` (previously returned an empty 200 list).","operationId":"rest_list_approval_comments","parameters":[{"name":"approval_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Approval Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApprovalCommentOut"},"title":"Response Rest List Approval Comments"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["approvals","mcp-exposed"],"summary":"Add Comment","description":"Add a comment to an approval.\n\nThe comment must belong to an approval in the caller's project.\nAuthor is derived from the authenticated subject.","operationId":"rest_add_approval_comment","parameters":[{"name":"approval_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Approval Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalCommentCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalCommentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/approvals/{approval_id}/approve":{"post":{"tags":["approvals","mcp-exposed"],"summary":"Approve Approval","operationId":"rest_approve_approval","parameters":[{"name":"approval_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Approval Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalDecision"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/approvals/{approval_id}/reject":{"post":{"tags":["approvals","mcp-exposed"],"summary":"Reject Approval","operationId":"rest_reject_approval","parameters":[{"name":"approval_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Approval Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalDecision"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/approvals/{approval_id}/request-revision":{"post":{"tags":["approvals","mcp-exposed"],"summary":"Request Revision","operationId":"rest_request_approval_revision","parameters":[{"name":"approval_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Approval Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalDecision"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/approvals/{approval_id}/resolve":{"post":{"tags":["approvals","mcp-exposed"],"summary":"Resolve Approval","operationId":"rest_resolve_approval","parameters":[{"name":"approval_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Approval Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalResolveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalResolveResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comments/{resource_type}/{resource_id}":{"get":{"tags":["comments"],"summary":"List Comments","operationId":"comments_list","parameters":[{"name":"resource_type","in":"path","required":true,"schema":{"type":"string","title":"Resource Type"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Resource Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentListOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["comments"],"summary":"Add Comment","operationId":"comments_add","parameters":[{"name":"resource_type","in":"path","required":true,"schema":{"type":"string","title":"Resource Type"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Resource Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comments/{resource_type}/{resource_id}/{comment_id}/resolve":{"post":{"tags":["comments"],"summary":"Resolve Comment","operationId":"comments_resolve","parameters":[{"name":"resource_type","in":"path","required":true,"schema":{"type":"string","title":"Resource Type"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Resource Id"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Comment Id"}},{"name":"resolved","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Resolved"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comments/{resource_type}/{resource_id}/{comment_id}":{"delete":{"tags":["comments"],"summary":"Delete Comment","operationId":"comments_delete","parameters":[{"name":"resource_type","in":"path","required":true,"schema":{"type":"string","title":"Resource Type"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Resource Id"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Comment Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/nav-activity/counts":{"post":{"tags":["nav-activity"],"summary":"Get Counts","operationId":"get_counts_api_nav_activity_counts_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NavActivityCountsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NavActivityCountsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/nav-activity/stream":{"get":{"tags":["nav-activity"],"summary":"Stream Nav Activity","operationId":"stream_nav_activity_api_nav_activity_stream_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/files/upload":{"post":{"tags":["files","mcp-exposed"],"summary":"Upload","operationId":"rest_upload_file","parameters":[{"name":"folder","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_rest_upload_file"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoredFileOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/files/presigned-url":{"post":{"tags":["files"],"summary":"Get Presigned Url","operationId":"get_presigned_url_api_files_presigned_url_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignedUploadRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignedUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/files":{"get":{"tags":["files","mcp-exposed"],"summary":"List Files","operationId":"rest_list_files","parameters":[{"name":"folder","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"content_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","default":"uploaded_at","title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Sort Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_StoredFileOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/files/quota":{"get":{"tags":["files","mcp-exposed"],"summary":"Get Quota","operationId":"rest_get_file_quota","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageQuotaResponse"}}}}}}},"/api/files/{file_id}":{"get":{"tags":["files","mcp-exposed"],"summary":"Get File","operationId":"rest_get_file","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoredFileOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["files","mcp-exposed"],"summary":"Delete Stored File","operationId":"rest_delete_file","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/files/bulk-delete":{"post":{"tags":["files","mcp-exposed"],"summary":"Bulk Delete","operationId":"rest_bulk_delete_files","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/artifacts":{"get":{"tags":["artifacts","mcp-exposed"],"summary":"List Artifacts","operationId":"rest_list_artifacts","parameters":[{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"}},{"name":"conversation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/artifacts/{artifact_id}":{"get":{"tags":["artifacts","mcp-exposed"],"summary":"Get Artifact","operationId":"rest_get_artifact","parameters":[{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["artifacts","mcp-exposed"],"summary":"Delete Artifact","operationId":"rest_delete_artifact","parameters":[{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Artifact Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/browse":{"get":{"tags":["browse"],"summary":"Browse Directory","operationId":"browse_directory_api_browse_get","parameters":[{"name":"path","in":"query","required":false,"schema":{"type":"string","default":"","title":"Path"}},{"name":"files","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Files"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Browse Directory Api Browse Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/browse/file":{"get":{"tags":["browse"],"summary":"Get File Content","operationId":"get_file_content_api_browse_file_get","parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get File Content Api Browse File Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["browse"],"summary":"Write File","description":"Create or overwrite a UTF-8 text file at *path* (parents auto-created).","operationId":"write_file_api_browse_file_put","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteFileRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Write File Api Browse File Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["browse"],"summary":"Delete Path","description":"Delete a file, or a directory (empty, or recursively with ?recursive=true).","operationId":"delete_path_api_browse_file_delete","parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","title":"Path"}},{"name":"recursive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Recursive"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Path Api Browse File Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/browse/file/raw":{"get":{"tags":["browse"],"summary":"Get File Raw","operationId":"get_file_raw_api_browse_file_raw_get","parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/browse/find":{"get":{"tags":["browse"],"summary":"Find In Workspace","description":"Workspace-wide search. ``name`` powers Quick Open; ``content`` powers\nFind-in-Files. Substring match (not regex) — no shell, no user input reaches\na subprocess. Walk runs off the event loop.","operationId":"find_in_workspace_api_browse_find_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"title":"Q"}},{"name":"mode","in":"query","required":false,"schema":{"type":"string","pattern":"^(name|content)$","default":"name","title":"Mode"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Find In Workspace Api Browse Find Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/browse/upload":{"post":{"tags":["browse"],"summary":"Upload File","description":"Upload a (binary) file to *path* — *path* is the destination directory OR\nthe full destination file path. Size-capped at the read limit.","operationId":"upload_file_api_browse_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_api_browse_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upload File Api Browse Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/browse/mkdir":{"post":{"tags":["browse"],"summary":"Make Directory","operationId":"make_directory_api_browse_mkdir_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PathRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Make Directory Api Browse Mkdir Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/browse/rename":{"post":{"tags":["browse"],"summary":"Rename Path","description":"Rename/move a file or directory within the workspace. Both endpoints are\nguarded + re-guarded; refuses to overwrite an existing destination.","operationId":"rename_path_api_browse_rename_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Rename Path Api Browse Rename Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/filesystem/browse":{"get":{"tags":["filesystem"],"summary":"Browse Directory","description":"List directories at the given path for workspace selection.\n\nOnly paths inside `settings.workspace_roots` are browsable; symlinks and\n`..` traversal are resolved before the allowlist check, so escape attempts\nare rejected with 403.","operationId":"browse_directory_api_filesystem_browse_get","parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","description":"Directory path to browse","title":"Path"},"description":"Directory path to browse"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/repos":{"get":{"tags":["git"],"summary":"List Repos","operationId":"list_repos_api_git_repos_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/GitRepoSummary"},"type":"array","title":"Response List Repos Api Git Repos Get"}}}}}}},"/api/git/status":{"get":{"tags":["git"],"summary":"Status","operationId":"status_api_git_status_get","parameters":[{"name":"repo","in":"query","required":true,"schema":{"type":"string","title":"Repo"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/diff":{"get":{"tags":["git"],"summary":"Diff","operationId":"diff_api_git_diff_get","parameters":[{"name":"repo","in":"query","required":true,"schema":{"type":"string","title":"Repo"}},{"name":"path","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"}},{"name":"staged","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Staged"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitDiffOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/file-head":{"get":{"tags":["git"],"summary":"File Head","description":"HEAD (committed) content of a repo-relative file — for inline diff gutters.\nReturns content=null when the file has no committed version (new/untracked).","operationId":"file_head_api_git_file_head_get","parameters":[{"name":"repo","in":"query","required":true,"schema":{"type":"string","title":"Repo"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response File Head Api Git File Head Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/branches":{"get":{"tags":["git"],"summary":"Branches","operationId":"branches_api_git_branches_get","parameters":[{"name":"repo","in":"query","required":true,"schema":{"type":"string","title":"Repo"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitBranchesOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/log":{"get":{"tags":["git"],"summary":"Log","operationId":"log_api_git_log_get","parameters":[{"name":"repo","in":"query","required":true,"schema":{"type":"string","title":"Repo"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GitLogEntry"},"title":"Response Log Api Git Log Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/stage":{"post":{"tags":["git"],"summary":"Stage","operationId":"stage_api_git_stage_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoPathsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stage Api Git Stage Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/unstage":{"post":{"tags":["git"],"summary":"Unstage","operationId":"unstage_api_git_unstage_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoPathsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Unstage Api Git Unstage Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/discard":{"post":{"tags":["git"],"summary":"Discard","operationId":"discard_api_git_discard_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoPathsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Discard Api Git Discard Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/commit":{"post":{"tags":["git"],"summary":"Commit","operationId":"commit_api_git_commit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommitRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Commit Api Git Commit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/branch":{"post":{"tags":["git"],"summary":"Create Branch","operationId":"create_branch_api_git_branch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BranchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Branch Api Git Branch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/checkout":{"post":{"tags":["git"],"summary":"Checkout","operationId":"checkout_api_git_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/veirox__schemas__git__CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Checkout Api Git Checkout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/push":{"post":{"tags":["git"],"summary":"Push","operationId":"push_api_git_push_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitRemoteResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/pull":{"post":{"tags":["git"],"summary":"Pull","operationId":"pull_api_git_pull_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitRemoteResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git/fetch":{"post":{"tags":["git"],"summary":"Fetch","operationId":"fetch_api_git_fetch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitRemoteResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/custom-dashboards":{"get":{"tags":["custom-dashboards","mcp-exposed"],"summary":"List Custom Dashboards","operationId":"rest_list_dashboards","parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_CustomDashboardOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["custom-dashboards","mcp-exposed"],"summary":"Create Custom Dashboard","operationId":"rest_create_dashboard","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDashboardCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDashboardOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/custom-dashboards/reorder":{"post":{"tags":["custom-dashboards","mcp-exposed"],"summary":"Reorder Dashboards","operationId":"rest_reorder_dashboards","requestBody":{"content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CustomDashboardOut"},"type":"array","title":"Response Rest Reorder Dashboards"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/custom-dashboards/{dashboard_id}/render":{"get":{"tags":["custom-dashboards","mcp-exposed"],"summary":"Render Custom Dashboard","description":"Serve the dashboard HTML through Veirox (proxy from S3).","operationId":"rest_render_dashboard","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dashboard Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/custom-dashboards/{dashboard_id}":{"get":{"tags":["custom-dashboards","mcp-exposed"],"summary":"Get Custom Dashboard","operationId":"rest_get_dashboard","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dashboard Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDashboardOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["custom-dashboards","mcp-exposed"],"summary":"Update Custom Dashboard","operationId":"rest_update_dashboard","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dashboard Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDashboardUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDashboardOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["custom-dashboards","mcp-exposed"],"summary":"Delete Custom Dashboard","operationId":"rest_delete_dashboard","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dashboard Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/custom-dashboards/{dashboard_id}/favorite":{"post":{"tags":["custom-dashboards","mcp-exposed"],"summary":"Toggle Dashboard Favorite","operationId":"rest_toggle_dashboard_favorite","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dashboard Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDashboardOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/custom-dashboards/{dashboard_id}/screenshot":{"post":{"tags":["custom-dashboards","mcp-exposed"],"summary":"Screenshot Custom Dashboard","operationId":"rest_screenshot_dashboard","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dashboard Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDashboardOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reminders/stats":{"get":{"tags":["reminders","mcp-exposed"],"summary":"Get Reminder Stats","operationId":"rest_get_reminder_stats","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReminderListStatsOut"}}}}}}},"/api/reminders":{"get":{"tags":["reminders","mcp-exposed"],"summary":"List Reminders","operationId":"rest_list_reminders","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"scheduled_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Scheduled Date"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"created_desc","title":"Sort"}},{"name":"created_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created After"}},{"name":"created_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created Before"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ReminderOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["reminders","mcp-exposed"],"summary":"Create Reminder","operationId":"rest_create_reminder","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReminderCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReminderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reminders/{reminder_id}":{"get":{"tags":["reminders","mcp-exposed"],"summary":"Get Reminder","operationId":"rest_get_reminder","parameters":[{"name":"reminder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Reminder Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReminderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["reminders","mcp-exposed"],"summary":"Update Reminder","operationId":"rest_update_reminder","parameters":[{"name":"reminder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Reminder Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReminderUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReminderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["reminders","mcp-exposed"],"summary":"Delete Reminder","operationId":"rest_cancel_reminder","parameters":[{"name":"reminder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Reminder Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reminders/{reminder_id}/send":{"post":{"tags":["reminders","mcp-exposed"],"summary":"Send Reminder Now","description":"B5: ``Idempotency-Key`` is honoured so a retried POST does not\nenqueue the reminder twice.","operationId":"rest_send_reminder_now","parameters":[{"name":"reminder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Reminder Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReminderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/action-items":{"get":{"tags":["action-items","mcp-exposed"],"summary":"List Action Items","operationId":"rest_list_action_items","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"priority","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"}},{"name":"context","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ActionItemOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["action-items","mcp-exposed"],"summary":"Create Action Item","operationId":"rest_create_action_item","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionItemCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionItemOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/action-items/{action_item_id}":{"get":{"tags":["action-items","mcp-exposed"],"summary":"Get Action Item","operationId":"rest_get_action_item","parameters":[{"name":"action_item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Action Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionItemOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["action-items","mcp-exposed"],"summary":"Update Action Item","operationId":"rest_update_action_item","parameters":[{"name":"action_item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Action Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionItemUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionItemOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["action-items","mcp-exposed"],"summary":"Delete Action Item","operationId":"rest_delete_action_item","parameters":[{"name":"action_item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Action Item Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/action-items/{action_item_id}/complete":{"post":{"tags":["action-items","mcp-exposed"],"summary":"Complete Action Item","operationId":"rest_complete_action_item","parameters":[{"name":"action_item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Action Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionItemOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/exports/{resource_type}/{resource_id}":{"get":{"tags":["exports"],"summary":"Export Entity","operationId":"export_entity_api_exports__resource_type___resource_id__get","parameters":[{"name":"resource_type","in":"path","required":true,"schema":{"type":"string","title":"Resource Type"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Resource Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(md|pdf)$","default":"md","title":"Format"}},{"name":"sections","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated section keys to INCLUDE (session only). Omit for all sections. Valid: cover, exec_summary, toc, metadata, trace_links, system_prompt, task_prompt, git_clone, usage, timeline, transcript, thinking, tool_calls, tool_results, reports, artifacts, approvals, notifications, errors.","title":"Sections"},"description":"Comma-separated section keys to INCLUDE (session only). Omit for all sections. Valid: cover, exec_summary, toc, metadata, trace_links, system_prompt, task_prompt, git_clone, usage, timeline, transcript, thinking, tool_calls, tool_results, reports, artifacts, approvals, notifications, errors."},{"name":"max_transcript_messages","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":5000,"minimum":0},{"type":"null"}],"description":"Session only — cap SDK messages rendered.","title":"Max Transcript Messages"},"description":"Session only — cap SDK messages rendered."},{"name":"max_tool_result_chars","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":50000,"minimum":0},{"type":"null"}],"description":"Session only — cap per-tool-result chars.","title":"Max Tool Result Chars"},"description":"Session only — cap per-tool-result chars."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/exports/{resource_type}/{resource_id}/share":{"post":{"tags":["exports"],"summary":"Share Entity","description":"Render the entity, host it on S3, and return a public shareable link.\n\nThe export is stored as a ``StoredFile`` (appears in /files, quota-counted,\nrevocable by deleting the file). The unguessable UUID in the URL is the\nshare token — anyone with the link can view it without authentication.\nSession shares honour the same ``sections`` / cap query params as the\nplain download.","operationId":"share_entity_api_exports__resource_type___resource_id__share_post","parameters":[{"name":"resource_type","in":"path","required":true,"schema":{"type":"string","title":"Resource Type"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Resource Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(md|pdf)$","default":"md","title":"Format"}},{"name":"sections","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sections"}},{"name":"max_transcript_messages","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":5000,"minimum":0},{"type":"null"}],"title":"Max Transcript Messages"}},{"name":"max_tool_result_chars","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":50000,"minimum":0},{"type":"null"}],"title":"Max Tool Result Chars"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/entity-links/{from_type}/{from_id}":{"get":{"tags":["entity-links","mcp-exposed"],"summary":"List Entity Links","operationId":"rest_list_entity_links","parameters":[{"name":"from_type","in":"path","required":true,"schema":{"type":"string","title":"From Type"}},{"name":"from_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"From Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityLinkOut"},"title":"Response Rest List Entity Links"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["entity-links","mcp-exposed"],"summary":"Create Entity Link","operationId":"rest_create_entity_link","parameters":[{"name":"from_type","in":"path","required":true,"schema":{"type":"string","title":"From Type"}},{"name":"from_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"From Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityLinkCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityLinkOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/entity-links/{to_type}/{to_id}/linked-from":{"get":{"tags":["entity-links","mcp-exposed"],"summary":"List Entities Linked From","description":"Reverse lookup: everything (of any FROM_TYPES kind) linking TO this entity.","operationId":"rest_list_entities_linked_from","parameters":[{"name":"to_type","in":"path","required":true,"schema":{"type":"string","title":"To Type"}},{"name":"to_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"To Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityLinkOut"},"title":"Response Rest List Entities Linked From"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/entity-links/{link_id}":{"delete":{"tags":["entity-links","mcp-exposed"],"summary":"Delete Entity Link","operationId":"rest_delete_entity_link","parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Link Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/imports/{resource_type}":{"post":{"tags":["imports"],"summary":"Import Entity","operationId":"import_entity_api_imports__resource_type__post","parameters":[{"name":"resource_type","in":"path","required":true,"schema":{"type":"string","title":"Resource Type"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-servers/playground/servers":{"get":{"tags":["mcp-servers"],"summary":"List Playground Servers","description":"Return every server the MCP playground can inspect.\n\nThis intentionally differs from ``GET /api/mcp-servers``: the settings\npage needs editable DB rows only, while the playground needs the runtime\nbuilt-ins plus project-owned user servers.","operationId":"list_playground_servers_api_mcp_servers_playground_servers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PlaygroundServerOut"},"type":"array","title":"Response List Playground Servers Api Mcp Servers Playground Servers Get"}}}}}}},"/api/mcp-servers/playground/servers/{server_key}/tools":{"get":{"tags":["mcp-servers"],"summary":"List Playground Server Tools","operationId":"list_playground_server_tools_api_mcp_servers_playground_servers__server_key__tools_get","parameters":[{"name":"server_key","in":"path","required":true,"schema":{"type":"string","title":"Server Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-servers/playground/servers/{server_key}/call":{"post":{"tags":["mcp-servers"],"summary":"Call Playground Server Tool","operationId":"call_playground_server_tool_api_mcp_servers_playground_servers__server_key__call_post","parameters":[{"name":"server_key","in":"path","required":true,"schema":{"type":"string","title":"Server Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolCallRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-servers":{"get":{"tags":["mcp-servers"],"summary":"List Mcp Servers","operationId":"list_mcp_servers_api_mcp_servers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/McpServerOut"},"type":"array","title":"Response List Mcp Servers Api Mcp Servers Get"}}}}}},"post":{"tags":["mcp-servers"],"summary":"Create Mcp Server","operationId":"create_mcp_server_api_mcp_servers_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServerCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-servers/{server_id}":{"get":{"tags":["mcp-servers"],"summary":"Get Mcp Server","operationId":"get_mcp_server_api_mcp_servers__server_id__get","parameters":[{"name":"server_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Server Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["mcp-servers"],"summary":"Update Mcp Server","operationId":"update_mcp_server_api_mcp_servers__server_id__patch","parameters":[{"name":"server_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Server Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServerUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["mcp-servers"],"summary":"Delete Mcp Server","operationId":"delete_mcp_server_api_mcp_servers__server_id__delete","parameters":[{"name":"server_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Server Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-servers/{server_id}/ping":{"post":{"tags":["mcp-servers"],"summary":"Ping Mcp Server","description":"Test connectivity to an MCP server.\n\n- stdio: spawns the process, runs tools/list, returns tool count + latency\n- http/streamable-http/sse: sends a GET request to the configured URL, returns HTTP status + latency","operationId":"ping_mcp_server_api_mcp_servers__server_id__ping_post","parameters":[{"name":"server_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Server Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-servers/{server_id}/tools":{"get":{"tags":["mcp-servers"],"summary":"List Server Tools","description":"Discover tools exposed by any MCP server (internal, stdio, or HTTP).\n\nB4: also gated on the per-server ``member_role_required`` so a member\ncannot enumerate tools on an admin-locked server.","operationId":"list_server_tools_api_mcp_servers__server_id__tools_get","parameters":[{"name":"server_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Server Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-servers/{server_id}/call":{"post":{"tags":["mcp-servers"],"summary":"Call Server Tool","description":"Call a tool on any registered MCP server.\n\nB4: gated on the per-server ``member_role_required``. Every successful\ncall writes an audit row so cross-tenant misuse is forensically traceable.","operationId":"call_server_tool_api_mcp_servers__server_id__call_post","parameters":[{"name":"server_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Server Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolCallRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-catalog/registry/sources":{"get":{"tags":["mcp-catalog"],"summary":"List Registry Sources","operationId":"list_registry_sources_api_mcp_catalog_registry_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/McpRegistrySourceOut"},"type":"array","title":"Response List Registry Sources Api Mcp Catalog Registry Sources Get"}}}}}}},"/api/mcp-catalog/registry/search":{"get":{"tags":["mcp-catalog"],"summary":"Search Registry","operationId":"search_registry_api_mcp_catalog_registry_search_get","parameters":[{"name":"source","in":"query","required":true,"schema":{"type":"string","title":"Source"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/McpRegistryEntrySummaryOut"},"title":"Response Search Registry Api Mcp Catalog Registry Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-catalog/registry/{source}/{name}":{"get":{"tags":["mcp-catalog"],"summary":"Get Registry Entry","operationId":"get_registry_entry_api_mcp_catalog_registry__source___name__get","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpRegistryEntryDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-catalog/registry/{source}/{name}/prefill":{"post":{"tags":["mcp-catalog"],"summary":"Prefill Registry Entry","description":"Best-guess ``McpServerCreate`` payload for the manual Add Server form.\n\nNever installs anything — the admin still explicitly reviews/edits/\nsubmits through the existing manual create flow. This is the ONLY way\na live registry result reaches ``mcp_servers``; there is no one-click\ninstall path for unvetted registry data.","operationId":"prefill_registry_entry_api_mcp_catalog_registry__source___name__prefill_post","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-catalog":{"get":{"tags":["mcp-catalog"],"summary":"List Catalog","operationId":"list_catalog_api_mcp_catalog_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/McpCatalogEntryOut"},"title":"Response List Catalog Api Mcp Catalog Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-catalog/{slug}":{"get":{"tags":["mcp-catalog"],"summary":"Get Catalog Entry","operationId":"get_catalog_entry_api_mcp_catalog__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpCatalogEntryOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-catalog/{slug}/test":{"post":{"tags":["mcp-catalog"],"summary":"Test Catalog Entry","description":"Live tool-list preview against user-entered config. Persists nothing.","operationId":"test_catalog_entry_api_mcp_catalog__slug__test_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpCatalogTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpCatalogTestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-catalog/{slug}/install":{"post":{"tags":["mcp-catalog"],"summary":"Install Catalog Entry","operationId":"install_catalog_entry_api_mcp_catalog__slug__install_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpCatalogInstallRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp-catalog/{slug}/update":{"post":{"tags":["mcp-catalog"],"summary":"Update Catalog Entry","operationId":"update_catalog_entry_api_mcp_catalog__slug__update_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpCatalogUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpServerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git-repos":{"get":{"tags":["git-repos","mcp-exposed"],"summary":"List Git Repos","operationId":"rest_list_git_repos","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/GitRepoOut"},"type":"array","title":"Response Rest List Git Repos"}}}}}},"post":{"tags":["git-repos"],"summary":"Create Git Repo","operationId":"create_git_repo_api_git_repos_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitRepoCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitRepoOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git-repos/{repo_id}":{"get":{"tags":["git-repos","mcp-exposed"],"summary":"Get Git Repo","operationId":"rest_get_git_repo","parameters":[{"name":"repo_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Repo Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitRepoOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["git-repos"],"summary":"Update Git Repo","operationId":"update_git_repo_api_git_repos__repo_id__patch","parameters":[{"name":"repo_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Repo Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitRepoUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitRepoOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["git-repos"],"summary":"Delete Git Repo","operationId":"delete_git_repo_api_git_repos__repo_id__delete","parameters":[{"name":"repo_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Repo Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/git-repos/{repo_id}/test":{"post":{"tags":["git-repos"],"summary":"Test Git Repo","description":"Verify repository connectivity by running git ls-remote.","operationId":"test_git_repo_api_git_repos__repo_id__test_post","parameters":[{"name":"repo_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Repo Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connected-accounts":{"get":{"tags":["connected-accounts","mcp-exposed"],"summary":"List Connected Accounts","operationId":"rest_list_connected_accounts","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ConnectedAccountOut"},"type":"array","title":"Response Rest List Connected Accounts"}}}}}}},"/api/connected-accounts/{account_id}":{"get":{"tags":["connected-accounts","mcp-exposed"],"summary":"Get Connected Account","operationId":"rest_get_connected_account","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectedAccountOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["connected-accounts"],"summary":"Update Connected Account","operationId":"update_connected_account_api_connected_accounts__account_id__patch","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectedAccountUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectedAccountOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["connected-accounts"],"summary":"Delete Connected Account","operationId":"delete_connected_account_api_connected_accounts__account_id__delete","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connected-accounts/{account_id}/refresh":{"post":{"tags":["connected-accounts"],"summary":"Refresh Connected Account","operationId":"refresh_connected_account_api_connected_accounts__account_id__refresh_post","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectedAccountOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notification-destinations":{"get":{"tags":["notifications","mcp-exposed"],"summary":"List Destinations","operationId":"rest_list_notification_destinations","parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NotificationDestinationOut"},"title":"Response Rest List Notification Destinations"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["notifications","mcp-exposed"],"summary":"Create Destination","operationId":"rest_create_notification_destination","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationDestinationCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationDestinationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notification-destinations/{destination_id}":{"get":{"tags":["notifications","mcp-exposed"],"summary":"Get Destination","operationId":"rest_get_notification_destination","parameters":[{"name":"destination_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Destination Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationDestinationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["notifications","mcp-exposed"],"summary":"Update Destination","operationId":"rest_update_notification_destination","parameters":[{"name":"destination_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Destination Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationDestinationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationDestinationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["notifications","mcp-exposed"],"summary":"Delete Destination","operationId":"rest_delete_notification_destination","parameters":[{"name":"destination_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Destination Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notification-destinations/{destination_id}/test":{"post":{"tags":["notifications","mcp-exposed"],"summary":"Test Destination","description":"Send a one-off test notification to a destination to verify its config.","operationId":"rest_test_notification_destination","parameters":[{"name":"destination_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Destination Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notification-routing-rules":{"get":{"tags":["notifications","mcp-exposed"],"summary":"List Rules","operationId":"rest_list_notification_routing_rules","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/NotificationRoutingRuleOut"},"type":"array","title":"Response Rest List Notification Routing Rules"}}}}}},"post":{"tags":["notifications","mcp-exposed"],"summary":"Create Rule","operationId":"rest_create_notification_routing_rule","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationRoutingRuleCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationRoutingRuleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notification-routing-rules/{rule_id}":{"patch":{"tags":["notifications","mcp-exposed"],"summary":"Update Rule","operationId":"rest_update_notification_routing_rule","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationRoutingRuleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationRoutingRuleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["notifications","mcp-exposed"],"summary":"Delete Rule","operationId":"rest_delete_notification_routing_rule","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/project-settings":{"get":{"tags":["project-settings"],"summary":"Get Project Settings","description":"Get project settings for the current project.\n\nReturns settings with all branding, theme, SMTP, and system prompt config.\nIf settings don't exist, creates them with defaults.\n\nRequires: X-Project-ID header (set by project middleware)","operationId":"get_project_settings_api_project_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectSettingOut"}}}}}},"put":{"tags":["project-settings"],"summary":"Update Project Settings Endpoint","description":"Update project settings (upsert operation).\n\nAccepts partial updates - only provided fields are changed.\nAutomatically creates with defaults if settings don't exist.\n\nHonors the ``Idempotency-Key`` request header. A retried request\nwith the same key returns the original cached response — avoids\ndouble-emitting per-section audit rows when a UI form re-submits\non a network blip. Pattern mirrors ``api/tasks.py:trigger_task``.\n\nRequires: X-Project-ID header (set by project middleware)","operationId":"update_project_settings_endpoint_api_project_settings_put","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectSettingUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectSettingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/secrets":{"get":{"tags":["secrets"],"summary":"List Secrets","operationId":"list_secrets_api_secrets_get","parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_SecretListOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["secrets"],"summary":"Create Secret","operationId":"create_secret_api_secrets_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/secrets/count":{"get":{"tags":["secrets"],"summary":"Count Secrets","operationId":"count_secrets_api_secrets_count_get","parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"environment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/secrets/{secret_id}":{"get":{"tags":["secrets"],"summary":"Get Secret","operationId":"get_secret_api_secrets__secret_id__get","parameters":[{"name":"secret_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Secret Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["secrets"],"summary":"Update Secret","operationId":"update_secret_api_secrets__secret_id__patch","parameters":[{"name":"secret_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Secret Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecretOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["secrets"],"summary":"Delete Secret","operationId":"delete_secret_api_secrets__secret_id__delete","parameters":[{"name":"secret_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Secret Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-configs/stats":{"get":{"tags":["webhooks","mcp-exposed"],"summary":"Webhook Stats","operationId":"rest_get_webhook_config_stats","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookStatsOut"}}}}}}},"/api/webhook-configs":{"get":{"tags":["webhooks","mcp-exposed"],"summary":"List Webhook Configs","operationId":"rest_list_webhook_configs","parameters":[{"name":"enabled","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},{"name":"task_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"include_buckets","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Buckets"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_WebhookConfigListItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-configs/bulk":{"delete":{"tags":["webhooks","mcp-exposed"],"summary":"Bulk Delete Webhook Configs","operationId":"rest_bulk_delete_webhook_configs","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookBulkDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookBulkDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-configs/{webhook_id}":{"get":{"tags":["webhooks","mcp-exposed"],"summary":"Get Webhook Config Detail","operationId":"rest_get_webhook_config","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-configs/{webhook_id}/test":{"post":{"tags":["webhooks","mcp-exposed"],"summary":"Test Webhook By Config Id","description":"Test-trigger a webhook using its config ID (no token needed, authenticated via project).","operationId":"rest_test_webhook_config","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/WebhookTestRequest"},{"type":"null"}],"title":"Data"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTriggerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-configs/{webhook_id}/rotate":{"post":{"tags":["webhooks","mcp-exposed"],"summary":"Rotate Webhook Token","description":"Rotate the webhook token with a grace period for the old one.\n\nThe body is optional — a bare ``POST .../rotate`` rotates with the default\n24-hour grace window (operators shouldn't have to send ``{}``).","operationId":"rest_rotate_webhook_token","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RotateTokenRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRotatedTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-configs/verify-signature":{"post":{"tags":["webhooks"],"summary":"Verify Signature Playground","description":"Run the configured verifier against a pasted request. Mirrors the\nexact code path used at ingress time, so a PASS here guarantees a PASS\nin production.","operationId":"verify_signature_playground_api_webhook_configs_verify_signature_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignatureVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignatureVerifyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-configs/{webhook_id}/routing-rules":{"get":{"tags":["webhooks"],"summary":"List Routing Rules","operationId":"list_routing_rules_api_webhook_configs__webhook_id__routing_rules_get","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookRoutingRuleOut"},"title":"Response List Routing Rules Api Webhook Configs  Webhook Id  Routing Rules Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["webhooks"],"summary":"Create Routing Rule","operationId":"create_routing_rule_api_webhook_configs__webhook_id__routing_rules_post","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRoutingRuleCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRoutingRuleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-configs/{webhook_id}/template-preview":{"post":{"tags":["webhooks"],"summary":"Render Template Preview","operationId":"render_template_preview_api_webhook_configs__webhook_id__template_preview_post","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplatePreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplatePreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-configs/{webhook_id}/privacy":{"get":{"tags":["webhooks"],"summary":"Get Webhook Privacy","operationId":"get_webhook_privacy_api_webhook_configs__webhook_id__privacy_get","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPrivacySettings"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["webhooks"],"summary":"Update Webhook Privacy","operationId":"update_webhook_privacy_api_webhook_configs__webhook_id__privacy_patch","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPrivacySettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPrivacySettings"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-configs/preview-redaction":{"post":{"tags":["webhooks"],"summary":"Preview Redaction Against Payload","description":"Preview redaction rules against a supplied sample payload. Unlike the\nevent-based preview, this produces a meaningful before/after diff because\nthe input hasn't been redacted yet.","operationId":"preview_redaction_against_payload_api_webhook_configs_preview_redaction_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRedactionPreviewRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRedactionPreviewOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outbound-webhooks":{"get":{"tags":["outbound-webhooks","mcp-exposed"],"summary":"List Outbound Webhooks","operationId":"rest_list_outbound_webhooks","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/OutboundWebhookConfigOut"},"type":"array","title":"Response Rest List Outbound Webhooks"}}}}}},"post":{"tags":["outbound-webhooks","mcp-exposed"],"summary":"Create Outbound Webhook","description":"Create a subscription. Returns the row PLUS the plaintext HMAC\nsecret — show it to the operator once, then never again.","operationId":"rest_create_outbound_webhook","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundWebhookConfigCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundWebhookConfigCreatedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outbound-webhooks/{webhook_id}":{"patch":{"tags":["outbound-webhooks","mcp-exposed"],"summary":"Update Outbound Webhook","operationId":"rest_update_outbound_webhook","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundWebhookConfigUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundWebhookConfigOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["outbound-webhooks","mcp-exposed"],"summary":"Delete Outbound Webhook","operationId":"rest_delete_outbound_webhook","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outbound-webhooks/{webhook_id}/rotate":{"post":{"tags":["outbound-webhooks","mcp-exposed"],"summary":"Rotate Outbound Webhook","description":"Rotate the HMAC secret. Returns the new plaintext once.","operationId":"rest_rotate_outbound_webhook","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundWebhookConfigCreatedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-events":{"get":{"tags":["webhooks"],"summary":"List Webhook Events","operationId":"list_webhook_events_api_webhook_events_get","parameters":[{"name":"task_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_WebhookEventListItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-events/{event_id}":{"get":{"tags":["webhooks"],"summary":"Get Webhook Event Detail","operationId":"get_webhook_event_detail_api_webhook_events__event_id__get","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEventDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-events/{event_id}/replay":{"post":{"tags":["webhooks"],"summary":"Replay Webhook Event","description":"Re-dispatch a past webhook event against the current task config.","operationId":"replay_webhook_event_api_webhook_events__event_id__replay_post","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTriggerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-events/bulk-replay":{"post":{"tags":["webhooks"],"summary":"Bulk Replay Webhook Events","description":"Replay a batch of past events. Each failure is captured per-item\nso a single bad event doesn't abort the whole batch.","operationId":"bulk_replay_webhook_events_api_webhook_events_bulk_replay_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookBulkReplayRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookBulkReplayResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-events/{event_id}/redaction-preview":{"get":{"tags":["webhooks"],"summary":"Get Redaction Preview","description":"Return before/after redaction diff for the stored payload of an event.\n\nNote: the stored payload has already been redacted at ingest time, so the\ndiff reflects what would happen if the current rules were applied again\n— NOT what the inbound request looked like. To test rules against a\npre-redaction payload, use POST /api/webhook-configs/preview-redaction.","operationId":"get_redaction_preview_api_webhook_events__event_id__redaction_preview_get","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRedactionPreviewOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-events/{event_id}/purge-payload":{"post":{"tags":["webhooks"],"summary":"Purge Event Payload","description":"Null payload and headers on an event row, keeping everything else intact.","operationId":"purge_event_payload_api_webhook_events__event_id__purge_payload_post","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPurgeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-events/bulk-purge":{"post":{"tags":["webhooks"],"summary":"Bulk Purge Event Payloads","description":"Null payload and headers for a list of event IDs.","operationId":"bulk_purge_event_payloads_api_webhook_events_bulk_purge_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPurgeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPurgeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tasks/{task_id}/webhook":{"get":{"tags":["webhooks","mcp-exposed"],"summary":"Get Webhook Config","description":"Return the webhook config for a task, or null if none is configured.\n\nReturning 200 + null for the absent case (instead of 404) lets the\nfrontend display the \"Enable Webhook\" empty state without polluting\nthe browser console with an expected-404 error. The real 404 case\n(task itself doesn't exist) still raises.","operationId":"rest_get_task_webhook","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/WebhookConfigOut"},{"type":"null"}],"title":"Response Rest Get Task Webhook"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["webhooks","mcp-exposed"],"summary":"Create Webhook Config","operationId":"rest_create_task_webhook","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookConfigCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookConfigCreatedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["webhooks","mcp-exposed"],"summary":"Update Webhook Config","operationId":"rest_update_task_webhook","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookConfigUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookConfigOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["webhooks","mcp-exposed"],"summary":"Delete Webhook Config","operationId":"rest_delete_task_webhook","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}}],"responses":{"204":{"description":"Webhook config deleted"},"404":{"description":"Not found"},"422":{"description":"Validation error"}}}},"/api/webhook-providers":{"get":{"tags":["webhooks"],"summary":"List Providers","operationId":"list_providers_api_webhook_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WebhookProviderOut"},"type":"array","title":"Response List Providers Api Webhook Providers Get"}}}}}}},"/api/webhook-providers/{provider_id}/docs":{"get":{"tags":["webhooks"],"summary":"Get Provider Docs","description":"Return Markdown documentation for a provider.\n\nSynthesises a summary from the catalogue data since we don't ship a full\ndocs body in the TOML.  The response is plain text/markdown.","operationId":"get_provider_docs_api_webhook_providers__provider_id__docs_get","parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","title":"Provider Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}},"text/markdown":{}}},"404":{"description":"Unknown provider"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-providers/{provider_id}":{"get":{"tags":["webhooks"],"summary":"Get Provider Detail","operationId":"get_provider_detail_api_webhook_providers__provider_id__get","parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","title":"Provider Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookProviderDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-providers/{provider_id}/raw":{"get":{"tags":["webhooks"],"summary":"Get Provider Raw","description":"Return the raw provider definition as parsed from\nconfig/webhook-providers.toml. Exposed so operators can verify\nexactly what Veirox will do with an incoming request from a\ngiven provider — signature scheme, content type, sample_payload,\nsnippets — without grepping the repo.","operationId":"get_provider_raw_api_webhook_providers__provider_id__raw_get","parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","title":"Provider Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-providers/{provider_id}/render-snippets":{"post":{"tags":["webhooks"],"summary":"Render Snippets","operationId":"render_snippets_api_webhook_providers__provider_id__render_snippets_post","parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","title":"Provider Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderSnippetsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RenderedSnippet"},"title":"Response Render Snippets Api Webhook Providers  Provider Id  Render Snippets Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-routing-rules/{rule_id}":{"patch":{"tags":["webhooks"],"summary":"Update Routing Rule","operationId":"update_routing_rule_api_webhook_routing_rules__rule_id__patch","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRoutingRuleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRoutingRuleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["webhooks"],"summary":"Delete Routing Rule","operationId":"delete_routing_rule_api_webhook_routing_rules__rule_id__delete","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-metrics/timeseries":{"get":{"tags":["webhooks"],"summary":"Get Webhook Timeseries","operationId":"get_webhook_timeseries_api_webhook_metrics_timeseries_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"type":"string","format":"date-time","description":"Start of window (default: 24h ago)","title":"Since"},"description":"Start of window (default: 24h ago)"},{"name":"bucket_seconds","in":"query","required":false,"schema":{"type":"integer","minimum":60,"description":"Bucket width in seconds","default":300,"title":"Bucket Seconds"},"description":"Bucket width in seconds"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTimeseriesOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-metrics/latency":{"get":{"tags":["webhooks"],"summary":"Get Webhook Latency","operationId":"get_webhook_latency_api_webhook_metrics_latency_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"type":"string","format":"date-time","description":"Start of window (default: 24h ago)","title":"Since"},"description":"Start of window (default: 24h ago)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookLatencyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-metrics/live":{"get":{"tags":["webhooks"],"summary":"Live Webhook Events","description":"SSE stream of live webhook events for this project.","operationId":"live_webhook_events_api_webhook_metrics_live_get","responses":{"200":{"description":"Successful Response"}}}},"/api/settings/webhook-privacy":{"get":{"tags":["webhooks"],"summary":"Get Project Webhook Privacy","operationId":"get_project_webhook_privacy_api_settings_webhook_privacy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRetentionSettings"}}}}}},"patch":{"tags":["webhooks"],"summary":"Update Project Webhook Privacy","operationId":"update_project_webhook_privacy_api_settings_webhook_privacy_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRetentionSettingsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRetentionSettings"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhook-troubleshoot/tree":{"get":{"tags":["webhooks"],"summary":"Get Troubleshoot Tree","description":"Return the full decision tree as a dict of node_id → node.","operationId":"get_troubleshoot_tree_api_webhook_troubleshoot_tree_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/TroubleshootNodeOut"},"type":"object","title":"Response Get Troubleshoot Tree Api Webhook Troubleshoot Tree Get"}}}}}}},"/api/webhook-recipes":{"get":{"tags":["webhooks"],"summary":"List Recipes","description":"List all available webhook integration recipes.","operationId":"list_recipes_api_webhook_recipes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WebhookRecipeOut"},"type":"array","title":"Response List Recipes Api Webhook Recipes Get"}}}}}}},"/api/webhook-recipes/{slug}":{"get":{"tags":["webhooks"],"summary":"Get Recipe","description":"Return the Markdown body of a single recipe by slug.","operationId":"get_recipe_api_webhook_recipes__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}},"text/markdown":{}}},"404":{"description":"Unknown recipe"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/api-keys":{"get":{"tags":["api-keys"],"summary":"List Keys","operationId":"list_keys_api_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ApiKeyOut"},"type":"array","title":"Response List Keys Api Api Keys Get"}}}}}},"post":{"tags":["api-keys"],"summary":"Create Key","operationId":"create_key_api_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/veirox__schemas__api_keys__ApiKeyCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/api-keys/discoverable-tools":{"get":{"tags":["api-keys"],"summary":"List Discoverable Tools","description":"Return every external-MCP tool the operator can pick from when\nminting a key. Used by the frontend tool picker — pure metadata, no\nside effects, no project context required.\n\nThe response shape is intentionally simple (name + scope + group) so a\nnew tool added to ``mcp_external/scope_map.py`` shows up automatically\nwithout a frontend change. The detailed input schema for each tool is\navailable through the MCP ``tools/list`` JSON-RPC call once the key is\nminted; the picker only needs enough to render the tree.","operationId":"list_discoverable_tools_api_api_keys_discoverable_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/McpDiscoverableToolOut"},"type":"array","title":"Response List Discoverable Tools Api Api Keys Discoverable Tools Get"}}}}}}},"/api/api-keys/{key_id}/preview-tools":{"post":{"tags":["api-keys"],"summary":"Preview Key Tools","description":"Return the effective tool set for *key_id* — the names the external\nMCP server's ``tools/list`` would return for this credential at the\nrequested mount.\n\nBacks the \"Try it\" button in the create-/show-key modal so an operator\nsees the actual outcome of their scope + tool_allowlist choices BEFORE\nhanding the plaintext to an external agent.\n\nRead-only. The caller must hold ``api_keys:read``; this endpoint never\nmutates state and never returns the plaintext credential.","operationId":"preview_key_tools_api_api_keys__key_id__preview_tools_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}},{"name":"mount","in":"query","required":false,"schema":{"enum":["project","org"],"type":"string","description":"Which MCP mount to preview. 'project' shows every tool the key could call at /api/mcp/{project_id}; 'org' shows only the org and cross-project tools visible at /api/mcp/_org.","default":"project","title":"Mount"},"description":"Which MCP mount to preview. 'project' shows every tool the key could call at /api/mcp/{project_id}; 'org' shows only the org and cross-project tools visible at /api/mcp/_org."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpKeyPreviewOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/api-keys/{key_id}":{"get":{"tags":["api-keys"],"summary":"Get Key","operationId":"get_key_api_api_keys__key_id__get","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["api-keys"],"summary":"Update Key","operationId":"update_key_api_api_keys__key_id__patch","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api-keys"],"summary":"Revoke Key","operationId":"revoke_key_api_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/api-keys/{key_id}/rotate":{"post":{"tags":["api-keys"],"summary":"Rotate Key","operationId":"rotate_key_api_api_keys__key_id__rotate_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/veirox__schemas__api_keys__ApiKeyCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audit-logs":{"get":{"tags":["audit-logs","mcp-exposed"],"summary":"List Audit Logs","operationId":"rest_list_audit_logs","parameters":[{"name":"action_prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Prefix"}},{"name":"actor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Id"}},{"name":"resource_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Type"}},{"name":"resource_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Id"}},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"From"}},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"To"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","default":"desc","title":"Sort"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_dict_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audit-logs/export":{"get":{"tags":["audit-logs","mcp-exposed"],"summary":"Export Audit Logs","operationId":"rest_export_audit_logs","parameters":[{"name":"action_prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Prefix"}},{"name":"actor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Id"}},{"name":"resource_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Type"}},{"name":"resource_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Id"}},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"From"}},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"To"}},{"name":"fmt","in":"query","required":false,"schema":{"type":"string","pattern":"^(csv|json)$","default":"csv","title":"Fmt"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audit-logs/stats":{"get":{"tags":["audit-logs","mcp-exposed"],"summary":"Audit Log Stats","operationId":"rest_get_audit_log_stats","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/governance/retention":{"get":{"tags":["governance"],"summary":"List Retention","description":"Returns every known entity type. Entities with no explicit\npolicy come back as synthetic rows with ``is_default=True`` and\n``retention_days=None`` (= keep forever).","operationId":"list_retention_api_governance_retention_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/RetentionPolicyOut"},"type":"array","title":"Response List Retention Api Governance Retention Get"}}}}}}},"/api/governance/retention/{entity_type}":{"put":{"tags":["governance"],"summary":"Set Retention","operationId":"set_retention_api_governance_retention__entity_type__put","parameters":[{"name":"entity_type","in":"path","required":true,"schema":{"type":"string","title":"Entity Type"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetentionPolicyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetentionPolicyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["governance"],"summary":"Delete Retention","operationId":"delete_retention_api_governance_retention__entity_type__delete","parameters":[{"name":"entity_type","in":"path","required":true,"schema":{"type":"string","title":"Entity Type"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/governance/dsr":{"post":{"tags":["governance"],"summary":"Create Dsr","description":"Create a DSR and enqueue the Celery task.","operationId":"create_dsr_api_governance_dsr_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DsrCreateRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DsrOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["governance"],"summary":"List Dsrs","operationId":"list_dsrs_api_governance_dsr_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_DsrOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/governance/dsr/{dsr_id}":{"get":{"tags":["governance"],"summary":"Get Dsr","operationId":"get_dsr_api_governance_dsr__dsr_id__get","parameters":[{"name":"dsr_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dsr Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DsrOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/governance/dsr/{dsr_id}/cancel":{"post":{"tags":["governance"],"summary":"Cancel Dsr","description":"EN-3: cancel a still-open DSR. Terminal states (completed/failed/\ncancelled) → 409 so a finished erasure can't be 'undone'.","operationId":"cancel_dsr_api_governance_dsr__dsr_id__cancel_post","parameters":[{"name":"dsr_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dsr Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DsrOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/governance/pii-inventory":{"get":{"tags":["governance"],"summary":"Get Pii Inventory","operationId":"get_pii_inventory_api_governance_pii_inventory_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PiiInventoryOut"}}}}}}},"/api/admin/platform-admins":{"get":{"tags":["admin-platform-admins"],"summary":"List Platform Admins","operationId":"list_platform_admins_api_admin_platform_admins_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PlatformAdminOut"},"type":"array","title":"Response List Platform Admins Api Admin Platform Admins Get"}}}}}}},"/api/admin/platform-admins/{user_id}/grant":{"post":{"tags":["admin-platform-admins"],"summary":"Grant Platform Admin","operationId":"grant_platform_admin_api_admin_platform_admins__user_id__grant_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformAdminOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/platform-admins/{user_id}/revoke":{"post":{"tags":["admin-platform-admins"],"summary":"Revoke Platform Admin","operationId":"revoke_platform_admin_api_admin_platform_admins__user_id__revoke_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformAdminOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/orgs":{"post":{"tags":["admin-orgs"],"summary":"Create Org","description":"Provision a new org as a platform operator (MSP / multi-org).\n\nUnlike the public ``POST /api/organizations`` (which is one-human-one-org\nand human-session-only), this lets a platform admin stand up additional\norgs from the CLI. The admin is added as ``owner`` and an owner-scoped\nbootstrap API key is minted so the operator can immediately work in the\nnew org without a second browser device-flow round-trip.\n\nWrites run under ``bypass_rls()`` on a fresh session: the request's own\nsession has the caller's org GUC set, so RLS would block inserts for the\nNEW org. The bypass must be active when the transaction *begins* (the\nafter_begin listener reads the flag), so we open a new session here rather\nthan reusing ``Depends(get_db)``.","operationId":"create_org_api_admin_orgs_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgCreateIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgCreatedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin-orgs"],"summary":"List Orgs","operationId":"list_orgs_api_admin_orgs_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Orgs Api Admin Orgs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/orgs/{org_id}":{"delete":{"tags":["admin-orgs"],"summary":"Delete Org","description":"Hard-delete an org and all its data (platform operator). Cascades via FK.\n\nRuns under bypass_rls on a fresh session: the row lives outside the admin's\nown org GUC, so the request session can't see/delete it (see\n.claude/rules/rls-org-context.md). The Default org is protected.","operationId":"delete_org_api_admin_orgs__org_id__delete","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin-orgs"],"summary":"Get Org","operationId":"get_org_api_admin_orgs__org_id__get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/orgs/{org_id}/members":{"get":{"tags":["admin-orgs"],"summary":"List Org Members","operationId":"list_org_members_api_admin_orgs__org_id__members_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrgMemberOut"},"title":"Response List Org Members Api Admin Orgs  Org Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/orgs/{org_id}/projects":{"get":{"tags":["admin-orgs"],"summary":"List Org Projects","operationId":"list_org_projects_api_admin_orgs__org_id__projects_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrgProjectOut"},"title":"Response List Org Projects Api Admin Orgs  Org Id  Projects Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/orgs/{org_id}/usage":{"get":{"tags":["admin-orgs"],"summary":"Get Org Usage","operationId":"get_org_usage_api_admin_orgs__org_id__usage_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgDashboardSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/orgs/{org_id}/resources":{"get":{"tags":["admin-orgs"],"summary":"Get Org Resources","operationId":"get_org_resources_api_admin_orgs__org_id__resources_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgResourceSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/orgs/{org_id}/audit":{"get":{"tags":["admin-orgs"],"summary":"Get Org Audit","operationId":"get_org_audit_api_admin_orgs__org_id__audit_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/orgs/{org_id}/invitations":{"get":{"tags":["admin-orgs"],"summary":"List Org Invitations","operationId":"list_org_invitations_api_admin_orgs__org_id__invitations_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrgInvitationOut"},"title":"Response List Org Invitations Api Admin Orgs  Org Id  Invitations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/orgs/{org_id}/billing":{"get":{"tags":["admin-orgs"],"summary":"Get Org Billing","operationId":"get_org_billing_api_admin_orgs__org_id__billing_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgBillingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/orgs/{org_id}/governance":{"get":{"tags":["admin-orgs"],"summary":"Get Org Governance","operationId":"get_org_governance_api_admin_orgs__org_id__governance_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgGovernanceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/orgs/{org_id}/oncall":{"get":{"tags":["admin-orgs"],"summary":"Get Org Oncall","description":"Read-only cross-project on-call summary for a platform admin.\n\nOn-call is project-scoped (ENT-02 — see .claude/rules/oncall-escalation.md),\nso this fans out over every project in the org and resolves each\nschedule's current on-call LIVE via the same ``rotation_resolver``-backed\n``schedule_service.get_current`` the tenant-facing API uses — never a\ncached/precomputed value.\n\nRuns under ``bypass_rls()`` on a fresh session, mirroring\n``dashboard_service._compute_org_resource_summary``: the request's own\nsession carries the admin's own org GUC, so RLS would silently return\nZERO rows for every other org's project-scoped ``OnCallSchedule`` /\n``EscalationPolicy`` tables — a wrong-but-valid-looking empty result,\nnot an error. Never swap this back to ``Depends(get_db)``.","operationId":"get_org_oncall_api_admin_orgs__org_id__oncall_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgOnCallOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feature-flags/catalog":{"get":{"tags":["admin-feature-flags"],"summary":"Get Catalog","operationId":"get_catalog_api_admin_feature_flags_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Get Catalog Api Admin Feature Flags Catalog Get"}}}}}}},"/api/admin/feature-flags/effective":{"get":{"tags":["admin-feature-flags"],"summary":"Get Effective Global","operationId":"get_effective_global_api_admin_feature_flags_effective_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Effective Global Api Admin Feature Flags Effective Get"}}}}}}},"/api/admin/feature-flags":{"get":{"tags":["admin-feature-flags"],"summary":"List Global","operationId":"list_global_api_admin_feature_flags_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{},"type":"array","title":"Response List Global Api Admin Feature Flags Get"}}}}}}},"/api/admin/feature-flags/{key}":{"put":{"tags":["admin-feature-flags"],"summary":"Set Global","operationId":"set_global_api_admin_feature_flags__key__put","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagSetIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Global Api Admin Feature Flags  Key  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-feature-flags"],"summary":"Delete Global","operationId":"delete_global_api_admin_feature_flags__key__delete","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feature-flags/orgs/{org_id}/effective":{"get":{"tags":["admin-feature-flags"],"summary":"Get Effective Org","operationId":"get_effective_org_api_admin_feature_flags_orgs__org_id__effective_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Effective Org Api Admin Feature Flags Orgs  Org Id  Effective Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feature-flags/orgs/{org_id}":{"get":{"tags":["admin-feature-flags"],"summary":"List Org Overrides","operationId":"list_org_overrides_api_admin_feature_flags_orgs__org_id__get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"title":"Response List Org Overrides Api Admin Feature Flags Orgs  Org Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feature-flags/orgs/{org_id}/{key}":{"put":{"tags":["admin-feature-flags"],"summary":"Set Org Override","operationId":"set_org_override_api_admin_feature_flags_orgs__org_id___key__put","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagSetIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Org Override Api Admin Feature Flags Orgs  Org Id   Key  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-feature-flags"],"summary":"Delete Org Override","operationId":"delete_org_override_api_admin_feature_flags_orgs__org_id___key__delete","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feature-flags/projects/{project_id}":{"get":{"tags":["admin-feature-flags"],"summary":"List Project Overrides","operationId":"list_project_overrides_api_admin_feature_flags_projects__project_id__get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"title":"Response List Project Overrides Api Admin Feature Flags Projects  Project Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/feature-flags/projects/{project_id}/{key}":{"put":{"tags":["admin-feature-flags"],"summary":"Set Project Override","operationId":"set_project_override_api_admin_feature_flags_projects__project_id___key__put","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagSetIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Project Override Api Admin Feature Flags Projects  Project Id   Key  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-feature-flags"],"summary":"Delete Project Override","operationId":"delete_project_override_api_admin_feature_flags_projects__project_id___key__delete","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/platform-settings/catalog":{"get":{"tags":["admin-platform-settings"],"summary":"Get Catalog","operationId":"get_catalog_api_admin_platform_settings_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Get Catalog Api Admin Platform Settings Catalog Get"}}}}}}},"/api/admin/platform-settings":{"get":{"tags":["admin-platform-settings"],"summary":"List Effective","description":"Every catalog key with its effective value (override or default).","operationId":"list_effective_api_admin_platform_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Effective Api Admin Platform Settings Get"}}}}}}},"/api/admin/platform-settings/{key}":{"put":{"tags":["admin-platform-settings"],"summary":"Set Setting","operationId":"set_setting_api_admin_platform_settings__key__put","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingValueIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Setting Api Admin Platform Settings  Key  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-platform-settings"],"summary":"Delete Setting","operationId":"delete_setting_api_admin_platform_settings__key__delete","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agent-entities/{kind}":{"get":{"tags":["admin-agent-entities"],"summary":"List Global","operationId":"list_global_api_admin_agent_entities__kind__get","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AgentEntityKind"}},{"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"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityListOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-agent-entities"],"summary":"Create Global","operationId":"create_global_api_admin_agent_entities__kind__post","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AgentEntityKind"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityCreateIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/agent-entities/{kind}/{ref}":{"get":{"tags":["admin-agent-entities"],"summary":"Get Global","operationId":"get_global_api_admin_agent_entities__kind___ref__get","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AgentEntityKind"}},{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin-agent-entities"],"summary":"Update Global","operationId":"update_global_api_admin_agent_entities__kind___ref__patch","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AgentEntityKind"}},{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityUpdateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-agent-entities"],"summary":"Delete Global","operationId":"delete_global_api_admin_agent_entities__kind___ref__delete","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AgentEntityKind"}},{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/connect-ca/init":{"post":{"tags":["admin-connect-ca"],"summary":"Init Ca","operationId":"init_ca_api_admin_connect_ca_init_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitCaRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaInfoOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/connect-ca/status":{"get":{"tags":["admin-connect-ca"],"summary":"Ca Status","operationId":"ca_status_api_admin_connect_ca_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CaInfoOut"},{"type":"null"}],"title":"Response Ca Status Api Admin Connect Ca Status Get"}}}}}}},"/api/admin/connect-ca/rotate":{"post":{"tags":["admin-connect-ca"],"summary":"Rotate Ca","description":"Replace the active intermediate CA with a new certificate.\n\nThe old CA is deactivated. All connectors will re-enroll on their\nnext reconnect.  Use this when the intermediate CA is about to expire\nor has been compromised.","operationId":"rotate_ca_api_admin_connect_ca_rotate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateCaRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaInfoOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/observability/platform":{"get":{"tags":["admin-observability"],"summary":"Platform Health","operationId":"platform_health_api_admin_observability_platform_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformHealthOut"}}}}}}},"/api/admin/observability/queues":{"get":{"tags":["admin-observability"],"summary":"Queues","operationId":"queues_api_admin_observability_queues_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuesOut"}}}}}}},"/api/admin/observability/agent":{"get":{"tags":["admin-observability"],"summary":"Agent Quality","operationId":"agent_quality_api_admin_observability_agent_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentQualityOut"}}}}}}},"/api/admin/observability/prompts":{"get":{"tags":["admin-observability"],"summary":"Prompts","operationId":"prompts_api_admin_observability_prompts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsOut"}}}}}}},"/api/admin/observability/errors":{"get":{"tags":["admin-observability"],"summary":"Errors","operationId":"errors_api_admin_observability_errors_get","parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/observability/connectors":{"get":{"tags":["admin-observability"],"summary":"Connectors","operationId":"connectors_api_admin_observability_connectors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorsOut"}}}}}}},"/api/admin/observability/alerts":{"get":{"tags":["admin-observability"],"summary":"Alerts","operationId":"alerts_api_admin_observability_alerts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertsOut"}}}}}}},"/api/admin/observability/agent-funnel":{"get":{"tags":["admin-observability"],"summary":"Agent Funnel","operationId":"agent_funnel_api_admin_observability_agent_funnel_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agent Funnel Api Admin Observability Agent Funnel Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/observability/langfuse":{"get":{"tags":["admin-observability"],"summary":"Langfuse Summary","description":"Proxy a high-level Langfuse usage summary to the admin dashboard.\n\nCalls the Langfuse HTTP API using the configured host + API keys and\nreturns a normalised payload the frontend can render directly. When\nLangfuse is disabled or unreachable, returns a degraded payload\ninstead of raising so the dashboard can show a \"not available\" state.","operationId":"langfuse_summary_api_admin_observability_langfuse_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Langfuse Summary Api Admin Observability Langfuse Get"}}}}}}},"/api/admin/audit-logs":{"get":{"tags":["admin-audit-logs"],"summary":"List Audit Logs","operationId":"list_audit_logs_api_admin_audit_logs_get","parameters":[{"name":"org_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Org Id"}},{"name":"action_prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Prefix"}},{"name":"actor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Id"}},{"name":"resource_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Type"}},{"name":"resource_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Id"}},{"name":"from_ts","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"From Ts"}},{"name":"to_ts","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"To Ts"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Sort"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditLogPage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/cost-ceilings":{"get":{"tags":["admin-cost-ceilings"],"summary":"List All Ceilings","operationId":"list_all_ceilings_api_admin_cost_ceilings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List All Ceilings Api Admin Cost Ceilings Get"}}}}}}},"/api/admin/cost-ceilings/{org_id}/{scope}/{scope_id}":{"put":{"tags":["admin-cost-ceilings"],"summary":"Update Ceiling","description":"Update or create a cost ceiling for a specific org/scope combination.","operationId":"update_ceiling_api_admin_cost_ceilings__org_id___scope___scope_id__put","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}},{"name":"scope","in":"path","required":true,"schema":{"type":"string","title":"Scope"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Scope Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCeilingRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Ceiling Api Admin Cost Ceilings  Org Id   Scope   Scope Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/governance/dsrs":{"get":{"tags":["admin-governance"],"summary":"List Dsrs","operationId":"list_dsrs_api_admin_governance_dsrs_get","parameters":[{"name":"org_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Org Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DsrAdminEntry"},"title":"Response List Dsrs Api Admin Governance Dsrs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/governance/dsrs/{dsr_id}":{"get":{"tags":["admin-governance"],"summary":"Get Dsr","operationId":"get_dsr_api_admin_governance_dsrs__dsr_id__get","parameters":[{"name":"dsr_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dsr Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DsrAdminEntry"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/governance/dsrs/{dsr_id}/status":{"patch":{"tags":["admin-governance"],"summary":"Override Dsr Status","operationId":"override_dsr_status_api_admin_governance_dsrs__dsr_id__status_patch","parameters":[{"name":"dsr_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dsr Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DsrStatusUpdateIn"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/governance/pii-inventory":{"get":{"tags":["admin-governance"],"summary":"Pii Inventory","operationId":"pii_inventory_api_admin_governance_pii_inventory_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Pii Inventory Api Admin Governance Pii Inventory Get"}}}}}}},"/api/plans":{"get":{"tags":["billing"],"summary":"List Plans","operationId":"list_plans_api_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PlanOut"},"type":"array","title":"Response List Plans Api Plans Get"}}}}}}},"/api/billing/subscription":{"get":{"tags":["billing"],"summary":"Get Subscription","operationId":"get_subscription_api_billing_subscription_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionOut"}}}}}}},"/api/billing/entitlement":{"get":{"tags":["billing"],"summary":"Get Entitlement","operationId":"get_entitlement_api_billing_entitlement_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementOut"}}}}}}},"/api/billing/usage":{"get":{"tags":["billing"],"summary":"Get Usage","operationId":"get_usage_api_billing_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageOut"}}}}}}},"/api/billing/invoices":{"get":{"tags":["billing"],"summary":"List Invoices","operationId":"list_invoices_api_billing_invoices_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_InvoiceOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/cost-ceilings":{"get":{"tags":["billing"],"summary":"List Cost Ceilings","description":"List the org's cost ceilings + today's spend per ceiling.\n\nReads daily spend from the same Redis counter the pre-flight check\nconsults, so the value is at-most a few seconds stale.","operationId":"list_cost_ceilings_api_billing_cost_ceilings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CostCeilingOut"},"title":"Response List Cost Ceilings Api Billing Cost Ceilings Get"}}}}}},"put":{"tags":["billing"],"summary":"Upsert Cost Ceiling","description":"Create or update one cost ceiling.\n\n``daily_usd_limit < 0`` means unlimited (matches PlanLimits convention).\nOwner-only via the ``billing:write`` scope.","operationId":"upsert_cost_ceiling_api_billing_cost_ceilings_put","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CostCeilingIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CostCeilingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["billing"],"summary":"Delete Cost Ceiling","description":"Drop one cost ceiling (no-op if not found).","operationId":"delete_cost_ceiling_api_billing_cost_ceilings_delete","parameters":[{"name":"scope","in":"query","required":true,"schema":{"$ref":"#/components/schemas/CostCeilingScope"}},{"name":"scope_id","in":"query","required":true,"schema":{"type":"string","title":"Scope Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/checkout":{"post":{"tags":["billing"],"summary":"Start Checkout","operationId":"start_checkout_api_billing_checkout_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/veirox__schemas__billing__CheckoutRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/portal":{"post":{"tags":["billing"],"summary":"Open Portal","operationId":"open_portal_api_billing_portal_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"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"}}}}}}},"/api/billing/change-plan":{"post":{"tags":["billing"],"summary":"Change Plan","operationId":"change_plan_api_billing_change_plan_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePlanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/cancel":{"post":{"tags":["billing"],"summary":"Cancel Subscription","operationId":"cancel_subscription_api_billing_cancel_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/veirox__schemas__billing__CancelRequest"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/resume":{"post":{"tags":["billing"],"summary":"Resume Subscription","operationId":"resume_subscription_api_billing_resume_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/stripe":{"post":{"tags":["billing-webhooks"],"summary":"Stripe Webhook","operationId":"stripe_webhook_api_webhooks_stripe_post","parameters":[{"name":"Stripe-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat":{"post":{"tags":["chat"],"summary":"Send Chat","operationId":"send_chat_api_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/cancel":{"post":{"tags":["chat"],"summary":"Cancel Chat","operationId":"cancel_chat_api_chat_cancel_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/veirox__api__chat__CancelRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cancel Chat Api Chat Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/permission-response":{"post":{"tags":["chat"],"summary":"Respond To Permission","operationId":"respond_to_permission_api_chat_permission_response_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionResponseRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Respond To Permission Api Chat Permission Response Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/models":{"get":{"tags":["agent"],"summary":"List Models","description":"Return the catalog of selectable Claude models + the default.\n\nSingle source of truth: ``agents/models_catalog.py``. Aliases\n(opus/sonnet/haiku) always resolve to the current latest model via the\nClaude CLI, so this list stays current without per-release edits to every\ninterface. Consumed by the console chat/task/Config model dropdowns.","operationId":"list_models_api_agent_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/agent/settings":{"get":{"tags":["agent"],"summary":"Get Settings","operationId":"get_settings_api_agent_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettingsOut"}}}}}},"put":{"tags":["agent"],"summary":"Update Settings","operationId":"update_settings_api_agent_settings_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettingsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettingsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/claude-md":{"get":{"tags":["agent"],"summary":"Get Claude Md","description":"Read the project's CLAUDE.md (the top-level project guide). Stored at\n{workspace}/CLAUDE.md; injected into the agent's system prompt every\nturn by prompt_assembler.build().","operationId":"get_claude_md_api_agent_claude_md_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Claude Md Api Agent Claude Md Get"}}}}}},"put":{"tags":["agent"],"summary":"Put Claude Md","description":"Create/overwrite the project's CLAUDE.md. Takes effect on the next\nturn (injected by prompt_assembler.build()). The agent can equally edit\nit with its Write/Edit tools at the workspace root.","operationId":"put_claude_md_api_agent_claude_md_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeMdIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Put Claude Md Api Agent Claude Md Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/system-prompt":{"get":{"tags":["agent"],"summary":"Get System Prompt","operationId":"get_system_prompt_api_agent_system_prompt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"tags":["agent"],"summary":"Put System Prompt","operationId":"put_system_prompt_api_agent_system_prompt_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemPromptUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/effective-prompt":{"get":{"tags":["agent"],"summary":"Get Effective Prompt","description":"Return the full effective system prompt the agent would receive.\n\nAssembles all layers via the unified PromptAssembler and returns\nstructured sections for the Effective Prompt tab. Layer-3 (dynamic\nentity catalogue) is rendered from the DB-backed ``agent_entity``\ntable so the preview matches what the agent actually sees on a\nchat or scheduled run.","operationId":"get_effective_prompt_api_agent_effective_prompt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/agent/prompt-sections":{"get":{"tags":["agent"],"summary":"List Prompt Sections","description":"List all prompt sections for the project (merging the agent_prompt_section overrides with the code defaults).","operationId":"list_prompt_sections_api_agent_prompt_sections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/agent/prompt-sections/{section_id}":{"get":{"tags":["agent"],"summary":"Get Prompt Section","description":"Read a single prompt section (per-project override or code default).","operationId":"get_prompt_section_api_agent_prompt_sections__section_id__get","parameters":[{"name":"section_id","in":"path","required":true,"schema":{"type":"string","title":"Section Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["agent"],"summary":"Update Prompt Section","description":"Upsert a per-project override for ``section_id``.","operationId":"update_prompt_section_api_agent_prompt_sections__section_id__put","parameters":[{"name":"section_id","in":"path","required":true,"schema":{"type":"string","title":"Section Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptSectionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/prompt-sections/{section_id}/reset":{"post":{"tags":["agent"],"summary":"Reset Prompt Section","description":"Reset a prompt section to the code default (drops the per-project override).","operationId":"reset_prompt_section_api_agent_prompt_sections__section_id__reset_post","parameters":[{"name":"section_id","in":"path","required":true,"schema":{"type":"string","title":"Section Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/completions":{"get":{"tags":["agent"],"summary":"Get Completions","description":"List slash-completable items (commands + skills) for the project.\n\nReads from the polymorphic ``agent_entity`` table. The shape\n``{name, type, description}`` is what the chat slash-menu in the\nfrontend expects — don't rename without coordinating with\n``frontend/src/...``'s slash-command renderer.","operationId":"get_completions_api_agent_completions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Get Completions Api Agent Completions Get"}}}}}}},"/api/agent/search":{"post":{"tags":["agent"],"summary":"Search Entities","description":"Search indexed agent_entity rows — hybrid / semantic / keyword.","operationId":"search_entities_api_agent_search_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/reindex":{"post":{"tags":["agent"],"summary":"Reindex Entities","description":"Trigger full reindex of all FS-backed entities.\n\nDispatched to Celery so the request returns immediately.\nContent-hash deduplication ensures unchanged chunks are skipped.\nPass ?wait=true for synchronous reindex (small projects / tests).","operationId":"reindex_entities_api_agent_reindex_post","parameters":[{"name":"wait","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Wait"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/rag-stats":{"get":{"tags":["agent"],"summary":"Get Rag Stats","description":"Return embedding counts by entity type.","operationId":"get_rag_stats_api_agent_rag_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/ws/sessions/{session_id}/stream":{"get":{"tags":["websocket"],"summary":"Session Stream Sse","description":"SSE twin of the session WebSocket — same ``session:{id}`` Redis stream.\n\nThe browser uses this (EventSource over the same-origin auth cookie) instead\nof a WebSocket: the feed is unidirectional server→client, so SSE drops the\nupgrade handshake + the 4001/1006 close-code dance. Auth rides the standard\nHTTP middleware (cookie/bearer); access reuses ``_resolve_session_project``.\nThe WS endpoint stays for non-browser/co-watch clients.","operationId":"session_stream_sse_api_ws_sessions__session_id__stream_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-entities/{kind}":{"post":{"tags":["agent-entities","mcp-exposed"],"summary":"Create Entity","operationId":"rest_create_agent_entity","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AgentEntityKind"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityCreateIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["agent-entities","mcp-exposed"],"summary":"List Entities","operationId":"rest_list_agent_entities","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AgentEntityKind"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(updated_desc|updated_asc|created_desc|created_asc|title_asc|title_desc)$","default":"updated_desc","title":"Sort"}},{"name":"tag","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Filter by tag or label. Repeatable. Bare value (e.g. ``redis``) filters by flat tag. ``key=value`` pair (e.g. ``tech=redis``) filters by label. Multiple values are AND-ed.","default":[],"title":"Tag"},"description":"Filter by tag or label. Repeatable. Bare value (e.g. ``redis``) filters by flat tag. ``key=value`` pair (e.g. ``tech=redis``) filters by label. Multiple values are AND-ed."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityListOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-entities/-/summaries/{kind}":{"get":{"tags":["agent-entities","mcp-exposed"],"summary":"List Entity Summaries","operationId":"rest_list_agent_entity_summaries","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AgentEntityKind"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(updated_desc|updated_asc|created_desc|created_asc|title_asc|title_desc)$","default":"updated_desc","title":"Sort"}},{"name":"tag","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Filter by tag or label. Repeatable. Bare values match metadata.tags; key=value values match metadata.labels.","default":[],"title":"Tag"},"description":"Filter by tag or label. Repeatable. Bare values match metadata.tags; key=value values match metadata.labels."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntitySummaryListOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-entities/-/facets/{kind}":{"get":{"tags":["agent-entities","mcp-exposed"],"summary":"List Entity Facets","description":"Distinct tag/label values already used in this project's entities of\n``kind``, for the library filter bar's autocomplete.","operationId":"rest_list_agent_entity_facets","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AgentEntityKind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityFacetsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-entities/-/rules/test-path":{"post":{"tags":["agent-entities","mcp-exposed"],"summary":"Test Rule Path","description":"Authoring-time helper for the Rules editor: does ``test_path`` match\nany glob in ``paths``? Reuses the exact matcher the PreToolUse hook uses\nat runtime (``agents.hooks._builtin_rules``) so the UI preview can never\ndrift from real injection behaviour.","operationId":"rest_test_rule_path","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulePathTestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulePathTestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-entities/{kind}/{ref}":{"get":{"tags":["agent-entities","mcp-exposed"],"summary":"Get Entity","operationId":"rest_get_agent_entity","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AgentEntityKind"}},{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["agent-entities","mcp-exposed"],"summary":"Update Entity","operationId":"rest_update_agent_entity","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AgentEntityKind"}},{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityUpdateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["agent-entities","mcp-exposed"],"summary":"Delete Entity","operationId":"rest_delete_agent_entity","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AgentEntityKind"}},{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/{ref}/acknowledge":{"post":{"tags":["alerts","mcp-exposed"],"summary":"Acknowledge Alert","operationId":"rest_acknowledge_alert","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/{ref}/resolve":{"post":{"tags":["alerts","mcp-exposed"],"summary":"Resolve Alert","operationId":"rest_resolve_alert","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/{ref}/dismiss":{"post":{"tags":["alerts","mcp-exposed"],"summary":"Dismiss Alert","operationId":"rest_dismiss_alert","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertDismissIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/{ref}/mute":{"post":{"tags":["alerts","mcp-exposed"],"summary":"Mute Alert","operationId":"rest_mute_alert","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertMuteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/{ref}/unmute":{"post":{"tags":["alerts","mcp-exposed"],"summary":"Unmute Alert","operationId":"rest_unmute_alert","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEntityOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/mute-all":{"get":{"tags":["alerts","mcp-exposed"],"summary":"Get Alert Mute All","operationId":"rest_get_alert_mute_all","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AlertMuteAllOut"},{"type":"null"}],"title":"Response Rest Get Alert Mute All"}}}}}},"post":{"tags":["alerts","mcp-exposed"],"summary":"Mute All Alerts","operationId":"rest_mute_all_alerts","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertMuteAllIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertMuteAllOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["alerts","mcp-exposed"],"summary":"Clear Alert Mute All","operationId":"rest_clear_alert_mute_all","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertMuteAllOut"}}}}}}},"/api/alerts/{ref}/links":{"get":{"tags":["alerts","mcp-exposed"],"summary":"List Alert Links","operationId":"rest_list_alert_links","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertLinkOut"},"title":"Response Rest List Alert Links"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["alerts","mcp-exposed"],"summary":"Create Alert Link","operationId":"rest_create_alert_link","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertLinkCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertLinkOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/{ref}/links/{link_id}":{"delete":{"tags":["alerts","mcp-exposed"],"summary":"Delete Alert Link","operationId":"rest_delete_alert_link","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}},{"name":"link_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Link Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/linked/{entity_type}/{entity_id}":{"get":{"tags":["alerts","mcp-exposed"],"summary":"List Alerts Linked To Entity","operationId":"rest_list_alerts_linked_to_entity","parameters":[{"name":"entity_type","in":"path","required":true,"schema":{"type":"string","title":"Entity Type"}},{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Entity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentEntityOut"},"title":"Response Rest List Alerts Linked To Entity"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/timeseries":{"get":{"tags":["alerts","mcp-exposed"],"summary":"Get Alert Timeseries","description":"Bucketed alert-creation counts by severity — backs the Alerts page's\ntimeline panel. Buckets with zero alerts are gap-filled to zero (never\nomitted) so the frontend chart never has to reason about missing points.","operationId":"rest_get_alert_timeseries","parameters":[{"name":"bucket","in":"query","required":false,"schema":{"enum":["hour","day"],"type":"string","default":"day","title":"Bucket"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"exclusiveMinimum":0,"default":30,"title":"Days"}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Severity"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertTimeseriesBucket"},"title":"Response Rest Get Alert Timeseries"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-policy-rules":{"get":{"tags":["agent-policy","mcp-exposed"],"summary":"List Rules","operationId":"rest_list_agent_policy_rules","parameters":[{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentPolicyRuleOut"},"title":"Response Rest List Agent Policy Rules"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["agent-policy","mcp-exposed"],"summary":"Create Rule","operationId":"rest_create_agent_policy_rule","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPolicyRuleCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPolicyRuleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-policy-rules/export":{"get":{"tags":["agent-policy"],"summary":"Export Rules","operationId":"export_rules_api_agent_policy_rules_export_get","parameters":[{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Export Rules Api Agent Policy Rules Export Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-policy-rules/matches":{"get":{"tags":["agent-policy"],"summary":"List Matches","operationId":"list_matches_api_agent_policy_rules_matches_get","parameters":[{"name":"rule_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Rule Id"}},{"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"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentPolicyMatchEventOut"},"title":"Response List Matches Api Agent Policy Rules Matches Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-policy-rules/reorder":{"post":{"tags":["agent-policy"],"summary":"Reorder Rules","operationId":"reorder_rules_api_agent_policy_rules_reorder_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPolicyRulesReorderRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AgentPolicyRuleOut"},"type":"array","title":"Response Reorder Rules Api Agent Policy Rules Reorder Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-policy-rules/bulk-create":{"post":{"tags":["agent-policy"],"summary":"Bulk Create Rules","operationId":"bulk_create_rules_api_agent_policy_rules_bulk_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPolicyBulkCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AgentPolicyRuleOut"},"type":"array","title":"Response Bulk Create Rules Api Agent Policy Rules Bulk Create Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-policy-rules/import":{"post":{"tags":["agent-policy"],"summary":"Import Rules","operationId":"import_rules_api_agent_policy_rules_import_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPolicyBulkCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AgentPolicyRuleOut"},"type":"array","title":"Response Import Rules Api Agent Policy Rules Import Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-policy-rules/simulate":{"post":{"tags":["agent-policy","mcp-exposed"],"summary":"Simulate","operationId":"rest_simulate_agent_policy","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPolicySimulateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPolicySimulateResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent-policy-rules/{rule_id}":{"get":{"tags":["agent-policy","mcp-exposed"],"summary":"Get Rule","operationId":"rest_get_agent_policy_rule","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPolicyRuleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["agent-policy","mcp-exposed"],"summary":"Update Rule","operationId":"rest_update_agent_policy_rule","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPolicyRuleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPolicyRuleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["agent-policy","mcp-exposed"],"summary":"Delete Rule","operationId":"rest_delete_agent_policy_rule","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oauth/initiate":{"post":{"tags":["oauth"],"summary":"Initiate Oauth","operationId":"initiate_oauth_api_oauth_initiate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthInitiateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthInitiateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oauth/callback/google":{"get":{"tags":["oauth"],"summary":"Google Oauth Callback","description":"Google OAuth callback — called by Google after user consent. No auth required.","operationId":"google_oauth_callback_api_oauth_callback_google_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oauth/callback/slack":{"get":{"tags":["oauth"],"summary":"Slack Oauth Callback","description":"Slack OAuth callback — called by Slack after user consent. No auth required.","operationId":"slack_oauth_callback_api_oauth_callback_slack_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oauth/callback/jira":{"get":{"tags":["oauth"],"summary":"Jira Oauth Callback","description":"Jira OAuth callback — called by Atlassian after user consent. No auth required.","operationId":"jira_oauth_callback_api_oauth_callback_jira_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oauth/callback/confluence":{"get":{"tags":["oauth"],"summary":"Confluence Oauth Callback","description":"Confluence OAuth callback — called by Atlassian after user consent. No auth required.","operationId":"confluence_oauth_callback_api_oauth_callback_confluence_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oauth/callback/microsoft":{"get":{"tags":["oauth"],"summary":"Microsoft Oauth Callback","description":"Microsoft OAuth callback — called by Microsoft Entra ID after user consent. No auth required.","operationId":"microsoft_oauth_callback_api_oauth_callback_microsoft_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},{"name":"error_description","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Description"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/voice/transcribe/stream":{"post":{"tags":["voice"],"summary":"Transcribe Stream","description":"Transcribe an audio file and stream the result as SSE.\n\nAccepts multipart audio (webm, ogg, mp3, wav, etc.).\nReturns an SSE stream with transcription_chunk events.\n\nSSE events:\n  event: transcription_chunk\n  data: {\"text\": \"...\"}\n\n  event: done\n  data: {\"status\": \"complete\"}\n\n  event: error\n  data: {\"type\": \"transcription_error\", \"message\": \"...\"}","operationId":"transcribe_stream_api_voice_transcribe_stream_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_transcribe_stream_api_voice_transcribe_stream_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/telegram/webhook":{"post":{"tags":["telegram"],"summary":"Telegram Webhook","operationId":"telegram_webhook_api_telegram_webhook_post","parameters":[{"name":"x-telegram-bot-api-secret-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Telegram-Bot-Api-Secret-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Telegram Webhook Api Telegram Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/slack/webhook-url":{"get":{"tags":["slack"],"summary":"Slack Webhook Url","description":"Return the current public Slack webhook URL (for manual Event Subscriptions registration).","operationId":"slack_webhook_url_api_slack_webhook_url_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/slack/events":{"post":{"tags":["slack"],"summary":"Slack Events","description":"Receive Slack event payloads and delegate to the SlackAdapter (Bolt handler).","operationId":"slack_events_api_slack_events_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/whatsapp/pair":{"post":{"tags":["whatsapp"],"summary":"Start Pairing","description":"Start a new WhatsApp QR pairing session.","operationId":"start_pairing_api_whatsapp_pair_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairResponse"}}}}}}},"/api/whatsapp/pair/status":{"get":{"tags":["whatsapp"],"summary":"Get Pair Status","description":"Poll the current state of a WhatsApp pairing session.","operationId":"get_pair_status_api_whatsapp_pair_status_get","parameters":[{"name":"pair_id","in":"query","required":true,"schema":{"type":"string","title":"Pair Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/whatsapp/pair/cancel":{"post":{"tags":["whatsapp"],"summary":"Cancel Pairing","description":"Cancel an in-progress WhatsApp pairing session.","operationId":"cancel_pairing_api_whatsapp_pair_cancel_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/veirox__api__whatsapp__CancelRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/{task_id}":{"post":{"tags":["webhooks-public"],"summary":"Trigger Via Webhook","description":"External webhook trigger — called by AlertManager, Prometheus, or any other service.\n\nIdempotency is handled at the service layer (step 6/9 of ingest pipeline).\nThe Idempotency-Key header is passed through request.headers to the service.\n\nThis is a PUBLIC, token-authenticated, cross-tenant path: the request carries\nno user/project context, so RLS would hide the task + config rows and every\ntrigger 404'd (\"Task not found\"). Run the lookup under ``bypass_rls()`` with a\ndedicated session (mirrors the Slack/Telegram/WhatsApp inbound paths). The\nwebhook token is the authorization here, enforced inside ``ingest_request``.","operationId":"trigger_via_webhook_api_webhooks__task_id__post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"x-webhook-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Webhook-Token"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTriggerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/{webhook_id}/badge.svg":{"get":{"tags":["webhooks-public"],"summary":"Webhook Badge","description":"Public SVG badge showing 24-hour success rate. No auth — operators\nembed these in runbook READMEs.\n\nUnknown webhook IDs return the same shape of SVG (label \"no events\n(24h)\", neutral colour) as a configured-but-idle webhook, so the\nendpoint no longer doubles as an existence oracle for attackers\nenumerating UUIDs. Rate-limited per IP.\n\nPublic, no-project path → run under ``bypass_rls()`` (a dedicated session)\nso the config/event lookups aren't hidden by row-level security.","operationId":"webhook_badge_api_webhooks__webhook_id__badge_svg_get","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/sessions/{token}":{"get":{"tags":["sessions-public"],"summary":"Get Shared Session","description":"Return a redacted, read-only transcript for a valid share token.","operationId":"get_shared_session_api_public_sessions__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Shared Session Api Public Sessions  Token  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/approvals/{token}":{"get":{"tags":["approvals-public"],"summary":"Get Public Approval","description":"Return the token-scoped approval for the public confirmation page.","operationId":"get_public_approval_api_public_approvals__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalLinkPublicOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/approvals/{token}/decide":{"post":{"tags":["approvals-public"],"summary":"Decide Public Approval","description":"Record a token-scoped decision (approve / approve_and_run / reject).\n\n``approve_and_run`` additionally resumes the linked agent session so it can\ncontinue from the approved point (best-effort — a plain approve already\nunblocks any agent parked in ``wait_for_decision`` via the Redis wakeup that\n``resolve_approval_idempotent`` publishes).","operationId":"decide_public_approval_api_public_approvals__token__decide_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApprovalDecision"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Decide Public Approval Api Public Approvals  Token  Decide Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors/enroll":{"post":{"tags":["connectors-enrollment"],"summary":"Enroll","description":"Redeem a one-time enrollment token. No X-Project-ID required.","operationId":"enroll_api_connectors_enroll_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollmentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors":{"get":{"tags":["connectors"],"summary":"List Connectors","operationId":"list_connectors_api_connectors_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ConnectorOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["connectors"],"summary":"Create Connector","operationId":"create_connector_api_connectors_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors/{connector_id}":{"get":{"tags":["connectors"],"summary":"Get Connector","operationId":"get_connector_api_connectors__connector_id__get","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["connectors"],"summary":"Update Connector","operationId":"update_connector_api_connectors__connector_id__patch","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["connectors"],"summary":"Delete Connector","operationId":"delete_connector_api_connectors__connector_id__delete","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors/{connector_id}/revoke":{"post":{"tags":["connectors"],"summary":"Revoke Connector","description":"Revoke a connector: mark row + credentials revoked, append to CRL,\nand close the WS across any uvicorn worker that might own it.\n\nThe revocation flow is consolidated in ``connector_service.revoke_connector``\nwhich both flips the row status + credentials AND appends cert\ncredentials to the CRL. This API endpoint is a thin wrapper around it.","operationId":"revoke_connector_api_connectors__connector_id__revoke_post","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors/{connector_id}/enrollment-tokens":{"post":{"tags":["connectors"],"summary":"Mint Enrollment Token","description":"Generate a one-time install token for the connector.\n\nThe raw token is returned ONCE — only its sha256 hash is stored in the\ndatabase. The install command embeds the token; treat the response as a\nsecret.","operationId":"mint_enrollment_token_api_connectors__connector_id__enrollment_tokens_post","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollmentTokenOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors/{connector_id}/auth-events":{"get":{"tags":["connectors"],"summary":"List Connector Auth Events","description":"List WS auth and enrollment attempts for a connector (success + failure).","operationId":"list_connector_auth_events_api_connectors__connector_id__auth_events_get","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ConnectorAuthEventOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors/{connector_id}/commands":{"get":{"tags":["connectors"],"summary":"List Connector Commands","operationId":"list_connector_commands_api_connectors__connector_id__commands_get","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_CommandLogOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors/{connector_id}/policy":{"get":{"tags":["connectors"],"summary":"Get Connector Policy","description":"Return the connector's command policy (creates a default one if none exists).","operationId":"get_connector_policy_api_connectors__connector_id__policy_get","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorPolicyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["connectors"],"summary":"Update Connector Policy","operationId":"update_connector_policy_api_connectors__connector_id__policy_patch","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorPolicyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorPolicyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors/{connector_id}/policy/rules":{"get":{"tags":["connectors"],"summary":"List Policy Rules","operationId":"list_policy_rules_api_connectors__connector_id__policy_rules_get","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectorPolicyRuleOut"},"title":"Response List Policy Rules Api Connectors  Connector Id  Policy Rules Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["connectors"],"summary":"Create Policy Rule","operationId":"create_policy_rule_api_connectors__connector_id__policy_rules_post","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorPolicyRuleCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorPolicyRuleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors/{connector_id}/policy/rules/{rule_id}":{"patch":{"tags":["connectors"],"summary":"Update Policy Rule","operationId":"update_policy_rule_api_connectors__connector_id__policy_rules__rule_id__patch","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}},{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorPolicyRuleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorPolicyRuleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["connectors"],"summary":"Delete Policy Rule","operationId":"delete_policy_rule_api_connectors__connector_id__policy_rules__rule_id__delete","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}},{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors/{connector_id}/policy/rules/reorder":{"post":{"tags":["connectors"],"summary":"Reorder Policy Rules","operationId":"reorder_policy_rules_api_connectors__connector_id__policy_rules_reorder_post","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyRulesReorderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectorPolicyRuleOut"},"title":"Response Reorder Policy Rules Api Connectors  Connector Id  Policy Rules Reorder Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors/{connector_id}/policy/simulate":{"post":{"tags":["connectors"],"summary":"Simulate Policy","description":"Dry-run the policy engine against a command without executing it.\n\nUseful for testing rules before enabling them in production. The response\nshows which rule would match and what decision would be applied.","operationId":"simulate_policy_api_connectors__connector_id__policy_simulate_post","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicySimulateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicySimulateResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors/{connector_id}/upstreams":{"get":{"tags":["connectors"],"summary":"List Upstreams","operationId":"list_upstreams_api_connectors__connector_id__upstreams_get","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["connectors"],"summary":"Create Upstream","operationId":"create_upstream_api_connectors__connector_id__upstreams_post","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connectors/{connector_id}/upstreams/{upstream_id}":{"put":{"tags":["connectors"],"summary":"Update Upstream","operationId":"update_upstream_api_connectors__connector_id__upstreams__upstream_id__put","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}},{"name":"upstream_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Upstream Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["connectors"],"summary":"Delete Upstream","operationId":"delete_upstream_api_connectors__connector_id__upstreams__upstream_id__delete","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}},{"name":"upstream_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Upstream Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connector-policy-groups":{"get":{"tags":["connect"],"summary":"List Policy Groups","operationId":"list_policy_groups_api_connector_policy_groups_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PolicyGroupOut"},"type":"array","title":"Response List Policy Groups Api Connector Policy Groups Get"}}}}}},"post":{"tags":["connect"],"summary":"Create Policy Group","operationId":"create_policy_group_api_connector_policy_groups_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyGroupCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyGroupOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connector-policy-groups/{group_id}":{"get":{"tags":["connect"],"summary":"Get Policy Group","operationId":"get_policy_group_api_connector_policy_groups__group_id__get","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyGroupOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["connect"],"summary":"Update Policy Group","operationId":"update_policy_group_api_connector_policy_groups__group_id__patch","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyGroupUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyGroupOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["connect"],"summary":"Delete Policy Group","operationId":"delete_policy_group_api_connector_policy_groups__group_id__delete","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connector-policy-groups/{group_id}/members":{"get":{"tags":["connect"],"summary":"List Group Members","operationId":"list_group_members_api_connector_policy_groups__group_id__members_get","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"},"title":"Response List Group Members Api Connector Policy Groups  Group Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["connect"],"summary":"Add Group Member","operationId":"add_group_member_api_connector_policy_groups__group_id__members_post","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupMemberAdd"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connector-policy-groups/{group_id}/members/{connector_id}":{"delete":{"tags":["connect"],"summary":"Remove Group Member","operationId":"remove_group_member_api_connector_policy_groups__group_id__members__connector_id__delete","parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connector Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connect/ca.pem":{"get":{"tags":["connect-ca"],"summary":"Get Ca Cert","description":"Return the active intermediate CA PEM.\n\nServed to the Rust agent at install time (written into\n``/etc/veirox-connector/ca.pem``) so the handshake only trusts the\nVeirox CA, not the customer host's system root store.","operationId":"get_ca_cert_api_connect_ca_pem_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"503":{"description":"CA not yet initialised"}}}},"/api/connect/crl.pem":{"get":{"tags":["connect-ca"],"summary":"Get Crl","description":"Return a freshly-signed CRL PEM.\n\nBuilt from ``connector_revocation_list`` on every call so revocations\npropagate immediately. Traefik's ``tls.options.clientAuth`` can\npoint at this URL (indirectly, via a periodic rsync) so the TLS\nlayer rejects revoked certs before they even reach the backend.","operationId":"get_crl_api_connect_crl_pem_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"503":{"description":"CA not yet initialised"}}}},"/api/infra/environments":{"get":{"tags":["infra","mcp-exposed"],"summary":"List Environments","operationId":"rest_list_environments","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_EnvironmentOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["infra","mcp-exposed"],"summary":"Create Environment","operationId":"rest_create_environment","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/infra/environments/{env_id}":{"get":{"tags":["infra","mcp-exposed"],"summary":"Get Environment","operationId":"rest_get_environment","parameters":[{"name":"env_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Env Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["infra","mcp-exposed"],"summary":"Update Environment","operationId":"rest_update_environment","parameters":[{"name":"env_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Env Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["infra","mcp-exposed"],"summary":"Delete Environment","operationId":"rest_delete_environment","parameters":[{"name":"env_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Env Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/infra/resources":{"get":{"tags":["infra","mcp-exposed"],"summary":"List All Resources","operationId":"rest_list_all_infra_resources","parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},{"name":"environment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Environment Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"labels","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JSON object for label-based filtering","title":"Labels"},"description":"JSON object for label-based filtering"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"tier","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_InfraResourceOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/infra/resources/bulk-import":{"post":{"tags":["infra","mcp-exposed"],"summary":"Bulk Import","operationId":"rest_bulk_import_infra","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkImportPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkImportResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/infra/resources/{kind}":{"post":{"tags":["infra","mcp-exposed"],"summary":"Create Resource","operationId":"rest_create_infra_resource","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/InfraResourceKind"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfraResourceCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfraResourceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["infra","mcp-exposed"],"summary":"List Resources By Kind","operationId":"rest_list_infra_resources","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/InfraResourceKind"}},{"name":"environment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Environment Id"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"labels","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Labels"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_InfraResourceOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/infra/resources/{kind}/{ref}":{"get":{"tags":["infra","mcp-exposed"],"summary":"Get Resource","operationId":"rest_get_infra_resource","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/InfraResourceKind"}},{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfraResourceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["infra","mcp-exposed"],"summary":"Update Resource","operationId":"rest_update_infra_resource","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/InfraResourceKind"}},{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfraResourceUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfraResourceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["infra","mcp-exposed"],"summary":"Delete Resource","operationId":"rest_delete_infra_resource","parameters":[{"name":"kind","in":"path","required":true,"schema":{"$ref":"#/components/schemas/InfraResourceKind"}},{"name":"ref","in":"path","required":true,"schema":{"type":"string","title":"Ref"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/infra/relationships":{"get":{"tags":["infra","mcp-exposed"],"summary":"List Relationships","operationId":"rest_list_infra_relationships","parameters":[{"name":"resource_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Resource Id"}},{"name":"rel_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rel Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_InfraRelationshipOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["infra","mcp-exposed"],"summary":"Create Relationship","operationId":"rest_create_infra_relationship","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfraRelationshipCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfraRelationshipOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/infra/relationships/{relationship_id}":{"delete":{"tags":["infra","mcp-exposed"],"summary":"Delete Relationship","operationId":"rest_delete_infra_relationship","parameters":[{"name":"relationship_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Relationship Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/infra/graph/{resource_id}":{"get":{"tags":["infra","mcp-exposed"],"summary":"Get Infra Graph","operationId":"rest_get_infra_graph","parameters":[{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Resource Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfraGraphResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/infra/links":{"get":{"tags":["infra","mcp-exposed"],"summary":"List Links","operationId":"rest_list_infra_links","parameters":[{"name":"resource_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Resource Id"}},{"name":"linked_entity_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linked Entity Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_InfraResourceLinkOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["infra","mcp-exposed"],"summary":"Create Link","operationId":"rest_create_infra_link","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfraResourceLinkCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfraResourceLinkOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/infra/links/{link_id}":{"delete":{"tags":["infra","mcp-exposed"],"summary":"Delete Link","operationId":"rest_delete_infra_link","parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Link Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations/{org_id}/quota/snapshot":{"get":{"tags":["quota-monitoring","mcp-exposed"],"summary":"Get Quota Snapshot","description":"Return current usage + limits + active alerts for all meters.","operationId":"rest_get_quota_snapshot","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations/{org_id}/quota/policies":{"get":{"tags":["quota-monitoring","mcp-exposed"],"summary":"List Quota Policies","description":"List all quota threshold policies for the org.","operationId":"rest_list_quota_policies","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/QuotaThresholdPolicyOut"},"title":"Response Rest List Quota Policies"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["quota-monitoring","mcp-exposed"],"summary":"Create Quota Policy","description":"Create a new quota threshold notification policy.","operationId":"rest_create_quota_policy","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaThresholdPolicyCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaThresholdPolicyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations/{org_id}/quota/policies/{policy_id}":{"get":{"tags":["quota-monitoring","mcp-exposed"],"summary":"Get Quota Policy","operationId":"rest_get_quota_policy","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}},{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Policy Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaThresholdPolicyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["quota-monitoring","mcp-exposed"],"summary":"Update Quota Policy","operationId":"rest_update_quota_policy","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}},{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Policy Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaThresholdPolicyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaThresholdPolicyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["quota-monitoring","mcp-exposed"],"summary":"Delete Quota Policy","operationId":"rest_delete_quota_policy","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}},{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Policy Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations/{org_id}/quota/alerts":{"get":{"tags":["quota-monitoring","mcp-exposed"],"summary":"List Quota Alerts","description":"List quota threshold alerts with optional filters.","operationId":"rest_list_quota_alerts","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status: active | resolved","title":"Status"},"description":"Filter by status: active | resolved"},{"name":"meter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by meter name","title":"Meter"},"description":"Filter by meter name"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/QuotaAlertOut"},"title":"Response Rest List Quota Alerts"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/organizations/{org_id}/quota/alerts/{alert_id}/resolve":{"post":{"tags":["quota-monitoring","mcp-exposed"],"summary":"Resolve Quota Alert","description":"Manually resolve an active quota alert.","operationId":"rest_resolve_quota_alert","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Org Id"}},{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaAlertOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calendar/events":{"get":{"tags":["calendar","mcp-exposed"],"summary":"List Events","operationId":"rest_list_calendar_events","parameters":[{"name":"scope","in":"query","required":false,"schema":{"type":"string","pattern":"^(project|org)$","default":"project","title":"Scope"}},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"From"}},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"To"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/CalendarEventType"}},{"type":"null"}],"title":"Type"}},{"name":"environment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Environment Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Severity"}},{"name":"label","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":200,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_CalendarEventListOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["calendar","mcp-exposed"],"summary":"Create Event","operationId":"rest_create_calendar_event","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarEventCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarEventOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calendar/events/{event_id}":{"get":{"tags":["calendar","mcp-exposed"],"summary":"Get Event","operationId":"rest_get_calendar_event","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarEventOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["calendar","mcp-exposed"],"summary":"Update Event","operationId":"rest_update_calendar_event","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarEventUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarEventOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["calendar","mcp-exposed"],"summary":"Delete Event","operationId":"rest_delete_calendar_event","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calendar/events/{event_id}/links":{"get":{"tags":["calendar","mcp-exposed"],"summary":"List Links","operationId":"rest_list_calendar_links","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CalendarEventLinkOut"},"title":"Response Rest List Calendar Links"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["calendar","mcp-exposed"],"summary":"Create Link","operationId":"rest_create_calendar_link","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarEventLinkCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarEventLinkOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calendar/events/{event_id}/links/{link_id}":{"delete":{"tags":["calendar","mcp-exposed"],"summary":"Delete Link","operationId":"rest_delete_calendar_link","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}},{"name":"link_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Link Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oncall/schedules":{"get":{"tags":["oncall","mcp-exposed"],"summary":"List Schedules","operationId":"rest_list_oncall_schedules","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleListOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["oncall","mcp-exposed"],"summary":"Create Schedule","operationId":"rest_create_oncall_schedule","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleCreateIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oncall/schedules/{schedule_id}":{"get":{"tags":["oncall","mcp-exposed"],"summary":"Get Schedule","operationId":"rest_get_oncall_schedule","parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["oncall","mcp-exposed"],"summary":"Update Schedule","operationId":"rest_update_oncall_schedule","parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Schedule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleUpdateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["oncall","mcp-exposed"],"summary":"Delete Schedule","operationId":"rest_delete_oncall_schedule","parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Schedule Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oncall/schedules/{schedule_id}/current":{"get":{"tags":["oncall","mcp-exposed"],"summary":"Get Current","operationId":"rest_get_oncall_current","parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleCurrentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oncall/schedules/{schedule_id}/upcoming":{"get":{"tags":["oncall","mcp-exposed"],"summary":"Get Upcoming","operationId":"rest_list_oncall_upcoming","parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Schedule Id"}},{"name":"n","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":5,"title":"N"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UpcomingShiftOut"},"title":"Response Rest List Oncall Upcoming"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oncall/my-shifts":{"get":{"tags":["oncall","mcp-exposed"],"summary":"Get My Shifts","description":"\"My On-Call Shifts\" — a cross-schedule personal view of every\nschedule the caller belongs to, not tied to any single schedule id.","operationId":"rest_list_my_oncall_shifts","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/MyShiftOut"},"type":"array","title":"Response Rest List My Oncall Shifts"}}}}}}},"/api/oncall/schedules/{schedule_id}/overrides":{"get":{"tags":["oncall","mcp-exposed"],"summary":"List Overrides","operationId":"rest_list_oncall_overrides","parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OverrideOut"},"title":"Response Rest List Oncall Overrides"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["oncall","mcp-exposed"],"summary":"Create Override","operationId":"rest_create_oncall_override","parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Schedule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverrideCreateIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverrideOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oncall/schedules/{schedule_id}/overrides/{override_id}":{"delete":{"tags":["oncall","mcp-exposed"],"summary":"Delete Override","operationId":"rest_delete_oncall_override","parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Schedule Id"}},{"name":"override_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Override Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oncall/escalation-policies":{"get":{"tags":["oncall","mcp-exposed"],"summary":"List Policies","operationId":"rest_list_escalation_policies","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationPolicyListOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["oncall","mcp-exposed"],"summary":"Create Policy","operationId":"rest_create_escalation_policy","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationPolicyCreateIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationPolicyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oncall/escalation-policies/{policy_id}":{"get":{"tags":["oncall","mcp-exposed"],"summary":"Get Policy","operationId":"rest_get_escalation_policy","parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Policy Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationPolicyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["oncall","mcp-exposed"],"summary":"Update Policy","operationId":"rest_update_escalation_policy","parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Policy Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationPolicyUpdateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationPolicyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["oncall","mcp-exposed"],"summary":"Delete Policy","operationId":"rest_delete_escalation_policy","parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Policy Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oncall/alerts/{alert_id}/escalation-status":{"get":{"tags":["oncall","mcp-exposed"],"summary":"Get Alert Escalation Status","operationId":"rest_get_alert_escalation_status","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/EscalationInvocationOut"},{"type":"null"}],"title":"Response Rest Get Alert Escalation Status"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oncall/alerts/{alert_id}/escalate-now":{"post":{"tags":["oncall","mcp-exposed"],"summary":"Escalate Alert Now","description":"Manually advance to the next escalation step now, bypassing the\ndelay timer — the operator equivalent of PagerDuty's manual escalate.","operationId":"rest_escalate_alert_now","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationInvocationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/status/summary":{"get":{"tags":["status"],"summary":"Status Summary","description":"Return the current platform health as a JSON summary.\n\nResponse shape::\n\n    {\n        \"status\": \"operational\" | \"degraded\" | \"outage\",\n        \"updated_at\": \"<ISO-8601>\",\n        \"components\": [\n            {\"name\": str, \"status\": str, \"description\": str},\n            ...\n        ],\n        \"incidents\": [\n            {\n                \"title\": str,\n                \"severity\": str,\n                \"started_at\": str | null,\n                \"resolved_at\": str | null,\n                \"status\": str,\n                \"watcher\": str\n            },\n            ...\n        ]\n    }","operationId":"status_summary_api_status_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/contact/submit":{"post":{"tags":["contact"],"summary":"Submit","operationId":"submit_api_contact_submit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactFormIn"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health/live":{"get":{"tags":["health"],"summary":"Liveness","description":"Process is alive. Always 200 if the process is running.","operationId":"liveness_health_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/ready":{"get":{"tags":["health"],"summary":"Readiness","description":"All dependencies are reachable. Returns 503 if any dependency is down.","operationId":"readiness_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AcceptInviteRequest":{"properties":{"token":{"type":"string","title":"Token"},"password":{"type":"string","title":"Password"},"display_name":{"type":"string","title":"Display Name"}},"type":"object","required":["token","password","display_name"],"title":"AcceptInviteRequest"},"ActionItemCreate":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"status":{"type":"string","title":"Status","default":"todo"},"priority":{"type":"string","title":"Priority","default":"medium"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"due_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due Date"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["title"],"title":"ActionItemCreate"},"ActionItemOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"status":{"type":"string","title":"Status"},"priority":{"type":"string","title":"Priority"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"due_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due Date"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","title","description","notes","context","status","priority","tags","due_date","completed_at","session_id","created_at","updated_at"],"title":"ActionItemOut"},"ActionItemStats":{"properties":{"total":{"type":"integer","title":"Total"},"by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Status"},"by_priority":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Priority"},"overdue":{"type":"integer","title":"Overdue"},"completion_rate":{"type":"number","title":"Completion Rate"}},"type":"object","required":["total","by_status","by_priority","overdue","completion_rate"],"title":"ActionItemStats"},"ActionItemUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"due_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due Date"}},"type":"object","title":"ActionItemUpdate"},"AddProjectMemberRequest":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"role":{"type":"string","enum":["viewer","member","admin"],"title":"Role","default":"member"}},"type":"object","required":["user_id"],"title":"AddProjectMemberRequest"},"AgentEntityCreateIn":{"properties":{"slug":{"anyOf":[{"type":"string","maxLength":200,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9._-]*$"},{"type":"null"}],"title":"Slug","description":"URL-safe slug (a-zA-Z0-9._-, must start alphanumeric). Auto-derived from title if omitted."},"title":{"type":"string","maxLength":500,"minLength":1,"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"body":{"type":"string","title":"Body","default":""},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"additionalProperties":false,"type":"object","required":["title"],"title":"AgentEntityCreateIn","description":"POST /api/agent-entities/{kind} body."},"AgentEntityDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"kind":{"$ref":"#/components/schemas/AgentEntityKind"},"slug":{"type":"string","title":"Slug"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"body":{"type":"string","title":"Body"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"version":{"type":"integer","title":"Version"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"},"created_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By User Id"},"created_by_api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By Api Key Id"},"updated_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By User Id"},"updated_by_api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By Api Key Id"},"deleted_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Deleted By User Id"},"deleted_by_api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Deleted By Api Key Id"},"comments":{"items":{"$ref":"#/components/schemas/CommentOut"},"type":"array","title":"Comments"},"rule_injection_status":{"anyOf":[{"$ref":"#/components/schemas/RuleInjectionStatusOut"},{"type":"null"}]}},"type":"object","required":["id","project_id","kind","slug","title","description","body","metadata","version","created_at","updated_at","deleted_at","created_by_user_id","created_by_api_key_id","updated_by_user_id","updated_by_api_key_id","deleted_by_user_id","deleted_by_api_key_id"],"title":"AgentEntityDetailOut","description":"Single-entity GET response — the entity PLUS its comment thread, so a\nhuman/agent opening a story or plan sees everything in one view. ``comments``\nis a flat, chronological list (build the reply tree from ``parent_id``); it is\nempty for kinds that don't surface a thread."},"AgentEntityFacetsOut":{"properties":{"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"labels":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Labels"}},"type":"object","title":"AgentEntityFacetsOut","description":"Distinct tag values + label key->values in scope for a kind, for the\nentity-library filter bar's autocomplete. Capped defensively at the\nservice layer — never a full-cardinality dump for a pathological library."},"AgentEntityKind":{"type":"string","enum":["memory","knowledge","skill","command","rule","hook","issue","incident","postmortem","runbook","finding","story","plan","alert"],"title":"AgentEntityKind"},"AgentEntityKindCounts":{"properties":{"memory":{"type":"integer","title":"Memory","default":0},"knowledge":{"type":"integer","title":"Knowledge","default":0},"skill":{"type":"integer","title":"Skill","default":0},"command":{"type":"integer","title":"Command","default":0},"rule":{"type":"integer","title":"Rule","default":0},"hook":{"type":"integer","title":"Hook","default":0},"issue":{"type":"integer","title":"Issue","default":0},"incident":{"type":"integer","title":"Incident","default":0},"postmortem":{"type":"integer","title":"Postmortem","default":0},"runbook":{"type":"integer","title":"Runbook","default":0},"finding":{"type":"integer","title":"Finding","default":0},"story":{"type":"integer","title":"Story","default":0},"plan":{"type":"integer","title":"Plan","default":0},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"AgentEntityKindCounts"},"AgentEntityListOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AgentEntityOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["items","total","limit","offset"],"title":"AgentEntityListOut"},"AgentEntityOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"kind":{"$ref":"#/components/schemas/AgentEntityKind"},"slug":{"type":"string","title":"Slug"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"body":{"type":"string","title":"Body"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"version":{"type":"integer","title":"Version"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"},"created_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By User Id"},"created_by_api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By Api Key Id"},"updated_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By User Id"},"updated_by_api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By Api Key Id"},"deleted_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Deleted By User Id"},"deleted_by_api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Deleted By Api Key Id"}},"type":"object","required":["id","project_id","kind","slug","title","description","body","metadata","version","created_at","updated_at","deleted_at","created_by_user_id","created_by_api_key_id","updated_by_user_id","updated_by_api_key_id","deleted_by_user_id","deleted_by_api_key_id"],"title":"AgentEntityOut","description":"Response shape for every entity surface (REST + MCP).\n\n``metadata`` reads from the ORM's ``metadata_`` attribute (Pydantic\nreserved-name workaround on the SQLAlchemy side) but serializes under\nthe public name ``metadata``. ``validation_alias`` is the correct knob\nhere — plain ``alias`` would force FastAPI to emit ``\"metadata_\"`` as\nthe JSON key under ``by_alias=True``."},"AgentEntitySummaryListOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AgentEntitySummaryOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["items","total","limit","offset"],"title":"AgentEntitySummaryListOut"},"AgentEntitySummaryOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"kind":{"$ref":"#/components/schemas/AgentEntityKind"},"slug":{"type":"string","title":"Slug"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"version":{"type":"integer","title":"Version"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"},"created_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By User Id"},"created_by_api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By Api Key Id"},"updated_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By User Id"},"updated_by_api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By Api Key Id"},"deleted_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Deleted By User Id"},"deleted_by_api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Deleted By Api Key Id"},"body_size":{"type":"integer","title":"Body Size"},"body_excerpt":{"type":"string","title":"Body Excerpt"}},"type":"object","required":["id","project_id","kind","slug","title","description","metadata","version","created_at","updated_at","deleted_at","created_by_user_id","created_by_api_key_id","updated_by_user_id","updated_by_api_key_id","deleted_by_user_id","deleted_by_api_key_id","body_size","body_excerpt"],"title":"AgentEntitySummaryOut","description":"Lightweight list-row shape for management UIs.\n\nThe full ``AgentEntityOut`` includes ``body`` and is still the canonical\ndetail/write response. Summary rows deliberately avoid full markdown bodies\nso library pages can paginate, search, and render list rows without pulling\nevery document's content."},"AgentEntityUpdateIn":{"properties":{"version":{"type":"integer","minimum":1.0,"title":"Version"},"title":{"anyOf":[{"type":"string","maxLength":500,"minLength":1},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"additionalProperties":false,"type":"object","required":["version"],"title":"AgentEntityUpdateIn","description":"PATCH /api/agent-entities/{kind}/{ref} body.\n\nCarries the client's last-known ``version`` for optimistic concurrency\n(HTTP 409 on mismatch)."},"AgentFunnelDayOut":{"properties":{"date":{"type":"string","title":"Date"},"started":{"type":"integer","title":"Started"},"first_try_success":{"type":"integer","title":"First Try Success"},"human_input_required":{"type":"integer","title":"Human Input Required"},"budget_hit":{"type":"integer","title":"Budget Hit"},"tool_blocked_by_approval":{"type":"integer","title":"Tool Blocked By Approval"},"failed":{"type":"integer","title":"Failed"}},"type":"object","required":["date","started","first_try_success","human_input_required","budget_hit","tool_blocked_by_approval","failed"],"title":"AgentFunnelDayOut"},"AgentFunnelSummaryOut":{"properties":{"period_days":{"type":"integer","title":"Period Days"},"total_sessions":{"type":"integer","title":"Total Sessions"},"first_try_success_rate_pct":{"type":"number","title":"First Try Success Rate Pct"},"human_input_rate_pct":{"type":"number","title":"Human Input Rate Pct"},"failed_rate_pct":{"type":"number","title":"Failed Rate Pct"},"daily":{"items":{"$ref":"#/components/schemas/AgentFunnelDayOut"},"type":"array","title":"Daily"}},"type":"object","required":["period_days","total_sessions","first_try_success_rate_pct","human_input_rate_pct","failed_rate_pct","daily"],"title":"AgentFunnelSummaryOut","description":"Org-scoped counterpart of the platform-admin agent-funnel view —\nthe customer-facing \"how effective is our agent\" summary."},"AgentPolicyBulkCreateRequest":{"properties":{"rules":{"items":{"$ref":"#/components/schemas/AgentPolicyRuleCreate"},"type":"array","title":"Rules"}},"type":"object","required":["rules"],"title":"AgentPolicyBulkCreateRequest"},"AgentPolicyMatchEventOut":{"properties":{"id":{"type":"integer","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"org_id":{"type":"string","format":"uuid","title":"Org Id"},"rule_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Rule Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"tool_name":{"type":"string","title":"Tool Name"},"event_type":{"type":"string","title":"Event Type"},"decision":{"type":"string","title":"Decision"},"reason":{"type":"string","title":"Reason"},"from_default":{"type":"boolean","title":"From Default"},"dry_run":{"type":"boolean","title":"Dry Run"},"trace":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"},{"type":"null"}],"title":"Trace"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"}},"type":"object","required":["id","project_id","org_id","rule_id","session_id","tool_name","event_type","decision","reason","from_default","dry_run","trace","timestamp"],"title":"AgentPolicyMatchEventOut"},"AgentPolicyRuleCreate":{"properties":{"name":{"type":"string","maxLength":255,"title":"Name"},"scope":{"type":"string","title":"Scope","default":"project"},"event_type":{"type":"string","title":"Event Type","default":"PreToolUse"},"condition":{"additionalProperties":true,"type":"object","title":"Condition"},"action":{"additionalProperties":true,"type":"object","title":"Action"},"description":{"type":"string","title":"Description","default":""},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"enabled":{"type":"boolean","title":"Enabled","default":true},"dry_run":{"type":"boolean","title":"Dry Run","default":false},"match_sampling_rate":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Match Sampling Rate","default":1.0},"active_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Active From"},"active_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Active Until"},"timezone":{"type":"string","title":"Timezone","default":"UTC"}},"type":"object","required":["name","condition","action"],"title":"AgentPolicyRuleCreate"},"AgentPolicyRuleOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"org_id":{"type":"string","format":"uuid","title":"Org Id"},"scope":{"type":"string","title":"Scope"},"position":{"type":"integer","title":"Position"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"enabled":{"type":"boolean","title":"Enabled"},"dry_run":{"type":"boolean","title":"Dry Run"},"dsl_version":{"type":"integer","title":"Dsl Version"},"event_type":{"type":"string","title":"Event Type"},"condition":{"additionalProperties":true,"type":"object","title":"Condition"},"action":{"additionalProperties":true,"type":"object","title":"Action"},"match_sampling_rate":{"type":"number","title":"Match Sampling Rate"},"active_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Active From"},"active_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Active Until"},"timezone":{"type":"string","title":"Timezone"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","project_id","org_id","scope","position","name","description","enabled","dry_run","dsl_version","event_type","condition","action","match_sampling_rate","active_from","active_until","timezone","created_by","created_at","updated_at"],"title":"AgentPolicyRuleOut"},"AgentPolicyRuleUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"event_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"},"condition":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Condition"},"action":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Action"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"dry_run":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Dry Run"},"match_sampling_rate":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Match Sampling Rate"},"active_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Active From"},"active_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Active Until"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"}},"type":"object","title":"AgentPolicyRuleUpdate"},"AgentPolicyRulesReorderRequest":{"properties":{"scope":{"type":"string","title":"Scope","default":"project"},"rule_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Rule Ids"}},"type":"object","required":["rule_ids"],"title":"AgentPolicyRulesReorderRequest"},"AgentPolicySimulateRequest":{"properties":{"event_type":{"type":"string","title":"Event Type","default":"PreToolUse"},"tool_name":{"type":"string","title":"Tool Name"},"tool_input":{"additionalProperties":true,"type":"object","title":"Tool Input"},"dry_run":{"type":"boolean","title":"Dry Run","default":true}},"type":"object","required":["tool_name"],"title":"AgentPolicySimulateRequest"},"AgentPolicySimulateResult":{"properties":{"decision":{"type":"string","title":"Decision"},"reason":{"type":"string","title":"Reason"},"matched_rule_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Matched Rule Id"},"matched_rule_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matched Rule Name"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"},"from_default":{"type":"boolean","title":"From Default","default":false},"dry_run":{"type":"boolean","title":"Dry Run","default":false},"trace":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Trace"}},"type":"object","required":["decision","reason"],"title":"AgentPolicySimulateResult"},"AgentQualityOut":{"properties":{"sessions_24h":{"type":"integer","title":"Sessions 24H"},"success_rate_pct":{"type":"number","title":"Success Rate Pct"},"cost_per_success_usd":{"type":"number","title":"Cost Per Success Usd"},"interrupted_rate_pct":{"type":"number","title":"Interrupted Rate Pct"},"context_window_p95_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Context Window P95 Pct"},"tool_reliability":{"items":{"$ref":"#/components/schemas/ToolReliabilityOut"},"type":"array","title":"Tool Reliability"},"top_failing_tools_24h":{"items":{"$ref":"#/components/schemas/ToolReliabilityOut"},"type":"array","title":"Top Failing Tools 24H"}},"type":"object","required":["sessions_24h","success_rate_pct","cost_per_success_usd","interrupted_rate_pct","context_window_p95_pct","tool_reliability","top_failing_tools_24h"],"title":"AgentQualityOut"},"AgentSettingsOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"model":{"type":"string","title":"Model"},"context_window":{"type":"integer","title":"Context Window"},"default_max_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Max Turns"},"default_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Timeout"},"effort":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effort"},"max_budget_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget Usd"},"system_prompt":{"type":"string","title":"System Prompt","default":""},"rules":{"additionalProperties":true,"type":"object","title":"Rules"},"memory_injection_limit":{"type":"integer","title":"Memory Injection Limit","default":100},"knowledge_injection_limit":{"type":"integer","title":"Knowledge Injection Limit","default":100},"issues_injection_limit":{"type":"integer","title":"Issues Injection Limit","default":100},"incidents_injection_limit":{"type":"integer","title":"Incidents Injection Limit","default":100},"postmortems_injection_limit":{"type":"integer","title":"Postmortems Injection Limit","default":100},"runbooks_injection_limit":{"type":"integer","title":"Runbooks Injection Limit","default":100},"skills_injection_limit":{"type":"integer","title":"Skills Injection Limit","default":100},"findings_injection_limit":{"type":"integer","title":"Findings Injection Limit","default":100},"story_injection_limit":{"type":"integer","title":"Story Injection Limit","default":100},"plan_injection_limit":{"type":"integer","title":"Plan Injection Limit","default":100},"rule_injection_limit":{"type":"integer","title":"Rule Injection Limit","default":50},"rag_enabled":{"type":"boolean","title":"Rag Enabled","default":true},"rag_embedding_provider":{"type":"string","title":"Rag Embedding Provider","default":"openai"},"rag_embedding_model":{"type":"string","title":"Rag Embedding Model","default":"text-embedding-3-large"},"rag_chunk_size":{"type":"integer","title":"Rag Chunk Size","default":1500},"rag_chunk_overlap":{"type":"integer","title":"Rag Chunk Overlap","default":100},"rag_search_limit":{"type":"integer","title":"Rag Search Limit","default":10},"rag_similarity_threshold":{"type":"number","title":"Rag Similarity Threshold","default":0.5},"rag_rerank_enabled":{"type":"boolean","title":"Rag Rerank Enabled","default":false},"rag_rerank_model":{"type":"string","title":"Rag Rerank Model","default":"rerank-2.5-lite"},"rag_output_dimension":{"type":"integer","title":"Rag Output Dimension","default":1024},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","project_id","model","context_window","created_at","updated_at"],"title":"AgentSettingsOut"},"AgentSettingsPreview":{"properties":{"model":{"type":"string","title":"Model","default":""},"effort":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effort"},"max_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Turns"},"max_budget_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget Usd"},"timeout_seconds":{"type":"integer","title":"Timeout Seconds","default":600},"permission_mode":{"type":"string","title":"Permission Mode","default":"bypassPermissions"}},"type":"object","title":"AgentSettingsPreview","description":"Effective agent runtime parameters after task→project→default merge."},"AgentSettingsUpdate":{"properties":{"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"context_window":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Context Window"},"default_max_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Max Turns"},"default_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Timeout"},"effort":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effort"},"max_budget_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Budget Usd"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"},"rules":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rules"},"memory_injection_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Memory Injection Limit"},"knowledge_injection_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Knowledge Injection Limit"},"issues_injection_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Issues Injection Limit"},"incidents_injection_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Incidents Injection Limit"},"postmortems_injection_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Postmortems Injection Limit"},"runbooks_injection_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Runbooks Injection Limit"},"skills_injection_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Skills Injection Limit"},"findings_injection_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Findings Injection Limit"},"story_injection_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Story Injection Limit"},"plan_injection_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Injection Limit"},"rule_injection_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rule Injection Limit"},"rag_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Rag Enabled"},"rag_embedding_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rag Embedding Provider"},"rag_embedding_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rag Embedding Model"},"rag_chunk_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rag Chunk Size"},"rag_chunk_overlap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rag Chunk Overlap"},"rag_search_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rag Search Limit"},"rag_similarity_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rag Similarity Threshold"},"rag_rerank_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Rag Rerank Enabled"},"rag_rerank_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rag Rerank Model"},"rag_output_dimension":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rag Output Dimension"}},"type":"object","title":"AgentSettingsUpdate","description":"Partial update — any omitted field is left unchanged."},"AgentType":{"type":"string","enum":["claude-code","codex","gemini"],"title":"AgentType"},"AlertDismissIn":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"AlertDismissIn"},"AlertLinkCreate":{"properties":{"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"type":"string","format":"uuid","title":"Entity Id"},"relation":{"type":"string","title":"Relation","default":"relates_to"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["entity_type","entity_id"],"title":"AlertLinkCreate"},"AlertLinkOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"alert_id":{"type":"string","format":"uuid","title":"Alert Id"},"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"type":"string","format":"uuid","title":"Entity Id"},"relation":{"type":"string","title":"Relation"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","alert_id","entity_type","entity_id","relation","created_at"],"title":"AlertLinkOut"},"AlertMuteAllIn":{"properties":{"duration_minutes":{"type":"integer","exclusiveMinimum":0.0,"title":"Duration Minutes"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["duration_minutes"],"title":"AlertMuteAllIn"},"AlertMuteAllOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"muted_until":{"type":"string","format":"date-time","title":"Muted Until"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"created_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By User Id"}},"type":"object","required":["id","project_id","muted_until","reason","created_at","created_by_user_id"],"title":"AlertMuteAllOut"},"AlertMuteIn":{"properties":{"duration_minutes":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Duration Minutes"},"until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until"}},"type":"object","title":"AlertMuteIn"},"AlertSeverityLevel":{"type":"string","enum":["warning","critical","exceeded"],"title":"AlertSeverityLevel","description":"Semantic severity — used in notifications and platform alerts."},"AlertTimeseriesBucket":{"properties":{"bucket":{"type":"string","format":"date-time","title":"Bucket"},"by_severity":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Severity"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["bucket","by_severity","total"],"title":"AlertTimeseriesBucket"},"AlertsOut":{"properties":{"firing":{"items":{"$ref":"#/components/schemas/PlatformAlertOut"},"type":"array","title":"Firing"},"recently_resolved":{"items":{"$ref":"#/components/schemas/PlatformAlertOut"},"type":"array","title":"Recently Resolved"}},"type":"object","required":["firing","recently_resolved"],"title":"AlertsOut"},"ApiKeyCreate":{"properties":{"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"project_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Project Ids"},"tool_allowlist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Allowlist"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"target_org":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Org"}},"type":"object","required":["name","role","scopes"],"title":"ApiKeyCreate"},"ApiKeyOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"role":{"type":"string","title":"Role"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"project_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Project Ids"},"tool_allowlist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Allowlist"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"last_used_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used Ip"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","name","key_prefix","role","scopes","project_ids","tool_allowlist","last_used_at","last_used_ip","expires_at","is_active","created_at"],"title":"ApiKeyOut"},"ApiKeyRequest":{"properties":{"name":{"type":"string","title":"Name","default":"cli:default"},"scope_set":{"items":{"type":"string"},"type":"array","title":"Scope Set"},"project_ids_allowed":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Project Ids Allowed"},"ttl_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ttl Days"}},"type":"object","title":"ApiKeyRequest"},"ApiKeyUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes"},"project_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Project Ids"},"tool_allowlist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Allowlist"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"ApiKeyUpdate"},"ApprovalCommentCreate":{"properties":{"body":{"type":"string","title":"Body"}},"type":"object","required":["body"],"title":"ApprovalCommentCreate","description":"Write-side comment payload.\n\n``author_id`` is derived server-side from the authenticated subject.\n``author_type`` is always ``\"user\"`` for project-scoped endpoints."},"ApprovalCommentOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"approval_id":{"type":"string","format":"uuid","title":"Approval Id"},"author_type":{"type":"string","title":"Author Type"},"author_id":{"type":"string","title":"Author Id"},"body":{"type":"string","title":"Body"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","approval_id","author_type","author_id","body","created_at"],"title":"ApprovalCommentOut"},"ApprovalDecision":{"properties":{"decision_note":{"type":"string","title":"Decision Note","default":""}},"type":"object","title":"ApprovalDecision","description":"Write-side decision payload.\n\nNote: ``decided_by`` is derived server-side from the authenticated\n``AuthContext.user_id``. Never accepted from the request body — see\nthe OPA-02 review findings."},"ApprovalLinkPublicOut":{"properties":{"approval_id":{"type":"string","format":"uuid","title":"Approval Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"approval_type":{"type":"string","title":"Approval Type"},"status":{"$ref":"#/components/schemas/ApprovalStatus"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"allowed_actions":{"items":{"type":"string"},"type":"array","title":"Allowed Actions"}},"type":"object","required":["approval_id","title","description","approval_type","status","allowed_actions"],"title":"ApprovalLinkPublicOut","description":"Cross-project-safe projection returned by the public token-scoped GET.\n\nSurfaced by ``/api/public/approvals/{token}`` for the unauthenticated\nconfirmation page. Carries the operator-facing description (the message the\nagent wrote for the approver) but never ``payload`` / ``decision_note``.\n``allowed_actions`` (from ``payload[\"allowed\"]``) drives which decision\nbuttons the page renders."},"ApprovalOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"approval_type":{"type":"string","title":"Approval Type"},"status":{"$ref":"#/components/schemas/ApprovalStatus"},"decided_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decided By"},"decided_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Decided At"},"decision_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decision Note"},"requested_by_agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Requested By Agent Id"},"requested_by_user":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested By User"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"},"entity_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Entity Id"},"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"resumed_conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Resumed Conversation Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","project_id","title","description","approval_type","status","created_at","updated_at"],"title":"ApprovalOut","description":"Full approval shape — only returned to project-scoped callers."},"ApprovalPublicOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"approval_type":{"type":"string","title":"Approval Type"},"status":{"$ref":"#/components/schemas/ApprovalStatus"},"decided_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decided By"},"decided_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Decided At"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","project_id","title","description","approval_type","status","created_at","updated_at"],"title":"ApprovalPublicOut","description":"Cross-project-safe projection returned by the unscoped GET.\n\nOmits ``payload`` (may contain command strings / secrets),\n``decision_note``, ``entity_id`` and ``requested_by_user``. Used by\nnotification deep-links where the caller has the approval UUID but\nnot necessarily the project context."},"ApprovalResolveRequest":{"properties":{"action":{"type":"string","title":"Action"},"decision_note":{"type":"string","title":"Decision Note","default":""}},"type":"object","required":["action"],"title":"ApprovalResolveRequest"},"ApprovalResolveResponse":{"properties":{"changed":{"type":"boolean","title":"Changed"},"approval":{"$ref":"#/components/schemas/ApprovalOut"}},"type":"object","required":["changed","approval"],"title":"ApprovalResolveResponse"},"ApprovalStatus":{"type":"string","enum":["pending","approved","rejected","revision_requested","expired"],"title":"ApprovalStatus"},"ArtifactListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ArtifactOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"ArtifactListResponse"},"ArtifactOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"source_type":{"type":"string","title":"Source Type"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"},"trigger":{"type":"string","title":"Trigger"},"filename":{"type":"string","title":"Filename"},"archive_format":{"type":"string","title":"Archive Format"},"file_size_bytes":{"type":"integer","title":"File Size Bytes"},"original_size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Original Size Bytes"},"s3_url":{"type":"string","title":"S3 Url"},"file_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"File Count"},"workspace_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Path"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","project_id","source_type","session_id","trigger","filename","archive_format","file_size_bytes","original_size_bytes","s3_url","file_count","workspace_path","created_at"],"title":"ArtifactOut"},"AttachedFilePreview":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"}},"type":"object","required":["id","name"],"title":"AttachedFilePreview"},"AuditLogPage":{"properties":{"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["items","total","limit","offset"],"title":"AuditLogPage"},"BackupCodesResponse":{"properties":{"codes":{"items":{"type":"string"},"type":"array","title":"Codes"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"}},"type":"object","required":["codes","generated_at"],"title":"BackupCodesResponse","description":"Returned exactly once when codes are generated/regenerated."},"Body_rest_upload_file":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_rest_upload_file"},"Body_transcribe_stream_api_voice_transcribe_stream_post":{"properties":{"audio":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Audio"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},"type":"object","title":"Body_transcribe_stream_api_voice_transcribe_stream_post"},"Body_upload_avatar_api_auth_me_avatar_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_avatar_api_auth_me_avatar_post"},"Body_upload_file_api_browse_upload_post":{"properties":{"path":{"type":"string","title":"Path"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["path","file"],"title":"Body_upload_file_api_browse_upload_post"},"BootstrapRequest":{"properties":{"project_name":{"type":"string","title":"Project Name"},"project_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Slug"},"project_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Description"},"git_repos":{"items":{"$ref":"#/components/schemas/GitRepoInput"},"type":"array","title":"Git Repos"},"secrets":{"items":{"$ref":"#/components/schemas/SecretRefInput"},"type":"array","title":"Secrets"},"connectors":{"items":{"$ref":"#/components/schemas/ConnectorInput"},"type":"array","title":"Connectors"},"knowledge_sources":{"items":{"$ref":"#/components/schemas/KnowledgeSourceInput"},"type":"array","title":"Knowledge Sources"},"template_slugs":{"items":{"type":"string"},"type":"array","title":"Template Slugs"},"seed_runbooks":{"type":"boolean","title":"Seed Runbooks","default":true},"api_key_request":{"$ref":"#/components/schemas/ApiKeyRequest"}},"type":"object","required":["project_name","api_key_request"],"title":"BootstrapRequest"},"BootstrapResponse":{"properties":{"project_id":{"type":"string","format":"uuid","title":"Project Id"},"project_slug":{"type":"string","title":"Project Slug"},"api_key":{"$ref":"#/components/schemas/veirox__schemas__onboarding__ApiKeyCreated"},"git_repos":{"items":{"$ref":"#/components/schemas/CreatedRef"},"type":"array","title":"Git Repos"},"secrets":{"items":{"$ref":"#/components/schemas/CreatedRef"},"type":"array","title":"Secrets"},"connectors":{"items":{"$ref":"#/components/schemas/CreatedRefWithEnrollmentToken"},"type":"array","title":"Connectors"},"knowledge_sources":{"items":{"$ref":"#/components/schemas/CreatedRef"},"type":"array","title":"Knowledge Sources"},"installed_templates":{"items":{"$ref":"#/components/schemas/InstalledTemplateRef"},"type":"array","title":"Installed Templates"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"}},"type":"object","required":["project_id","project_slug","api_key"],"title":"BootstrapResponse"},"BranchRequest":{"properties":{"repo":{"type":"string","title":"Repo"},"name":{"type":"string","title":"Name"},"checkout":{"type":"boolean","title":"Checkout","default":true}},"type":"object","required":["repo","name"],"title":"BranchRequest"},"BrowseResponse":{"properties":{"path":{"type":"string","title":"Path"},"parent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent"},"entries":{"items":{"$ref":"#/components/schemas/DirectoryEntry"},"type":"array","title":"Entries"},"truncated":{"type":"boolean","title":"Truncated","default":false}},"type":"object","required":["path","parent","entries"],"title":"BrowseResponse"},"BulkDeleteRequest":{"properties":{"file_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"File Ids"}},"type":"object","required":["file_ids"],"title":"BulkDeleteRequest"},"BulkDeleteResponse":{"properties":{"deleted_count":{"type":"integer","title":"Deleted Count"},"failed_ids":{"items":{"type":"string"},"type":"array","title":"Failed Ids"}},"type":"object","required":["deleted_count","failed_ids"],"title":"BulkDeleteResponse"},"BulkImportItem":{"properties":{"kind":{"$ref":"#/components/schemas/InfraResourceKind"},"name":{"type":"string","title":"Name"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"environment_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Environment Id"},"connector_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connector Id"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"spec":{"additionalProperties":true,"type":"object","title":"Spec"},"status":{"additionalProperties":true,"type":"object","title":"Status"},"labels":{"additionalProperties":true,"type":"object","title":"Labels"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"}},"type":"object","required":["kind","name"],"title":"BulkImportItem"},"BulkImportPayload":{"properties":{"source":{"type":"string","title":"Source","default":"manual"},"resources":{"items":{"$ref":"#/components/schemas/BulkImportItem"},"type":"array","title":"Resources"},"relationships":{"items":{"$ref":"#/components/schemas/InfraRelationshipCreate"},"type":"array","title":"Relationships"},"upsert_key":{"type":"string","title":"Upsert Key","default":"external_id"}},"type":"object","required":["resources"],"title":"BulkImportPayload"},"BulkImportResult":{"properties":{"created":{"type":"integer","title":"Created","default":0},"updated":{"type":"integer","title":"Updated","default":0},"skipped":{"type":"integer","title":"Skipped","default":0},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"}},"type":"object","title":"BulkImportResult"},"CaInfoOut":{"properties":{"id":{"type":"string","title":"Id"},"not_before":{"type":"string","title":"Not Before"},"not_after":{"type":"string","title":"Not After"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["id","not_before","not_after","is_active"],"title":"CaInfoOut"},"CalendarEventCreate":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title"},"event_type":{"$ref":"#/components/schemas/CalendarEventType"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"all_day":{"type":"boolean","title":"All Day","default":false},"timezone":{"type":"string","title":"Timezone","default":"UTC"},"status":{"$ref":"#/components/schemas/CalendarEventStatus","default":"scheduled"},"severity":{"$ref":"#/components/schemas/CalendarEventSeverity","default":"none"},"environment_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Environment Id"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"labels":{"additionalProperties":true,"type":"object","title":"Labels"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id"},"recurrence_rule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recurrence Rule"},"is_freeze":{"type":"boolean","title":"Is Freeze","default":false},"freeze_spec":{"additionalProperties":true,"type":"object","title":"Freeze Spec"},"links":{"items":{"$ref":"#/components/schemas/CalendarEventLinkCreate"},"type":"array","title":"Links"},"reminders":{"items":{"$ref":"#/components/schemas/EventReminderSpec"},"type":"array","title":"Reminders"}},"type":"object","required":["title","event_type","starts_at"],"title":"CalendarEventCreate"},"CalendarEventLinkCreate":{"properties":{"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"type":"string","format":"uuid","title":"Entity Id"},"relation":{"type":"string","title":"Relation","default":"relates_to"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["entity_type","entity_id"],"title":"CalendarEventLinkCreate"},"CalendarEventLinkOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"event_id":{"type":"string","format":"uuid","title":"Event Id"},"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"type":"string","format":"uuid","title":"Entity Id"},"relation":{"type":"string","title":"Relation"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","event_id","entity_type","entity_id","relation","created_at"],"title":"CalendarEventLinkOut"},"CalendarEventListOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"project_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Name"},"environment_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Environment Id"},"event_type":{"$ref":"#/components/schemas/CalendarEventType"},"status":{"$ref":"#/components/schemas/CalendarEventStatus"},"severity":{"$ref":"#/components/schemas/CalendarEventSeverity"},"source":{"$ref":"#/components/schemas/CalendarEventSource"},"title":{"type":"string","title":"Title"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"all_day":{"type":"boolean","title":"All Day"},"is_freeze":{"type":"boolean","title":"Is Freeze"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"labels":{"additionalProperties":true,"type":"object","title":"Labels"}},"type":"object","required":["id","project_id","environment_id","event_type","status","severity","source","title","starts_at","ends_at","all_day","is_freeze","color","labels"],"title":"CalendarEventListOut","description":"Lighter list row (no freeze_spec / metadata bulk; carries project name for rollup)."},"CalendarEventOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"environment_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Environment Id"},"event_type":{"$ref":"#/components/schemas/CalendarEventType"},"status":{"$ref":"#/components/schemas/CalendarEventStatus"},"severity":{"$ref":"#/components/schemas/CalendarEventSeverity"},"source":{"$ref":"#/components/schemas/CalendarEventSource"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"all_day":{"type":"boolean","title":"All Day"},"timezone":{"type":"string","title":"Timezone"},"recurrence_rule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recurrence Rule"},"is_freeze":{"type":"boolean","title":"Is Freeze"},"freeze_spec":{"additionalProperties":true,"type":"object","title":"Freeze Spec"},"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"labels":{"additionalProperties":true,"type":"object","title":"Labels"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"},"created_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"links":{"items":{"$ref":"#/components/schemas/CalendarEventLinkOut"},"type":"array","title":"Links"},"reminders":{"items":{"$ref":"#/components/schemas/EventReminderOut"},"type":"array","title":"Reminders"}},"type":"object","required":["id","project_id","organization_id","environment_id","event_type","status","severity","source","title","description","starts_at","ends_at","all_day","timezone","recurrence_rule","is_freeze","freeze_spec","owner_user_id","color","labels","source_ref","created_by","created_at","updated_at"],"title":"CalendarEventOut"},"CalendarEventSeverity":{"type":"string","enum":["none","low","medium","high","critical"],"title":"CalendarEventSeverity"},"CalendarEventSource":{"type":"string","enum":["manual","agent","webhook","task","connector","sync_google","sync_microsoft","ical","system"],"title":"CalendarEventSource"},"CalendarEventStatus":{"type":"string","enum":["scheduled","tentative","in_progress","completed","canceled","missed"],"title":"CalendarEventStatus"},"CalendarEventType":{"type":"string","enum":["release","deployment","upgrade","maintenance","change_freeze","incident","on_call","audit","security_patch","certificate_expiry","backup","drill","meeting","milestone","renewal","custom"],"title":"CalendarEventType"},"CalendarEventUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Title"},"event_type":{"anyOf":[{"$ref":"#/components/schemas/CalendarEventType"},{"type":"null"}]},"starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starts At"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"all_day":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"All Day"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"status":{"anyOf":[{"$ref":"#/components/schemas/CalendarEventStatus"},{"type":"null"}]},"severity":{"anyOf":[{"$ref":"#/components/schemas/CalendarEventSeverity"},{"type":"null"}]},"environment_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Environment Id"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"labels":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Labels"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id"},"recurrence_rule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recurrence Rule"},"is_freeze":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Freeze"},"freeze_spec":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Freeze Spec"},"reminders":{"anyOf":[{"items":{"$ref":"#/components/schemas/EventReminderSpec"},"type":"array"},{"type":"null"}],"title":"Reminders"}},"type":"object","title":"CalendarEventUpdate"},"ChangePasswordRequest":{"properties":{"current_password":{"type":"string","title":"Current Password"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["current_password","new_password"],"title":"ChangePasswordRequest"},"ChangePlanRequest":{"properties":{"plan_slug":{"type":"string","pattern":"^[a-z][a-z0-9_-]{1,39}$","title":"Plan Slug"}},"type":"object","required":["plan_slug"],"title":"ChangePlanRequest"},"ChatRequest":{"properties":{"prompt":{"type":"string","title":"Prompt"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"mcp_server_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Mcp Server Ids","default":[]},"disabled_builtin_servers":{"items":{"type":"string"},"type":"array","title":"Disabled Builtin Servers","default":[]},"model":{"type":"string","title":"Model","default":""},"system_prompt":{"type":"string","title":"System Prompt","default":""},"system_prompt_mode":{"type":"string","title":"System Prompt Mode","default":"inherit"},"effort":{"type":"string","title":"Effort","default":""},"max_budget_usd":{"type":"number","title":"Max Budget Usd","default":0},"permission_mode":{"type":"string","title":"Permission Mode","default":"bypassPermissions"},"permission_rules":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Permission Rules","default":[]},"attachment_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Attachment Ids","default":[]},"preview_only":{"type":"boolean","title":"Preview Only","default":false}},"type":"object","required":["prompt"],"title":"ChatRequest"},"CheckoutResponse":{"properties":{"url":{"type":"string","title":"Url"},"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["url","session_id"],"title":"CheckoutResponse"},"ClaudeMdIn":{"properties":{"content":{"type":"string","title":"Content","default":""}},"type":"object","title":"ClaudeMdIn"},"CliGrantDenyRequest":{"properties":{"user_code":{"type":"string","title":"User Code"}},"type":"object","required":["user_code"],"title":"CliGrantDenyRequest"},"CliGrantInfoResponse":{"properties":{"user_code":{"type":"string","title":"User Code"},"device_name":{"type":"string","title":"Device Name"},"client":{"additionalProperties":true,"type":"object","title":"Client"},"scope_request":{"items":{"type":"string"},"type":"array","title":"Scope Request"},"default_scopes":{"items":{"type":"string"},"type":"array","title":"Default Scopes"},"requires_scopes":{"items":{"type":"string"},"type":"array","title":"Requires Scopes"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"redeemed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Redeemed At"},"denied_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Denied At"}},"type":"object","required":["user_code","device_name","created_at","expires_at"],"title":"CliGrantInfoResponse"},"CliGrantRedeemRequest":{"properties":{"user_code":{"type":"string","title":"User Code"},"scope_set":{"items":{"type":"string"},"type":"array","title":"Scope Set"},"project_ids_allowed":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Project Ids Allowed"},"key_name":{"type":"string","title":"Key Name"},"ttl_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ttl Days"}},"type":"object","required":["user_code","scope_set","key_name"],"title":"CliGrantRedeemRequest"},"ClientErrorIn":{"properties":{"url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Url"},"stack":{"anyOf":[{"type":"string","maxLength":16384},{"type":"null"}],"title":"Stack"},"message":{"type":"string","maxLength":2000,"title":"Message"},"user_agent":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"User Agent"}},"type":"object","required":["message"],"title":"ClientErrorIn"},"ClientEventIn":{"properties":{"event":{"type":"string","maxLength":128,"title":"Event"},"props":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"}]},"type":"object","title":"Props"}},"type":"object","required":["event"],"title":"ClientEventIn","description":"Inbound payload for ``POST /client-events``."},"CommandLogOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"connector_id":{"type":"string","format":"uuid","title":"Connector Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"actor":{"type":"string","title":"Actor"},"command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Command"},"working_dir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Working Dir"},"operation_type":{"$ref":"#/components/schemas/OperationType"},"target_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Path"},"target_upstream":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Upstream"},"request_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Request Bytes"},"response_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Response Bytes"},"timeout_ms":{"type":"integer","title":"Timeout Ms"},"exit_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exit Code"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"stdout_preview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stdout Preview"},"stderr_preview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stderr Preview"},"stdout_truncated":{"type":"boolean","title":"Stdout Truncated"},"stderr_truncated":{"type":"boolean","title":"Stderr Truncated"},"total_stdout_bytes":{"type":"integer","title":"Total Stdout Bytes"},"total_stderr_bytes":{"type":"integer","title":"Total Stderr Bytes"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"status":{"$ref":"#/components/schemas/ConnectorCommandLogStatus"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"policy_decision":{"anyOf":[{"$ref":"#/components/schemas/PolicyDecisionEnum"},{"type":"null"}]},"approval_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Approval Id"},"matched_rule_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Matched Rule Id"}},"type":"object","required":["id","project_id","connector_id","session_id","actor","command","working_dir","operation_type","target_path","target_upstream","request_bytes","response_bytes","timeout_ms","exit_code","duration_ms","stdout_preview","stderr_preview","stdout_truncated","stderr_truncated","total_stdout_bytes","total_stderr_bytes","started_at","completed_at","status","error"],"title":"CommandLogOut"},"CommentCreate":{"properties":{"body":{"type":"string","maxLength":20000,"minLength":1,"title":"Body"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Id"},"mentions":{"items":{"$ref":"#/components/schemas/CommentMention"},"type":"array","title":"Mentions"}},"additionalProperties":false,"type":"object","required":["body"],"title":"CommentCreate","description":"POST body. ``author_*`` is derived server-side from the write surface."},"CommentListOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CommentOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"CommentListOut","description":"Flat, chronological list — the client/agent builds the reply tree from\n``parent_id``. ``total`` counts non-deleted comments on the resource."},"CommentMention":{"properties":{"type":{"type":"string","enum":["session","user"],"title":"Type"},"ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","required":["type"],"title":"CommentMention","description":"A resolved @mention embedded in a comment."},"CommentOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"resource_type":{"type":"string","title":"Resource Type"},"resource_id":{"type":"string","format":"uuid","title":"Resource Id"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Id"},"author_type":{"type":"string","title":"Author Type"},"author_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Author User Id"},"author_api_key_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Author Api Key Id"},"author_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Session Id"},"author_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Label"},"body":{"type":"string","title":"Body"},"mentions":{"items":{},"type":"array","title":"Mentions"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"},"resolved_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Resolved By User Id"},"edited_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Edited At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","project_id","resource_type","resource_id","parent_id","author_type","author_user_id","author_api_key_id","author_session_id","body","resolved_at","resolved_by_user_id","edited_at","created_at"],"title":"CommentOut"},"CommitRequest":{"properties":{"repo":{"type":"string","title":"Repo"},"message":{"type":"string","title":"Message"},"amend":{"type":"boolean","title":"Amend","default":false}},"type":"object","required":["repo","message"],"title":"CommitRequest"},"ConnectedAccountOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"provider":{"type":"string","title":"Provider"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"provider_email":{"type":"string","title":"Provider Email"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"status":{"type":"string","title":"Status"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"provider_metadata":{"additionalProperties":true,"type":"object","title":"Provider Metadata","default":{}},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","provider","label","provider_email","scopes","status","error_message","last_used_at","created_at","updated_at"],"title":"ConnectedAccountOut"},"ConnectedAccountUpdate":{"properties":{"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"provider_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider Metadata"}},"type":"object","title":"ConnectedAccountUpdate"},"ConnectorAuthEventOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"connector_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connector Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"event_type":{"$ref":"#/components/schemas/ConnectorAuthEventType"},"source_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ip"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","connector_id","project_id","event_type","source_ip","detail","created_at"],"title":"ConnectorAuthEventOut"},"ConnectorAuthEventType":{"type":"string","enum":["auth_success","auth_fail","enrollment_success","enrollment_fail"],"title":"ConnectorAuthEventType"},"ConnectorCommandLogStatus":{"type":"string","enum":["started","completed","failed","timeout","cancelled"],"title":"ConnectorCommandLogStatus"},"ConnectorCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"labels":{"items":{"type":"string"},"type":"array","title":"Labels"},"type":{"$ref":"#/components/schemas/ConnectorType","default":"vm_systemd"},"default_timeout_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Timeout Ms"},"connector_context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connector Context"},"custom_denylist":{"items":{"type":"string"},"type":"array","title":"Custom Denylist"},"default_working_dir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Working Dir"}},"type":"object","required":["name"],"title":"ConnectorCreate"},"ConnectorDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"name":{"type":"string","title":"Name"},"type":{"$ref":"#/components/schemas/ConnectorType"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"labels":{"items":{"type":"string"},"type":"array","title":"Labels"},"status":{"$ref":"#/components/schemas/ConnectorStatus"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"default_timeout_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Timeout Ms"},"connector_context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connector Context"},"custom_denylist":{"items":{"type":"string"},"type":"array","title":"Custom Denylist"},"default_working_dir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Working Dir"},"version_outdated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Version Outdated"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"registration":{"anyOf":[{"$ref":"#/components/schemas/ConnectorRegistrationOut"},{"type":"null"}]},"policy_sync_status":{"anyOf":[{"$ref":"#/components/schemas/PolicySyncStatusOut"},{"type":"null"}]}},"type":"object","required":["id","project_id","name","type","description","labels","status","last_seen_at","default_timeout_ms","connector_context","custom_denylist","default_working_dir","created_at","updated_at"],"title":"ConnectorDetailOut"},"ConnectorHealthOut":{"properties":{"connector_id":{"type":"string","title":"Connector Id"},"project_id":{"type":"string","title":"Project Id"},"heartbeat_age_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Heartbeat Age Seconds"},"policy_stale":{"type":"boolean","title":"Policy Stale"},"last_push_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Push At"},"last_ack_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Ack At"},"in_flight_commands":{"type":"integer","title":"In Flight Commands"},"capabilities":{"items":{"type":"string"},"type":"array","title":"Capabilities"}},"type":"object","required":["connector_id","project_id","heartbeat_age_seconds","policy_stale","last_push_at","last_ack_at","in_flight_commands","capabilities"],"title":"ConnectorHealthOut"},"ConnectorInput":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"labels":{"items":{"type":"string"},"type":"array","title":"Labels"},"connector_context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connector Context"}},"type":"object","required":["name"],"title":"ConnectorInput"},"ConnectorOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"name":{"type":"string","title":"Name"},"type":{"$ref":"#/components/schemas/ConnectorType"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"labels":{"items":{"type":"string"},"type":"array","title":"Labels"},"status":{"$ref":"#/components/schemas/ConnectorStatus"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"default_timeout_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Timeout Ms"},"connector_context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connector Context"},"custom_denylist":{"items":{"type":"string"},"type":"array","title":"Custom Denylist"},"default_working_dir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Working Dir"},"version_outdated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Version Outdated"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","project_id","name","type","description","labels","status","last_seen_at","default_timeout_ms","connector_context","custom_denylist","default_working_dir","created_at","updated_at"],"title":"ConnectorOut"},"ConnectorPolicyOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"connector_id":{"type":"string","format":"uuid","title":"Connector Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"default_decision":{"$ref":"#/components/schemas/DefaultDecision"},"rate_limit_per_minute":{"type":"integer","title":"Rate Limit Per Minute"},"max_concurrent_commands":{"type":"integer","title":"Max Concurrent Commands"},"max_timeout_ms":{"type":"integer","title":"Max Timeout Ms"},"max_output_bytes":{"type":"integer","title":"Max Output Bytes"},"anomaly_enabled":{"type":"boolean","title":"Anomaly Enabled"},"anomaly_multiplier":{"type":"integer","title":"Anomaly Multiplier"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"rules":{"items":{"$ref":"#/components/schemas/ConnectorPolicyRuleOut"},"type":"array","title":"Rules"}},"type":"object","required":["id","connector_id","project_id","default_decision","rate_limit_per_minute","max_concurrent_commands","max_timeout_ms","max_output_bytes","anomaly_enabled","anomaly_multiplier","created_at","updated_at"],"title":"ConnectorPolicyOut"},"ConnectorPolicyRuleCreate":{"properties":{"rule_type":{"type":"string","title":"Rule Type","default":"command"},"match_type":{"$ref":"#/components/schemas/RuleMatchType"},"pattern":{"type":"string","title":"Pattern"},"decision":{"$ref":"#/components/schemas/RuleDecision"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"log_calendar_event":{"type":"boolean","title":"Log Calendar Event","description":"Log a 'maintenance' calendar event when a command matching this rule COMPLETES. Only meaningful on ALLOW / REQUIRE_APPROVAL rules — DENY rules never reach completion, so the flag is a no-op there.","default":false}},"type":"object","required":["match_type","pattern","decision"],"title":"ConnectorPolicyRuleCreate"},"ConnectorPolicyRuleOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"policy_id":{"type":"string","format":"uuid","title":"Policy Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"rule_type":{"type":"string","title":"Rule Type","default":"command"},"position":{"type":"integer","title":"Position"},"match_type":{"$ref":"#/components/schemas/RuleMatchType"},"pattern":{"type":"string","title":"Pattern"},"decision":{"$ref":"#/components/schemas/RuleDecision"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"log_calendar_event":{"type":"boolean","title":"Log Calendar Event"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","policy_id","project_id","position","match_type","pattern","decision","description","log_calendar_event","created_at","updated_at"],"title":"ConnectorPolicyRuleOut"},"ConnectorPolicyRuleUpdate":{"properties":{"match_type":{"anyOf":[{"$ref":"#/components/schemas/RuleMatchType"},{"type":"null"}]},"pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pattern"},"decision":{"anyOf":[{"$ref":"#/components/schemas/RuleDecision"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"log_calendar_event":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Log Calendar Event"}},"type":"object","title":"ConnectorPolicyRuleUpdate"},"ConnectorPolicyUpdate":{"properties":{"default_decision":{"anyOf":[{"$ref":"#/components/schemas/DefaultDecision"},{"type":"null"}]},"rate_limit_per_minute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rate Limit Per Minute"},"max_concurrent_commands":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Concurrent Commands"},"max_timeout_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Timeout Ms"},"max_output_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Output Bytes"},"anomaly_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Anomaly Enabled"},"anomaly_multiplier":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Anomaly Multiplier"}},"type":"object","title":"ConnectorPolicyUpdate"},"ConnectorRegistrationOut":{"properties":{"hostname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hostname"},"os_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Os Name"},"os_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Os Version"},"kernel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kernel"},"cpu_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cpu Count"},"total_ram_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Ram Mb"},"total_disk_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Disk Mb"},"connector_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connector Version"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip Address"},"runtime_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runtime Mode"},"connector_version_outdated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Connector Version Outdated"},"registered_at":{"type":"string","format":"date-time","title":"Registered At"}},"type":"object","required":["hostname","os_name","os_version","kernel","cpu_count","total_ram_mb","total_disk_mb","connector_version","ip_address","registered_at"],"title":"ConnectorRegistrationOut"},"ConnectorStatus":{"type":"string","enum":["pending","connected","disconnected","revoked"],"title":"ConnectorStatus"},"ConnectorType":{"type":"string","enum":["vm_systemd","k8s_pod","k8s_daemonset","docker_compose","nomad","edge","cloud_cli","tunnel"],"title":"ConnectorType","description":"Deployment target for a connector binary.\n\n``vm_systemd`` is the baseline path (the OPA-01 installer). Other\nvalues are populated automatically from the connector's self-reported\n``runtime_mode`` (see ``sysinfo.rs``) on first heartbeat, unless an\nadmin has explicitly overridden the type via the REST API.\n\n``tunnel`` is a legacy alias kept so pre-migration rows round-trip\nthrough the enum cast — new code should prefer ``vm_systemd``."},"ConnectorUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"labels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Labels"},"type":{"anyOf":[{"$ref":"#/components/schemas/ConnectorType"},{"type":"null"}]},"default_timeout_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Timeout Ms"},"connector_context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connector Context"},"custom_denylist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Custom Denylist"},"default_working_dir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Working Dir"}},"type":"object","title":"ConnectorUpdate"},"ConnectorsOut":{"properties":{"connectors":{"items":{"$ref":"#/components/schemas/ConnectorHealthOut"},"type":"array","title":"Connectors"}},"type":"object","required":["connectors"],"title":"ConnectorsOut"},"ContactFormIn":{"properties":{"kind":{"type":"string","enum":["support","sales","demo"],"title":"Kind"},"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"email":{"type":"string","format":"email","title":"Email"},"company":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Company"},"message":{"type":"string","maxLength":4000,"minLength":1,"title":"Message"},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["kind","name","email","message"],"title":"ContactFormIn"},"CostCeilingIn":{"properties":{"scope":{"$ref":"#/components/schemas/CostCeilingScope"},"scope_id":{"type":"string","title":"Scope Id"},"daily_usd_limit":{"type":"number","title":"Daily Usd Limit"}},"type":"object","required":["scope","scope_id","daily_usd_limit"],"title":"CostCeilingIn"},"CostCeilingOut":{"properties":{"scope":{"$ref":"#/components/schemas/CostCeilingScope"},"scope_id":{"type":"string","title":"Scope Id"},"daily_usd_limit":{"type":"number","title":"Daily Usd Limit"},"current_day_spend_usd":{"type":"number","title":"Current Day Spend Usd","default":0.0}},"type":"object","required":["scope","scope_id","daily_usd_limit"],"title":"CostCeilingOut"},"CostCeilingScope":{"type":"string","enum":["org","project","api_key"],"title":"CostCeilingScope"},"CreatedRef":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"CreatedRef"},"CreatedRefWithEnrollmentToken":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"enrollment_token":{"type":"string","title":"Enrollment Token"},"enrollment_expires_at":{"type":"string","format":"date-time","title":"Enrollment Expires At"}},"type":"object","required":["id","name","enrollment_token","enrollment_expires_at"],"title":"CreatedRefWithEnrollmentToken"},"CustomDashboardCreate":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"content_html":{"type":"string","title":"Content Html"},"task_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["title","content_html"],"title":"CustomDashboardCreate"},"CustomDashboardOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"task_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"s3_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Url"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"is_favorite":{"type":"boolean","title":"Is Favorite"},"sort_order":{"type":"integer","title":"Sort Order"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","task_id","session_id","title","description","s3_url","thumbnail_url","is_favorite","sort_order","created_at","updated_at"],"title":"CustomDashboardOut"},"CustomDashboardUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"content_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Html"}},"type":"object","title":"CustomDashboardUpdate"},"DailySessionStat":{"properties":{"date":{"type":"string","title":"Date"},"total":{"type":"integer","title":"Total"},"failed":{"type":"integer","title":"Failed"}},"type":"object","required":["date","total","failed"],"title":"DailySessionStat"},"DashboardStats":{"properties":{"total_tasks":{"type":"integer","title":"Total Tasks"},"enabled_tasks":{"type":"integer","title":"Enabled Tasks"},"total_sessions_today":{"type":"integer","title":"Total Sessions Today"},"sessions_by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"Sessions By Status"},"session_failures_today":{"type":"integer","title":"Session Failures Today"},"avg_session_duration_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Session Duration Ms"},"total_cost_today":{"type":"number","title":"Total Cost Today"},"total_tokens_today":{"type":"integer","title":"Total Tokens Today"},"sessions_last_7_days":{"items":{"$ref":"#/components/schemas/DailySessionStat"},"type":"array","title":"Sessions Last 7 Days"},"sessions_by_agent":{"additionalProperties":{"type":"integer"},"type":"object","title":"Sessions By Agent"},"reminders":{"$ref":"#/components/schemas/ReminderStats"},"action_items":{"$ref":"#/components/schemas/ActionItemStats"},"notifications":{"$ref":"#/components/schemas/NotificationDeliveryStats"},"webhooks":{"$ref":"#/components/schemas/WebhookStats"},"storage":{"$ref":"#/components/schemas/StorageStats"}},"type":"object","required":["total_tasks","enabled_tasks","total_sessions_today","sessions_by_status","session_failures_today","avg_session_duration_ms","total_cost_today","total_tokens_today","sessions_last_7_days","sessions_by_agent","reminders","action_items","notifications","webhooks","storage"],"title":"DashboardStats"},"DefaultDecision":{"type":"string","enum":["allow","deny","require_approval"],"title":"DefaultDecision","description":"Connector-policy default fallback decision when no rule matches."},"DependencyStatusOut":{"properties":{"name":{"type":"string","title":"Name"},"ok":{"type":"boolean","title":"Ok"},"latency_ms":{"type":"number","title":"Latency Ms"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["name","ok","latency_ms"],"title":"DependencyStatusOut"},"DeviceCodeRequest":{"properties":{"device_name":{"type":"string","maxLength":120,"title":"Device Name"},"scope_request":{"items":{"type":"string"},"type":"array","title":"Scope Request"},"client":{"additionalProperties":true,"type":"object","title":"Client"}},"type":"object","required":["device_name"],"title":"DeviceCodeRequest"},"DeviceCodeResponse":{"properties":{"device_code":{"type":"string","title":"Device Code"},"user_code":{"type":"string","title":"User Code"},"verification_uri":{"type":"string","title":"Verification Uri"},"verification_uri_complete":{"type":"string","title":"Verification Uri Complete"},"expires_in":{"type":"integer","title":"Expires In"},"interval":{"type":"integer","title":"Interval"}},"type":"object","required":["device_code","user_code","verification_uri","verification_uri_complete","expires_in","interval"],"title":"DeviceCodeResponse"},"DeviceTokenError":{"properties":{"error":{"type":"string","title":"Error"},"error_description":{"type":"string","title":"Error Description"}},"type":"object","required":["error","error_description"],"title":"DeviceTokenError"},"DeviceTokenRequest":{"properties":{"device_code":{"type":"string","title":"Device Code"}},"type":"object","required":["device_code"],"title":"DeviceTokenRequest"},"DeviceTokenSuccess":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type"},"scope":{"items":{"type":"string"},"type":"array","title":"Scope"},"org_id":{"type":"string","format":"uuid","title":"Org Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"api_key_id":{"type":"string","format":"uuid","title":"Api Key Id"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["access_token","token_type","scope","org_id","user_id","api_key_id","expires_at"],"title":"DeviceTokenSuccess"},"DirectoryEntry":{"properties":{"name":{"type":"string","title":"Name"},"path":{"type":"string","title":"Path"},"is_dir":{"type":"boolean","title":"Is Dir"}},"type":"object","required":["name","path","is_dir"],"title":"DirectoryEntry"},"DsrAdminEntry":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"org_id":{"type":"string","format":"uuid","title":"Org Id"},"org_name":{"type":"string","title":"Org Name"},"dsr_type":{"type":"string","title":"Dsr Type"},"status":{"type":"string","title":"Status"},"subject_email":{"type":"string","title":"Subject Email"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["id","org_id","org_name","dsr_type","status","subject_email","created_at","completed_at","error"],"title":"DsrAdminEntry"},"DsrCreateRequest":{"properties":{"subject_email":{"type":"string","format":"email","title":"Subject Email"},"request_type":{"type":"string","enum":["export","erasure"],"title":"Request Type"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["subject_email","request_type"],"title":"DsrCreateRequest"},"DsrOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"requested_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Requested By"},"subject_email":{"type":"string","title":"Subject Email"},"subject_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Subject User Id"},"request_type":{"type":"string","title":"Request Type"},"status":{"type":"string","title":"Status"},"result_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Result Expires At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"}},"type":"object","required":["id","organization_id","requested_by","subject_email","subject_user_id","request_type","status","result_expires_at","completed_at","error_message","notes","created_at","updated_at"],"title":"DsrOut"},"DsrStatusUpdateIn":{"properties":{"status":{"type":"string","title":"Status"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["status","reason"],"title":"DsrStatusUpdateIn"},"EnrollmentRequest":{"properties":{"token":{"type":"string","title":"Token"},"registration":{"additionalProperties":true,"type":"object","title":"Registration"},"prefer_bearer":{"type":"boolean","title":"Prefer Bearer","default":false}},"type":"object","required":["token"],"title":"EnrollmentRequest","description":"POST body for the agent-facing /api/connectors/enroll endpoint."},"EnrollmentResponse":{"properties":{"connector_id":{"type":"string","format":"uuid","title":"Connector Id"},"ws_url":{"type":"string","title":"Ws Url"},"credential":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credential"},"cert_pem":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cert Pem"},"key_pem":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Pem"},"ca_cert_pem":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ca Cert Pem"}},"type":"object","required":["connector_id","ws_url"],"title":"EnrollmentResponse","description":"Returned to the agent on successful enrollment.\n\nExactly one credential shape is populated:\n\n- **mTLS** (default) — ``cert_pem`` + ``key_pem`` + ``ca_cert_pem``.\n  The connector writes the three PEMs to ``/etc/veirox-connector/`` at\n  mode 0600 and uses them for every subsequent TLS handshake. The\n  backend only persists cert metadata; the private key is seen once.\n- **bearer** (legacy) — ``credential``. The long-lived secret the\n  connector persists at ``/etc/veirox-connector/credential`` (mode 0600).\n  Returned exactly once; only its argon2id hash lives in the DB."},"EnrollmentTokenOut":{"properties":{"token":{"type":"string","title":"Token"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"install_command":{"type":"string","title":"Install Command"},"backend_url":{"type":"string","title":"Backend Url"}},"type":"object","required":["token","expires_at","install_command","backend_url"],"title":"EnrollmentTokenOut","description":"Returned to the admin UI when minting a one-time install token.\n\nThe raw ``token`` and ``install_command`` are shown ONCE and never\nretrievable again — the database only stores ``sha256(token)``."},"EntitlementOut":{"properties":{"plan_slug":{"type":"string","title":"Plan Slug"},"status":{"type":"string","enum":["trialing","active","past_due","canceled","unpaid","incomplete"],"title":"Status"},"limits":{"$ref":"#/components/schemas/PlanLimits"},"features":{"$ref":"#/components/schemas/PlanFeatures"},"is_trial":{"type":"boolean","title":"Is Trial"},"trial_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial End"},"current_period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period End"},"cancel_at_period_end":{"type":"boolean","title":"Cancel At Period End","default":false},"billing_enabled":{"type":"boolean","title":"Billing Enabled","default":true}},"type":"object","required":["plan_slug","status","limits","features","is_trial"],"title":"EntitlementOut","description":"Flat read for the frontend — combines plan + flag state per org."},"EntityLinkCreate":{"properties":{"to_type":{"type":"string","title":"To Type"},"to_id":{"type":"string","format":"uuid","title":"To Id"},"relation":{"type":"string","title":"Relation","default":"relates_to"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["to_type","to_id"],"title":"EntityLinkCreate"},"EntityLinkOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"from_type":{"type":"string","title":"From Type"},"from_id":{"type":"string","format":"uuid","title":"From Id"},"to_type":{"type":"string","title":"To Type"},"to_id":{"type":"string","format":"uuid","title":"To Id"},"relation":{"type":"string","title":"Relation"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","project_id","from_type","from_id","to_type","to_id","relation","created_at"],"title":"EntityLinkOut"},"EnvironmentCreate":{"properties":{"name":{"type":"string","maxLength":120,"title":"Name"},"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9][a-z0-9._-]*$","title":"Slug"},"tier":{"type":"string","title":"Tier","default":"development"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"labels":{"additionalProperties":true,"type":"object","title":"Labels"},"approval_required":{"type":"boolean","title":"Approval Required","default":false},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"position":{"type":"integer","title":"Position","default":0}},"type":"object","required":["name","slug"],"title":"EnvironmentCreate"},"EnvironmentOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"tier":{"type":"string","title":"Tier"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"labels":{"additionalProperties":true,"type":"object","title":"Labels"},"approval_required":{"type":"boolean","title":"Approval Required"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"position":{"type":"integer","title":"Position"},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","organization_id","name","slug","tier","description","labels","approval_required","color","position","archived_at","created_at","updated_at"],"title":"EnvironmentOut"},"EnvironmentUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"labels":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Labels"},"approval_required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Approval Required"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"}},"type":"object","title":"EnvironmentUpdate"},"ErrorGroupOut":{"properties":{"stack_sha":{"type":"string","title":"Stack Sha"},"message":{"type":"string","title":"Message"},"source":{"type":"string","title":"Source"},"level":{"type":"string","title":"Level"},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route"},"count":{"type":"integer","title":"Count"},"last_seen":{"type":"string","format":"date-time","title":"Last Seen"},"first_seen":{"type":"string","format":"date-time","title":"First Seen"},"affected_trace_count":{"type":"integer","title":"Affected Trace Count"},"sample_stack":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sample Stack"}},"type":"object","required":["stack_sha","message","source","level","route","count","last_seen","first_seen","affected_trace_count","sample_stack"],"title":"ErrorGroupOut"},"ErrorsOut":{"properties":{"groups":{"items":{"$ref":"#/components/schemas/ErrorGroupOut"},"type":"array","title":"Groups"}},"type":"object","required":["groups"],"title":"ErrorsOut"},"EscalationInvocationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"alert_entity_id":{"type":"string","format":"uuid","title":"Alert Entity Id"},"escalation_policy_id":{"type":"string","format":"uuid","title":"Escalation Policy Id"},"current_step_position":{"type":"integer","title":"Current Step Position"},"last_fired_at":{"type":"string","format":"date-time","title":"Last Fired At"},"acknowledged":{"type":"boolean","title":"Acknowledged"}},"type":"object","required":["id","alert_entity_id","escalation_policy_id","current_step_position","last_fired_at","acknowledged"],"title":"EscalationInvocationOut"},"EscalationPolicyCreateIn":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"steps":{"items":{"$ref":"#/components/schemas/EscalationStepIn"},"type":"array","minItems":1,"title":"Steps"}},"type":"object","required":["name","steps"],"title":"EscalationPolicyCreateIn"},"EscalationPolicyListOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EscalationPolicyOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["items","total","limit","offset"],"title":"EscalationPolicyListOut"},"EscalationPolicyOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"name":{"type":"string","title":"Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"steps":{"items":{"$ref":"#/components/schemas/EscalationStepOut"},"type":"array","title":"Steps"}},"type":"object","required":["id","project_id","name","created_at","updated_at"],"title":"EscalationPolicyOut"},"EscalationPolicyUpdateIn":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Name"},"steps":{"anyOf":[{"items":{"$ref":"#/components/schemas/EscalationStepIn"},"type":"array"},{"type":"null"}],"title":"Steps"}},"type":"object","title":"EscalationPolicyUpdateIn"},"EscalationStepIn":{"properties":{"target_type":{"$ref":"#/components/schemas/EscalationTargetType"},"target_id":{"type":"string","format":"uuid","title":"Target Id"},"delay_minutes":{"type":"integer","maximum":1440.0,"minimum":0.0,"title":"Delay Minutes"}},"type":"object","required":["target_type","target_id","delay_minutes"],"title":"EscalationStepIn"},"EscalationStepOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"escalation_policy_id":{"type":"string","format":"uuid","title":"Escalation Policy Id"},"position":{"type":"integer","title":"Position"},"target_type":{"$ref":"#/components/schemas/EscalationTargetType"},"target_id":{"type":"string","format":"uuid","title":"Target Id"},"delay_minutes":{"type":"integer","title":"Delay Minutes"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","escalation_policy_id","position","target_type","target_id","delay_minutes","created_at"],"title":"EscalationStepOut"},"EscalationTargetType":{"type":"string","enum":["user","schedule"],"title":"EscalationTargetType"},"EventReminderOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"offset_minutes":{"type":"integer","title":"Offset Minutes"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"},"status":{"type":"string","title":"Status"}},"type":"object","required":["id","offset_minutes","status"],"title":"EventReminderOut"},"EventReminderSpec":{"properties":{"offset_minutes":{"type":"integer","maximum":40320.0,"minimum":0.0,"title":"Offset Minutes"}},"type":"object","required":["offset_minutes"],"title":"EventReminderSpec","description":"One reminder on an event (CAL-08): fire ``offset_minutes`` BEFORE the event\nstarts. Delivery uses the reminder creator's configured notification\npreferences; per-reminder channel targeting is not implemented yet."},"ExternalLink":{"properties":{"label":{"type":"string","title":"Label"},"url":{"type":"string","title":"Url"}},"type":"object","required":["label","url"],"title":"ExternalLink"},"FlagSetIn":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"FlagSetIn"},"ForgotPasswordRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"ForgotPasswordRequest"},"GitBranchesOut":{"properties":{"current":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current"},"branches":{"items":{"type":"string"},"type":"array","title":"Branches","default":[]}},"type":"object","title":"GitBranchesOut"},"GitChangeOut":{"properties":{"path":{"type":"string","title":"Path"},"x":{"type":"string","title":"X"},"y":{"type":"string","title":"Y"},"staged":{"type":"boolean","title":"Staged"},"untracked":{"type":"boolean","title":"Untracked"},"orig_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Orig Path"}},"type":"object","required":["path","x","y","staged","untracked"],"title":"GitChangeOut"},"GitDiffOut":{"properties":{"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"},"staged":{"type":"boolean","title":"Staged","default":false},"diff":{"type":"string","title":"Diff","default":""}},"type":"object","title":"GitDiffOut"},"GitLogEntry":{"properties":{"sha":{"type":"string","title":"Sha"},"author":{"type":"string","title":"Author"},"date":{"type":"string","title":"Date"},"subject":{"type":"string","title":"Subject"}},"type":"object","required":["sha","author","date","subject"],"title":"GitLogEntry"},"GitRemoteResult":{"properties":{"ok":{"type":"boolean","title":"Ok"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"},"message":{"type":"string","title":"Message","default":""}},"type":"object","required":["ok"],"title":"GitRemoteResult"},"GitRepoCreate":{"properties":{"name":{"type":"string","title":"Name"},"url":{"type":"string","title":"Url"},"branch":{"type":"string","title":"Branch","default":"main"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"},"auth_type":{"type":"string","title":"Auth Type","default":"https_token"},"ssh_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ssh Key"},"shallow":{"type":"boolean","title":"Shallow","default":true},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"}},"type":"object","required":["name","url"],"title":"GitRepoCreate"},"GitRepoInput":{"properties":{"name":{"type":"string","title":"Name"},"url":{"type":"string","title":"Url"},"branch":{"type":"string","title":"Branch","default":"main"},"auth_type":{"type":"string","enum":["https_token","ssh_key","none"],"title":"Auth Type","default":"none"},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"},"ssh_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ssh Key"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"}},"type":"object","required":["name","url"],"title":"GitRepoInput"},"GitRepoOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"url":{"type":"string","title":"Url"},"branch":{"type":"string","title":"Branch"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"has_token":{"type":"boolean","title":"Has Token"},"auth_type":{"type":"string","title":"Auth Type"},"has_ssh_key":{"type":"boolean","title":"Has Ssh Key"},"shallow":{"type":"boolean","title":"Shallow"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","url","branch","username","has_token","auth_type","has_ssh_key","shallow","context","created_at","updated_at"],"title":"GitRepoOut"},"GitRepoPreview":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","required":["id","name"],"title":"GitRepoPreview"},"GitRepoSummary":{"properties":{"name":{"type":"string","title":"Name"},"rel_path":{"type":"string","title":"Rel Path"},"path":{"type":"string","title":"Path"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin"},"ahead":{"type":"integer","title":"Ahead","default":0},"behind":{"type":"integer","title":"Behind","default":0},"upstream":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upstream"},"dirty":{"type":"integer","title":"Dirty","default":0},"can_push":{"type":"boolean","title":"Can Push","default":false}},"type":"object","required":["name","rel_path","path"],"title":"GitRepoSummary"},"GitRepoUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"},"auth_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Type"},"ssh_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ssh Key"},"shallow":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Shallow"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"}},"type":"object","title":"GitRepoUpdate"},"GitStatusOut":{"properties":{"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"},"upstream":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upstream"},"ahead":{"type":"integer","title":"Ahead","default":0},"behind":{"type":"integer","title":"Behind","default":0},"can_push":{"type":"boolean","title":"Can Push","default":false},"changes":{"items":{"$ref":"#/components/schemas/GitChangeOut"},"type":"array","title":"Changes","default":[]}},"type":"object","title":"GitStatusOut"},"GraphNeighbor":{"properties":{"resource":{"$ref":"#/components/schemas/InfraResourceOut"},"rel_type":{"type":"string","title":"Rel Type"},"direction":{"type":"string","title":"Direction"}},"type":"object","required":["resource","rel_type","direction"],"title":"GraphNeighbor"},"GroupMemberAdd":{"properties":{"connector_id":{"type":"string","format":"uuid","title":"Connector Id"}},"type":"object","required":["connector_id"],"title":"GroupMemberAdd"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InfraGraphResult":{"properties":{"root":{"$ref":"#/components/schemas/InfraResourceOut"},"neighbors":{"items":{"$ref":"#/components/schemas/GraphNeighbor"},"type":"array","title":"Neighbors"}},"type":"object","required":["root"],"title":"InfraGraphResult"},"InfraRelationshipCreate":{"properties":{"source_id":{"type":"string","format":"uuid","title":"Source Id"},"target_id":{"type":"string","format":"uuid","title":"Target Id"},"rel_type":{"type":"string","maxLength":50,"title":"Rel Type"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["source_id","target_id","rel_type"],"title":"InfraRelationshipCreate"},"InfraRelationshipOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"source_id":{"type":"string","format":"uuid","title":"Source Id"},"target_id":{"type":"string","format":"uuid","title":"Target Id"},"rel_type":{"type":"string","title":"Rel Type"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","project_id","source_id","target_id","rel_type","created_at"],"title":"InfraRelationshipOut"},"InfraResourceCreate":{"properties":{"name":{"type":"string","maxLength":255,"title":"Name"},"slug":{"anyOf":[{"type":"string","maxLength":255,"pattern":"^[a-z0-9][a-z0-9._-]*$"},{"type":"null"}],"title":"Slug"},"environment_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Environment Id"},"connector_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connector Id"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"spec":{"additionalProperties":true,"type":"object","title":"Spec"},"status":{"additionalProperties":true,"type":"object","title":"Status"},"labels":{"additionalProperties":true,"type":"object","title":"Labels"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"},"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id"},"sync_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Source"}},"type":"object","required":["name"],"title":"InfraResourceCreate"},"InfraResourceKind":{"type":"string","enum":["service","host","cluster","database","cache","queue","load_balancer","network","dns_zone","cloud_account","container_registry","certificate","pipeline","storage_bucket","deployment","custom"],"title":"InfraResourceKind"},"InfraResourceLinkCreate":{"properties":{"resource_id":{"type":"string","format":"uuid","title":"Resource Id"},"linked_entity_type":{"type":"string","maxLength":50,"title":"Linked Entity Type"},"linked_entity_id":{"type":"string","format":"uuid","title":"Linked Entity Id"},"link_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Role"}},"type":"object","required":["resource_id","linked_entity_type","linked_entity_id"],"title":"InfraResourceLinkCreate"},"InfraResourceLinkOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"resource_id":{"type":"string","format":"uuid","title":"Resource Id"},"linked_entity_type":{"type":"string","title":"Linked Entity Type"},"linked_entity_id":{"type":"string","format":"uuid","title":"Linked Entity Id"},"link_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Role"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","project_id","resource_id","linked_entity_type","linked_entity_id","link_role","created_at"],"title":"InfraResourceLinkOut"},"InfraResourceOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"environment_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Environment Id"},"connector_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connector Id"},"kind":{"$ref":"#/components/schemas/InfraResourceKind"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"spec":{"additionalProperties":true,"type":"object","title":"Spec"},"status":{"additionalProperties":true,"type":"object","title":"Status"},"labels":{"additionalProperties":true,"type":"object","title":"Labels"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"},"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id"},"sync_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Source"},"sync_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Hash"},"synced_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Synced At"},"version":{"type":"integer","title":"Version"},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"}},"type":"object","required":["id","project_id","organization_id","environment_id","connector_id","kind","name","slug","provider","region","external_id","spec","status","labels","description","tier","owner_user_id","sync_source","sync_hash","synced_at","version","archived_at","created_at","updated_at","deleted_at"],"title":"InfraResourceOut"},"InfraResourceUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"environment_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Environment Id"},"connector_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connector Id"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"spec":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Spec"},"status":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Status"},"labels":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Labels"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"},"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id"},"version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version"}},"type":"object","title":"InfraResourceUpdate"},"InitCaRequest":{"properties":{"intermediate_cert_pem":{"type":"string","title":"Intermediate Cert Pem","description":"PEM-encoded intermediate CA certificate."},"intermediate_key_pem":{"type":"string","title":"Intermediate Key Pem","description":"PEM-encoded intermediate CA private key (EC preferred)."},"force_replace":{"type":"boolean","title":"Force Replace","description":"Rotate the intermediate even if one is already active. Only set when intentionally rotating the CA.","default":false}},"type":"object","required":["intermediate_cert_pem","intermediate_key_pem"],"title":"InitCaRequest"},"InstalledTemplateRef":{"properties":{"slug":{"type":"string","title":"Slug"},"status":{"type":"string","title":"Status"}},"type":"object","required":["slug","status"],"title":"InstalledTemplateRef"},"InvitationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"email":{"type":"string","title":"Email"},"role":{"type":"string","title":"Role"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"accepted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Accepted At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","organization_id","email","role","expires_at","accepted_at","created_at"],"title":"InvitationOut"},"InviteCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"type":"string","title":"Role","default":"member"}},"type":"object","required":["email"],"title":"InviteCreate"},"InviteResponse":{"properties":{"invitation":{"$ref":"#/components/schemas/InvitationOut"}},"type":"object","required":["invitation"],"title":"InviteResponse","description":"Response after creating an invitation.\n\nThe raw token / full invite URL is intentionally NOT returned —\ntokens are delivered exclusively via email so they cannot leak\nthrough API response logging, browser extensions, or BFF proxies."},"InvoiceOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"subscription_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Subscription Id"},"gateway":{"type":"string","title":"Gateway"},"gateway_invoice_id":{"type":"string","title":"Gateway Invoice Id"},"amount_cents":{"type":"integer","title":"Amount Cents"},"currency":{"type":"string","title":"Currency"},"status":{"type":"string","title":"Status"},"hosted_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hosted Url"},"pdf_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pdf Url"},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"},"paid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","organization_id","gateway","gateway_invoice_id","amount_cents","currency","status","created_at"],"title":"InvoiceOut"},"KnowledgeSourceInput":{"properties":{"provider":{"type":"string","enum":["confluence","notion","gdrive","github_wiki","sharepoint"],"title":"Provider"},"connected_account_id":{"type":"string","format":"uuid","title":"Connected Account Id"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"target_kind":{"type":"string","enum":["knowledge","runbooks","skills","postmortems"],"title":"Target Kind"},"sync_interval_seconds":{"type":"integer","title":"Sync Interval Seconds","default":21600}},"type":"object","required":["provider","connected_account_id","target_kind"],"title":"KnowledgeSourceInput"},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"LoginResponse":{"properties":{"mfa_required":{"type":"boolean","title":"Mfa Required","default":false},"mfa_setup_required":{"type":"boolean","title":"Mfa Setup Required","default":false},"mfa_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mfa Token"},"access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"user":{"anyOf":[{"$ref":"#/components/schemas/UserOut"},{"type":"null"}]}},"type":"object","title":"LoginResponse","description":"SAAS-04: /login may return either a TokenResponse-shape (when MFA\nis not required) or just the MFA bridge token. We keep one response\nschema by making everything optional and gating on ``mfa_required``.\n\nFrontend contract:\n- ``mfa_required=False`` → use ``access_token`` + ``user`` as before.\n- ``mfa_required=True`` → POST ``/mfa/challenge`` with ``mfa_token``.\n- ``mfa_setup_required=True`` → user has no MFA but org requires it;\n  after successful challenge the UI should route to settings/security\n  with ?force=true."},"McpCatalogEntryOut":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"version":{"type":"string","title":"Version"},"category":{"type":"string","title":"Category"},"description":{"type":"string","title":"Description"},"icon":{"type":"string","title":"Icon"},"maintainer":{"type":"string","title":"Maintainer"},"homepage_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Homepage Url"},"docs_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Docs Url"},"transport":{"type":"string","title":"Transport"},"resolved_command":{"type":"string","title":"Resolved Command"},"env":{"items":{"$ref":"#/components/schemas/McpCatalogEnvVarOut"},"type":"array","title":"Env"},"tool_preview":{"items":{"type":"string"},"type":"array","title":"Tool Preview"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"installed":{"type":"boolean","title":"Installed","default":false},"installed_server_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Installed Server Id"},"update_available":{"type":"boolean","title":"Update Available","default":false}},"type":"object","required":["slug","name","version","category","description","icon","maintainer","transport","resolved_command","env","tool_preview","tags"],"title":"McpCatalogEntryOut","description":"Read model for a catalog entry, with per-project install state.\n\n``installed``/``installed_server_id``/``update_available`` are computed\nagainst the calling project's ``mcp_servers`` rows — never part of the\nstatic catalog entry itself."},"McpCatalogEnvVarOut":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"secret":{"type":"boolean","title":"Secret"},"required":{"type":"boolean","title":"Required"},"help_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Help Text"},"placeholder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Placeholder"}},"type":"object","required":["key","label","secret","required"],"title":"McpCatalogEnvVarOut"},"McpCatalogInstallRequest":{"properties":{"config":{"additionalProperties":{"type":"string"},"type":"object","title":"Config","default":{}}},"type":"object","title":"McpCatalogInstallRequest"},"McpCatalogTestRequest":{"properties":{"config":{"additionalProperties":{"type":"string"},"type":"object","title":"Config","default":{}}},"type":"object","title":"McpCatalogTestRequest"},"McpCatalogTestResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"tool_count":{"type":"integer","title":"Tool Count","default":0},"tools":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Tools","default":[]},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["ok"],"title":"McpCatalogTestResponse"},"McpCatalogUpdateRequest":{"properties":{"config":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Config"}},"type":"object","title":"McpCatalogUpdateRequest"},"McpDiscoverableToolOut":{"properties":{"name":{"type":"string","title":"Name"},"required_scope":{"type":"string","title":"Required Scope"},"server_group":{"type":"string","title":"Server Group"},"scope_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Kind"}},"type":"object","required":["name","required_scope","server_group"],"title":"McpDiscoverableToolOut","description":"One row of the external-MCP tool catalog returned by\n``GET /api/api-keys/discoverable-tools``.\n\nThe frontend tool picker keys off ``required_scope`` to disable\ncheckboxes whose scope isn't ticked, groups tools visually using\n``server_group``, and surfaces ``scope_kind`` so operators know which\nmount (``/api/mcp/{project_id}`` vs ``/api/mcp/_org``) will see the\ntool.\n\n``scope_kind`` is optional in the wire schema for backward compatibility\nwith older frontend builds (pre-v2.2). New code should always populate\nit."},"McpKeyPreviewOut":{"properties":{"key_id":{"type":"string","format":"uuid","title":"Key Id"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"tool_allowlist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Allowlist"},"visible_tools":{"items":{"$ref":"#/components/schemas/McpDiscoverableToolOut"},"type":"array","title":"Visible Tools"},"visible_count":{"type":"integer","title":"Visible Count"}},"type":"object","required":["key_id","scopes","tool_allowlist","visible_tools","visible_count"],"title":"McpKeyPreviewOut","description":"The effective tool set a given API key would see at the external\nMCP endpoint. Returned by ``POST /api/api-keys/{id}/preview-tools``.\n\nUsed by the frontend \"Try it\" button to validate the operator's\nscope + tool_allowlist choices before they paste the credential into\nan external client."},"McpRegistryEntryDetailOut":{"properties":{"source":{"type":"string","title":"Source"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"version":{"type":"string","title":"Version"},"repository_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repository Url"},"transport":{"type":"string","title":"Transport"},"command":{"type":"string","title":"Command"},"resolved_command":{"type":"string","title":"Resolved Command"},"url":{"type":"string","title":"Url"},"env":{"items":{"$ref":"#/components/schemas/McpRegistryEnvVarOut"},"type":"array","title":"Env"}},"type":"object","required":["source","name","description","version","transport","command","resolved_command","url","env"],"title":"McpRegistryEntryDetailOut"},"McpRegistryEntrySummaryOut":{"properties":{"source":{"type":"string","title":"Source"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"version":{"type":"string","title":"Version"},"repository_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repository Url"}},"type":"object","required":["source","name","description","version"],"title":"McpRegistryEntrySummaryOut"},"McpRegistryEnvVarOut":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"secret":{"type":"boolean","title":"Secret"},"required":{"type":"boolean","title":"Required"},"header_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Header Name"}},"type":"object","required":["key","label","secret","required"],"title":"McpRegistryEnvVarOut"},"McpRegistrySourceOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"enabled":{"type":"boolean","title":"Enabled"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["id","name","enabled"],"title":"McpRegistrySourceOut"},"McpServerCreate":{"properties":{"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"transport":{"type":"string","enum":["stdio","http","streamable-http","sse"],"title":"Transport","default":"stdio"},"command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Command"},"args":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Args"},"env":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Env"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"headers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Headers"},"enabled":{"type":"boolean","title":"Enabled","default":true},"member_role_required":{"type":"string","enum":["member","admin"],"title":"Member Role Required","default":"member"}},"type":"object","required":["name","slug"],"title":"McpServerCreate"},"McpServerOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"command":{"type":"string","title":"Command"},"args":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Args"},"env":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Env"},"headers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Headers"},"enabled":{"type":"boolean","title":"Enabled"},"is_internal":{"type":"boolean","title":"Is Internal","default":false},"transport":{"type":"string","title":"Transport","default":"stdio"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"member_role_required":{"type":"string","title":"Member Role Required","default":"member"},"catalog_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Catalog Slug"},"catalog_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Catalog Version"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","slug","description","command","args","env","enabled","created_at","updated_at"],"title":"McpServerOut"},"McpServerPreview":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"kind":{"type":"string","title":"Kind"},"enabled":{"type":"boolean","title":"Enabled","default":true},"tool_count":{"type":"integer","title":"Tool Count","default":0},"tools":{"items":{"$ref":"#/components/schemas/ToolPreview"},"type":"array","title":"Tools","default":[]},"source":{"type":"string","title":"Source","default":"task"}},"type":"object","required":["slug","name","kind"],"title":"McpServerPreview"},"McpServerUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"transport":{"anyOf":[{"type":"string","enum":["stdio","http","streamable-http","sse"]},{"type":"null"}],"title":"Transport"},"command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Command"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"args":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Args"},"env":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Env"},"headers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Headers"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"member_role_required":{"anyOf":[{"type":"string","enum":["member","admin"]},{"type":"null"}],"title":"Member Role Required"}},"type":"object","title":"McpServerUpdate"},"MemberOut":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"email":{"type":"string","title":"Email"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"role":{"type":"string","title":"Role"},"joined_at":{"type":"string","format":"date-time","title":"Joined At"}},"type":"object","required":["user_id","email","display_name","avatar_url","role","joined_at"],"title":"MemberOut"},"MfaChallengeRequest":{"properties":{"mfa_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mfa Token"},"totp_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Totp Code"},"backup_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backup Code"},"webauthn_assertion":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Webauthn Assertion"}},"type":"object","title":"MfaChallengeRequest","description":"Used both during login (with mfa_token) and for in-session step-up\n(e.g. backup-code regeneration). At least one of totp_code,\nbackup_code, or webauthn_assertion must be set."},"MfaEnrollResponse":{"properties":{"method_id":{"type":"string","format":"uuid","title":"Method Id"},"backup_codes":{"anyOf":[{"$ref":"#/components/schemas/BackupCodesResponse"},{"type":"null"}]}},"type":"object","required":["method_id"],"title":"MfaEnrollResponse","description":"Returned by /mfa/totp/verify and /mfa/webauthn/register/verify.\n\n``backup_codes`` is populated only when the enrollment is the user's\n*first* MFA method (decision #10) — subsequent enrollments reuse the\nexisting code set and return ``backup_codes=None``."},"MfaMethodOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"method_type":{"type":"string","title":"Method Type"},"name":{"type":"string","title":"Name"},"is_primary":{"type":"boolean","title":"Is Primary"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","method_type","name","is_primary","last_used_at","created_at"],"title":"MfaMethodOut"},"MfaTotpSetupResponse":{"properties":{"secret":{"type":"string","title":"Secret"},"qr_uri":{"type":"string","title":"Qr Uri"},"encrypted_secret":{"type":"string","title":"Encrypted Secret"}},"type":"object","required":["secret","qr_uri","encrypted_secret"],"title":"MfaTotpSetupResponse","description":"Returned by POST /mfa/totp/setup. ``encrypted_secret`` is echoed\nback by the client to /verify so we don't have to keep a Redis row\njust to remember the candidate secret."},"MfaTotpVerifyRequest":{"properties":{"encrypted_secret":{"type":"string","title":"Encrypted Secret"},"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name","default":"Authenticator app"}},"type":"object","required":["encrypted_secret","code"],"title":"MfaTotpVerifyRequest"},"MfaWebauthnAuthOptionsRequest":{"properties":{"mfa_token":{"type":"string","title":"Mfa Token"}},"type":"object","required":["mfa_token"],"title":"MfaWebauthnAuthOptionsRequest"},"MfaWebauthnRegisterVerifyRequest":{"properties":{"credential":{"additionalProperties":true,"type":"object","title":"Credential"},"name":{"type":"string","title":"Name","default":"Security key"}},"type":"object","required":["credential"],"title":"MfaWebauthnRegisterVerifyRequest","description":"Raw client-side credential dict from navigator.credentials.create."},"MyShiftOut":{"properties":{"schedule_id":{"type":"string","format":"uuid","title":"Schedule Id"},"schedule_name":{"type":"string","title":"Schedule Name"},"is_on_call_now":{"type":"boolean","title":"Is On Call Now"},"is_override":{"type":"boolean","title":"Is Override"},"current_shift_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Shift Ends At"},"next_shift_starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Shift Starts At"}},"type":"object","required":["schedule_id","schedule_name","is_on_call_now","is_override","current_shift_ends_at","next_shift_starts_at"],"title":"MyShiftOut","description":"One row per schedule the calling user is a rotation member of —\n\"My On-Call Shifts\" (a cross-schedule personal view, not tied to any\nsingle schedule id)."},"NavActivityCountsRequest":{"properties":{"since":{"additionalProperties":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"type":"object","title":"Since"}},"type":"object","required":["since"],"title":"NavActivityCountsRequest","description":"resource_type -> the caller's \"last viewed\" cursor for that type.\n\nA ``None`` cursor counts every row (first-ever visit). Unknown resource\ntypes or ones the caller's role lacks the scope for are silently\nomitted from the response — see ``services/nav_activity/counts_service``."},"NavActivityCountsResponse":{"properties":{"counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts"}},"type":"object","required":["counts"],"title":"NavActivityCountsResponse"},"NotificationChannelType":{"type":"string","enum":["slack","email","pushover","telegram","whatsapp"],"title":"NotificationChannelType"},"NotificationDeliveryOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"channel_kind":{"type":"string","title":"Channel Kind"},"destination_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Destination Id"},"status":{"type":"string","title":"Status"},"target":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target"},"attempts":{"type":"integer","title":"Attempts"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","channel_kind","destination_id","status","target","attempts","error","sent_at","created_at"],"title":"NotificationDeliveryOut","description":"Per-channel delivery status for one notification (P2 delivery-status)."},"NotificationDeliveryStats":{"properties":{"total":{"type":"integer","title":"Total"},"sent":{"type":"integer","title":"Sent"},"failed":{"type":"integer","title":"Failed"},"failure_rate":{"type":"number","title":"Failure Rate"},"by_channel":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Channel"}},"type":"object","required":["total","sent","failed","failure_rate","by_channel"],"title":"NotificationDeliveryStats"},"NotificationDestinationCreate":{"properties":{"name":{"type":"string","title":"Name"},"kind":{"$ref":"#/components/schemas/NotificationChannelType"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"connected_account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connected Account Id"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["name","kind","config"],"title":"NotificationDestinationCreate"},"NotificationDestinationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"kind":{"$ref":"#/components/schemas/NotificationChannelType"},"name":{"type":"string","title":"Name"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"connected_account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connected Account Id"},"enabled":{"type":"boolean","title":"Enabled"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","organization_id","project_id","kind","name","config","connected_account_id","enabled","created_at","updated_at"],"title":"NotificationDestinationOut","description":"Read projection — ``config`` is REDACTED (secrets become \"set\")."},"NotificationDestinationUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"connected_account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connected Account Id"}},"type":"object","title":"NotificationDestinationUpdate"},"NotificationLogOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"channel_type":{"$ref":"#/components/schemas/NotificationChannelType"},"title":{"type":"string","title":"Title"},"content":{"type":"string","title":"Content"},"recipient":{"type":"string","title":"Recipient"},"status":{"type":"string","title":"Status"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"sent_at":{"type":"string","format":"date-time","title":"Sent At"}},"type":"object","required":["id","session_id","channel_type","title","content","recipient","status","error_message","sent_at"],"title":"NotificationLogOut"},"NotificationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"category":{"type":"string","title":"Category"},"severity":{"type":"string","title":"Severity"},"event_type":{"type":"string","title":"Event Type"},"title":{"type":"string","title":"Title"},"body":{"type":"string","title":"Body"},"link_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Url"},"resource_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Type"},"resource_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Resource Id"},"read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Read At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","category","severity","event_type","title","body","link_url","resource_type","resource_id","read_at","created_at"],"title":"NotificationOut"},"NotificationPreferenceOut":{"properties":{"default_channel":{"$ref":"#/components/schemas/NotificationChannelType"},"send_to_all_channels":{"type":"boolean","title":"Send To All Channels"},"available_channels":{"items":{"$ref":"#/components/schemas/NotificationChannelType"},"type":"array","title":"Available Channels"},"category_channels":{"additionalProperties":true,"type":"object","title":"Category Channels","default":{}},"muted_categories":{"items":{"type":"string"},"type":"array","title":"Muted Categories","default":[]},"quiet_hours_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiet Hours Start"},"quiet_hours_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiet Hours End"},"quiet_hours_tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiet Hours Tz"},"digest_cadence":{"type":"string","title":"Digest Cadence","default":"instant"},"snoozed_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Snoozed Until"}},"type":"object","required":["default_channel","send_to_all_channels","available_channels"],"title":"NotificationPreferenceOut"},"NotificationPreferenceUpdate":{"properties":{"default_channel":{"anyOf":[{"$ref":"#/components/schemas/NotificationChannelType"},{"type":"null"}]},"send_to_all_channels":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Send To All Channels"},"category_channels":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Category Channels"},"muted_categories":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Muted Categories"},"quiet_hours_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiet Hours Start"},"quiet_hours_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiet Hours End"},"quiet_hours_tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiet Hours Tz"},"digest_cadence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Digest Cadence"},"snoozed_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Snoozed Until"},"clear_quiet_hours":{"type":"boolean","title":"Clear Quiet Hours","default":false},"clear_snooze":{"type":"boolean","title":"Clear Snooze","default":false}},"type":"object","title":"NotificationPreferenceUpdate"},"NotificationRoutingRuleCreate":{"properties":{"name":{"type":"string","title":"Name"},"event_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"min_severity":{"type":"string","title":"Min Severity","default":"info"},"destination_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Destination Ids","default":[]},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["name"],"title":"NotificationRoutingRuleCreate"},"NotificationRoutingRuleOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"name":{"type":"string","title":"Name"},"event_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"min_severity":{"type":"string","title":"Min Severity"},"destination_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Destination Ids"},"enabled":{"type":"boolean","title":"Enabled"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","organization_id","project_id","name","event_type","category","min_severity","destination_ids","enabled","created_at","updated_at"],"title":"NotificationRoutingRuleOut"},"NotificationRoutingRuleUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"event_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"min_severity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Min Severity"},"destination_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Destination Ids"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"NotificationRoutingRuleUpdate"},"NotificationSendRequest":{"properties":{"destination_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Destination Id"},"channel_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Channel Id"},"channel_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel Type"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","title":"NotificationSendRequest"},"OAuthInitiateRequest":{"properties":{"provider":{"type":"string","title":"Provider"},"redirect_to":{"type":"string","title":"Redirect To","default":"/integrations"}},"type":"object","required":["provider"],"title":"OAuthInitiateRequest"},"OAuthInitiateResponse":{"properties":{"authorization_url":{"type":"string","title":"Authorization Url"},"state":{"type":"string","title":"State"}},"type":"object","required":["authorization_url","state"],"title":"OAuthInitiateResponse"},"OnboardingChecklistItem":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"done":{"type":"boolean","title":"Done"}},"type":"object","required":["key","label","done"],"title":"OnboardingChecklistItem"},"OnboardingStatusResponse":{"properties":{"project_id":{"type":"string","format":"uuid","title":"Project Id"},"onboarding_completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Onboarding Completed At"},"onboarding_state":{"additionalProperties":true,"type":"object","title":"Onboarding State"},"checklist":{"items":{"$ref":"#/components/schemas/OnboardingChecklistItem"},"type":"array","title":"Checklist"},"completion_pct":{"type":"integer","title":"Completion Pct"}},"type":"object","required":["project_id","onboarding_completed_at","completion_pct"],"title":"OnboardingStatusResponse"},"OperationType":{"type":"string","enum":["exec","fs_read","fs_write","fs_stat","fs_list","forward_http"],"title":"OperationType","description":"Discriminator on the audit log for the kind of operation (OPA-03)."},"OrgBillingOut":{"properties":{"plan_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Slug"},"subscription_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Status"},"current_period_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Period End"},"trial_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trial End"},"cancel_at_period_end":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Cancel At Period End"},"invoices":{"items":{"$ref":"#/components/schemas/OrgInvoiceOut"},"type":"array","title":"Invoices"}},"type":"object","required":["plan_slug","subscription_status","current_period_end","trial_end","cancel_at_period_end","invoices"],"title":"OrgBillingOut"},"OrgConnectorStats":{"properties":{"online":{"type":"integer","title":"Online"},"offline":{"type":"integer","title":"Offline"}},"type":"object","required":["online","offline"],"title":"OrgConnectorStats"},"OrgCostStats":{"properties":{"usd_today":{"type":"number","title":"Usd Today"},"tokens_today":{"type":"integer","title":"Tokens Today"}},"type":"object","required":["usd_today","tokens_today"],"title":"OrgCostStats"},"OrgCreateIn":{"properties":{"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"}},"type":"object","required":["name","slug"],"title":"OrgCreateIn"},"OrgCreatedOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"bootstrap_api_key":{"type":"string","title":"Bootstrap Api Key"},"bootstrap_api_key_prefix":{"type":"string","title":"Bootstrap Api Key Prefix"}},"type":"object","required":["id","name","slug","bootstrap_api_key","bootstrap_api_key_prefix"],"title":"OrgCreatedOut","description":"Returned once on org creation. ``bootstrap_api_key`` is the plaintext\nowner-scoped key — shown exactly once so the operator (or the CLI) can\nimmediately operate in the new org. Never persisted in plaintext."},"OrgDashboardSummary":{"properties":{"org_id":{"type":"string","format":"uuid","title":"Org Id"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"projects":{"$ref":"#/components/schemas/OrgProjectStats"},"sessions":{"$ref":"#/components/schemas/OrgSessionStats"},"cost":{"$ref":"#/components/schemas/OrgCostStats"},"reminders":{"$ref":"#/components/schemas/ReminderStats"},"action_items":{"$ref":"#/components/schemas/ActionItemStats"},"notifications":{"$ref":"#/components/schemas/NotificationDeliveryStats"},"webhooks":{"$ref":"#/components/schemas/WebhookStats"},"connectors":{"$ref":"#/components/schemas/OrgConnectorStats"}},"type":"object","required":["org_id","generated_at","projects","sessions","cost","reminders","action_items","notifications","webhooks","connectors"],"title":"OrgDashboardSummary"},"OrgDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"seat_count":{"type":"integer","title":"Seat Count"},"plan_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Slug"},"subscription_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Status"},"current_period_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Period End"},"trial_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trial End"},"cancel_at_period_end":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Cancel At Period End"},"require_mfa":{"type":"boolean","title":"Require Mfa"},"created_at":{"type":"string","title":"Created At"},"owner_emails":{"items":{"type":"string"},"type":"array","title":"Owner Emails"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"about":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"About"},"session_binding_mode":{"type":"string","title":"Session Binding Mode","default":"none"},"ip_allowlist_enabled":{"type":"boolean","title":"Ip Allowlist Enabled","default":false},"llm_key_configured":{"type":"boolean","title":"Llm Key Configured","default":false},"llm_auth_type":{"type":"string","title":"Llm Auth Type","default":"api_key"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"company_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Size"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"}},"type":"object","required":["id","name","slug","seat_count","plan_slug","subscription_status","current_period_end","trial_end","cancel_at_period_end","require_mfa","created_at","owner_emails"],"title":"OrgDetailOut"},"OrgGovernanceOut":{"properties":{"dsr_total":{"type":"integer","title":"Dsr Total"},"dsr_pending":{"type":"integer","title":"Dsr Pending"},"dsr_processing":{"type":"integer","title":"Dsr Processing"},"dsr_completed":{"type":"integer","title":"Dsr Completed"},"dsr_failed":{"type":"integer","title":"Dsr Failed"}},"type":"object","required":["dsr_total","dsr_pending","dsr_processing","dsr_completed","dsr_failed"],"title":"OrgGovernanceOut"},"OrgInvitationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"role":{"type":"string","title":"Role"},"invited_by":{"type":"string","format":"uuid","title":"Invited By"},"expires_at":{"type":"string","title":"Expires At"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","email","role","invited_by","expires_at","created_at"],"title":"OrgInvitationOut"},"OrgInvoiceOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"amount_cents":{"type":"integer","title":"Amount Cents"},"currency":{"type":"string","title":"Currency"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","title":"Created At"},"hosted_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hosted Url"},"pdf_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pdf Url"}},"type":"object","required":["id","amount_cents","currency","status","created_at","hosted_url","pdf_url"],"title":"OrgInvoiceOut"},"OrgMemberOut":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"email":{"type":"string","title":"Email"},"display_name":{"type":"string","title":"Display Name"},"role":{"type":"string","title":"Role"},"joined_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Joined At"}},"type":"object","required":["user_id","email","display_name","role","joined_at"],"title":"OrgMemberOut"},"OrgOnCallOut":{"properties":{"schedule_count":{"type":"integer","title":"Schedule Count"},"escalation_policy_count":{"type":"integer","title":"Escalation Policy Count"},"schedules":{"items":{"$ref":"#/components/schemas/OrgOnCallScheduleOut"},"type":"array","title":"Schedules"}},"type":"object","required":["schedule_count","escalation_policy_count","schedules"],"title":"OrgOnCallOut"},"OrgOnCallScheduleOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"project_name":{"type":"string","title":"Project Name"},"name":{"type":"string","title":"Name"},"timezone":{"type":"string","title":"Timezone"},"on_call_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"On Call User Id"},"on_call_user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"On Call User Email"},"is_override":{"type":"boolean","title":"Is Override"},"shift_ends_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shift Ends At"}},"type":"object","required":["id","project_id","project_name","name","timezone","on_call_user_id","on_call_user_email","is_override","shift_ends_at"],"title":"OrgOnCallScheduleOut"},"OrgProjectOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"criticality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Criticality"},"status":{"type":"string","title":"Status","default":"active"}},"type":"object","required":["id","name","slug","created_at"],"title":"OrgProjectOut"},"OrgProjectStats":{"properties":{"total":{"type":"integer","title":"Total"},"active":{"type":"integer","title":"Active"}},"type":"object","required":["total","active"],"title":"OrgProjectStats"},"OrgResourceSummary":{"properties":{"org_id":{"type":"string","format":"uuid","title":"Org Id"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"projects_total":{"type":"integer","title":"Projects Total","default":0},"projects_active":{"type":"integer","title":"Projects Active","default":0},"projects_archived":{"type":"integer","title":"Projects Archived","default":0},"agent_entities":{"$ref":"#/components/schemas/AgentEntityKindCounts"},"connectors":{"type":"integer","title":"Connectors","default":0},"connectors_online":{"type":"integer","title":"Connectors Online","default":0},"secrets":{"type":"integer","title":"Secrets","default":0},"git_repos":{"type":"integer","title":"Git Repos","default":0},"mcp_servers":{"type":"integer","title":"Mcp Servers","default":0},"approvals_pending":{"type":"integer","title":"Approvals Pending","default":0},"custom_dashboards":{"type":"integer","title":"Custom Dashboards","default":0},"reports":{"type":"integer","title":"Reports","default":0},"artifacts":{"type":"integer","title":"Artifacts","default":0}},"type":"object","required":["org_id","generated_at","agent_entities"],"title":"OrgResourceSummary"},"OrgSessionStats":{"properties":{"today":{"type":"integer","title":"Today"},"failed_today":{"type":"integer","title":"Failed Today"},"failure_rate_today":{"type":"number","title":"Failure Rate Today"},"last_7_days":{"items":{"$ref":"#/components/schemas/DailySessionStat"},"type":"array","title":"Last 7 Days"},"avg_duration_ms_today":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Duration Ms Today"}},"type":"object","required":["today","failed_today","failure_rate_today","last_7_days","avg_duration_ms_today"],"title":"OrgSessionStats"},"OrgWithRoleOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"role":{"type":"string","title":"Role"}},"type":"object","required":["id","name","slug","logo_url","role"],"title":"OrgWithRoleOut","description":"Organization listing for a user — includes the user's role in that org."},"OrganizationBrandingUpdate":{"properties":{"brand_tagline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Tagline"},"brand_logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Logo Url"},"brand_favicon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Favicon Url"},"brand_background_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Background Url"},"brand_logo_dark_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Logo Dark Url"},"brand_favicon_dark_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Favicon Dark Url"},"theme_font_sans":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Font Sans"},"theme_preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Preset"},"theme_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Mode"},"theme_primary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Primary"},"theme_primary_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Primary Foreground"},"theme_background":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Background"},"theme_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Foreground"},"theme_card":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Card"},"theme_card_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Card Foreground"},"theme_secondary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Secondary"},"theme_secondary_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Secondary Foreground"},"theme_accent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Accent"},"theme_accent_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Accent Foreground"},"theme_muted":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Muted"},"theme_muted_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Muted Foreground"},"theme_border":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Border"}},"type":"object","title":"OrganizationBrandingUpdate","description":"Partial update for org-scoped whitelabel branding — cosmetic only,\nno owner-only restrictions (unlike security fields on OrganizationUpdate)."},"OrganizationCreate":{"properties":{"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"about":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"About"}},"type":"object","required":["name","slug"],"title":"OrganizationCreate"},"OrganizationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"about":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"About"},"require_mfa":{"type":"boolean","title":"Require Mfa","default":false},"session_binding_mode":{"type":"string","title":"Session Binding Mode","default":"none"},"ip_allowlist_enabled":{"type":"boolean","title":"Ip Allowlist Enabled","default":false},"llm_key_configured":{"type":"boolean","title":"Llm Key Configured","default":false},"llm_auth_type":{"type":"string","title":"Llm Auth Type","default":"api_key"},"llm_key_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Llm Key Updated At"},"llm_key_updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llm Key Updated By"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"company_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Size"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"brand_tagline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Tagline"},"brand_logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Logo Url"},"brand_favicon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Favicon Url"},"brand_background_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Background Url"},"brand_logo_dark_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Logo Dark Url"},"brand_favicon_dark_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Favicon Dark Url"},"theme_font_sans":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Font Sans"},"theme_preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Preset"},"theme_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Mode"},"theme_primary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Primary"},"theme_primary_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Primary Foreground"},"theme_background":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Background"},"theme_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Foreground"},"theme_card":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Card"},"theme_card_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Card Foreground"},"theme_secondary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Secondary"},"theme_secondary_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Secondary Foreground"},"theme_accent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Accent"},"theme_accent_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Accent Foreground"},"theme_muted":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Muted"},"theme_muted_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Muted Foreground"},"theme_border":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Border"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","slug","logo_url","created_at","updated_at"],"title":"OrganizationOut"},"OrganizationUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"about":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"About"},"require_mfa":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Require Mfa"},"session_binding_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Binding Mode"},"ip_allowlist_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ip Allowlist Enabled"},"llm_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llm Api Key"},"llm_auth_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llm Auth Type"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"company_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Size"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"}},"type":"object","title":"OrganizationUpdate"},"OutboundWebhookConfigCreate":{"properties":{"name":{"type":"string","title":"Name"},"url":{"type":"string","title":"Url"},"events":{"items":{"type":"string"},"type":"array","title":"Events","default":[]}},"type":"object","required":["name","url"],"title":"OutboundWebhookConfigCreate"},"OutboundWebhookConfigCreatedOut":{"properties":{"config":{"$ref":"#/components/schemas/OutboundWebhookConfigOut"},"plain_secret":{"type":"string","title":"Plain Secret"}},"type":"object","required":["config","plain_secret"],"title":"OutboundWebhookConfigCreatedOut"},"OutboundWebhookConfigOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"name":{"type":"string","title":"Name"},"url":{"type":"string","title":"Url"},"events":{"items":{"type":"string"},"type":"array","title":"Events"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["id","project_id","name","url","events","enabled"],"title":"OutboundWebhookConfigOut"},"OutboundWebhookConfigUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"events":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Events"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"OutboundWebhookConfigUpdate"},"OverrideCreateIn":{"properties":{"override_user_id":{"type":"string","format":"uuid","title":"Override User Id"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"ends_at":{"type":"string","format":"date-time","title":"Ends At"}},"type":"object","required":["override_user_id","starts_at","ends_at"],"title":"OverrideCreateIn"},"OverrideOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"schedule_id":{"type":"string","format":"uuid","title":"Schedule Id"},"original_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Original User Id"},"override_user_id":{"type":"string","format":"uuid","title":"Override User Id"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"ends_at":{"type":"string","format":"date-time","title":"Ends At"},"created_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By User Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","schedule_id","original_user_id","override_user_id","starts_at","ends_at","created_by_user_id","created_at"],"title":"OverrideOut"},"PaginatedResponse_ActionItemOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ActionItemOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[ActionItemOut]"},"PaginatedResponse_ApprovalOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ApprovalOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[ApprovalOut]"},"PaginatedResponse_CalendarEventListOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CalendarEventListOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[CalendarEventListOut]"},"PaginatedResponse_CommandLogOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CommandLogOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[CommandLogOut]"},"PaginatedResponse_ConnectorAuthEventOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ConnectorAuthEventOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[ConnectorAuthEventOut]"},"PaginatedResponse_ConnectorOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ConnectorOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[ConnectorOut]"},"PaginatedResponse_CustomDashboardOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CustomDashboardOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[CustomDashboardOut]"},"PaginatedResponse_DsrOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DsrOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[DsrOut]"},"PaginatedResponse_EnvironmentOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EnvironmentOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[EnvironmentOut]"},"PaginatedResponse_InfraRelationshipOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/InfraRelationshipOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[InfraRelationshipOut]"},"PaginatedResponse_InfraResourceLinkOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/InfraResourceLinkOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[InfraResourceLinkOut]"},"PaginatedResponse_InfraResourceOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/InfraResourceOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[InfraResourceOut]"},"PaginatedResponse_InvoiceOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/InvoiceOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[InvoiceOut]"},"PaginatedResponse_NotificationOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/NotificationOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[NotificationOut]"},"PaginatedResponse_ReminderOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ReminderOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[ReminderOut]"},"PaginatedResponse_ReportListOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ReportListOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[ReportListOut]"},"PaginatedResponse_SecretListOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SecretListOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[SecretListOut]"},"PaginatedResponse_SessionOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/veirox__schemas__conversations__SessionOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[SessionOut]"},"PaginatedResponse_StoredFileOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoredFileOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[StoredFileOut]"},"PaginatedResponse_TaskListOut_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TaskListOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[TaskListOut]"},"PaginatedResponse_WebhookConfigListItem_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WebhookConfigListItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[WebhookConfigListItem]"},"PaginatedResponse_WebhookEventListItem_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WebhookEventListItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[WebhookEventListItem]"},"PaginatedResponse_dict_":{"properties":{"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"PaginatedResponse[dict]"},"PairResponse":{"properties":{"pair_id":{"type":"string","title":"Pair Id"}},"type":"object","required":["pair_id"],"title":"PairResponse"},"PairStatusResponse":{"properties":{"status":{"type":"string","title":"Status"},"qr_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qr Data"},"jid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jid"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["status"],"title":"PairStatusResponse"},"PathRequest":{"properties":{"path":{"type":"string","title":"Path"}},"type":"object","required":["path"],"title":"PathRequest"},"PermissionResponseRequest":{"properties":{"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"request_id":{"type":"string","title":"Request Id"},"decision":{"type":"string","title":"Decision"},"answers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Answers"},"reason":{"type":"string","title":"Reason","default":""}},"type":"object","required":["request_id","decision"],"title":"PermissionResponseRequest"},"PiiInventoryOut":{"properties":{"fields":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Fields"}},"type":"object","required":["fields"],"title":"PiiInventoryOut","description":"Flat dump of the PII registry — `entity_type → [field names]`."},"PlanFeatures":{"properties":{"sso":{"type":"boolean","title":"Sso","default":false},"scim":{"type":"boolean","title":"Scim","default":false},"audit_export":{"type":"boolean","title":"Audit Export","default":false},"custom_retention":{"type":"boolean","title":"Custom Retention","default":false},"custom_branding":{"type":"boolean","title":"Custom Branding","default":false},"priority_support":{"type":"boolean","title":"Priority Support","default":false},"sla":{"type":"boolean","title":"Sla","default":false},"custom_mfa_policy":{"type":"boolean","title":"Custom Mfa Policy","default":false}},"type":"object","title":"PlanFeatures","description":"Typed plan entitlements. Named booleans > opaque list[str]."},"PlanLimits":{"properties":{"projects":{"type":"integer","title":"Projects","description":"Max projects; -1 = unlimited","default":-1},"users":{"type":"integer","title":"Users","description":"Max active org memberships","default":-1},"sessions_per_month":{"type":"integer","title":"Sessions Per Month","description":"Agent sessions / calendar month","default":-1},"connectors":{"type":"integer","title":"Connectors","description":"Active Connect connectors","default":-1},"storage_gb":{"type":"integer","title":"Storage Gb","description":"Combined artifact + attachment bytes","default":-1},"api_keys":{"type":"integer","title":"Api Keys","description":"Active vrx_k_ API keys","default":-1},"retention_days_max":{"type":"integer","title":"Retention Days Max","description":"Max retention TTL in days; -1 = unlimited","default":-1}},"type":"object","title":"PlanLimits","description":"``-1`` means unlimited. All limits are inclusive."},"PlanOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Price Cents"},"currency":{"type":"string","title":"Currency","default":"usd"},"billing_interval":{"type":"string","enum":["month","year"],"title":"Billing Interval","default":"month"},"trial_days":{"type":"integer","title":"Trial Days","default":14},"limits":{"$ref":"#/components/schemas/PlanLimits"},"features":{"$ref":"#/components/schemas/PlanFeatures"},"gateway":{"type":"string","title":"Gateway","default":"stripe"},"is_public":{"type":"boolean","title":"Is Public","default":true},"is_active":{"type":"boolean","title":"Is Active","default":true},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["id","slug","name","limits","features"],"title":"PlanOut"},"PlatformAdminOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"display_name":{"type":"string","title":"Display Name"},"is_platform_admin":{"type":"boolean","title":"Is Platform Admin"}},"type":"object","required":["id","email","display_name","is_platform_admin"],"title":"PlatformAdminOut"},"PlatformAlertOut":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"type":"string","title":"Organization Id"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"},"watcher":{"type":"string","title":"Watcher"},"severity":{"type":"string","title":"Severity"},"status":{"type":"string","title":"Status"},"fingerprint":{"type":"string","title":"Fingerprint"},"title":{"type":"string","title":"Title"},"details":{"additionalProperties":true,"type":"object","title":"Details"},"acked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Acked At"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"},"last_fired_at":{"type":"string","format":"date-time","title":"Last Fired At"},"fire_count":{"type":"integer","title":"Fire Count"}},"type":"object","required":["id","organization_id","project_id","watcher","severity","status","fingerprint","title","details","acked_at","resolved_at","last_fired_at","fire_count"],"title":"PlatformAlertOut"},"PlatformHealthOut":{"properties":{"http_p50_ms":{"type":"number","title":"Http P50 Ms"},"http_p95_ms":{"type":"number","title":"Http P95 Ms"},"http_p99_ms":{"type":"number","title":"Http P99 Ms"},"http_error_rate_pct":{"type":"number","title":"Http Error Rate Pct"},"http_5xx_count_24h":{"type":"integer","title":"Http 5Xx Count 24H"},"requests_total_1h":{"type":"integer","title":"Requests Total 1H"},"unhandled_exception_count_24h":{"type":"integer","title":"Unhandled Exception Count 24H"},"uptime_seconds":{"type":"integer","title":"Uptime Seconds"},"dependencies":{"items":{"$ref":"#/components/schemas/DependencyStatusOut"},"type":"array","title":"Dependencies"}},"type":"object","required":["http_p50_ms","http_p95_ms","http_p99_ms","http_error_rate_pct","http_5xx_count_24h","requests_total_1h","unhandled_exception_count_24h","uptime_seconds","dependencies"],"title":"PlatformHealthOut"},"PlaygroundServerOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"command":{"type":"string","title":"Command","default":""},"args":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Args"},"env":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Env"},"headers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Headers"},"enabled":{"type":"boolean","title":"Enabled","default":true},"is_internal":{"type":"boolean","title":"Is Internal","default":false},"transport":{"type":"string","title":"Transport","default":"stdio"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"member_role_required":{"type":"string","title":"Member Role Required","default":"member"},"source":{"type":"string","enum":["builtin","user"],"title":"Source","default":"user"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","slug","created_at","updated_at"],"title":"PlaygroundServerOut"},"PolicyDecisionEnum":{"type":"string","enum":["allow","deny","require_approval","dangerous_denylist"],"title":"PolicyDecisionEnum","description":"Decision recorded on every command audit row (OPA-02)."},"PolicyGroupCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"default_decision":{"$ref":"#/components/schemas/DefaultDecision","default":"allow"},"rate_limit_per_minute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rate Limit Per Minute"},"max_concurrent":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Concurrent"},"max_output_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Output Bytes"},"max_timeout_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Timeout Ms"}},"type":"object","required":["name"],"title":"PolicyGroupCreate"},"PolicyGroupOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"default_decision":{"$ref":"#/components/schemas/DefaultDecision"},"rate_limit_per_minute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rate Limit Per Minute"},"max_concurrent":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Concurrent"},"max_output_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Output Bytes"},"max_timeout_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Timeout Ms"}},"type":"object","required":["id","organization_id","name","description","default_decision","rate_limit_per_minute","max_concurrent","max_output_bytes","max_timeout_ms"],"title":"PolicyGroupOut"},"PolicyGroupUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"default_decision":{"anyOf":[{"$ref":"#/components/schemas/DefaultDecision"},{"type":"null"}]},"rate_limit_per_minute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rate Limit Per Minute"},"max_concurrent":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Concurrent"},"max_output_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Output Bytes"},"max_timeout_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Timeout Ms"}},"type":"object","title":"PolicyGroupUpdate"},"PolicyRulesReorderRequest":{"properties":{"rule_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Rule Ids"}},"type":"object","required":["rule_ids"],"title":"PolicyRulesReorderRequest"},"PolicySimulateRequest":{"properties":{"command":{"type":"string","title":"Command"}},"type":"object","required":["command"],"title":"PolicySimulateRequest"},"PolicySimulateResult":{"properties":{"command":{"type":"string","title":"Command"},"decision":{"type":"string","title":"Decision"},"reason":{"type":"string","title":"Reason"},"matched_rule_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Matched Rule Id"},"matched_pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matched Pattern"},"from_default":{"type":"boolean","title":"From Default","default":false},"denylist_blocked":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Denylist Blocked"}},"type":"object","required":["command","decision","reason"],"title":"PolicySimulateResult"},"PolicySyncStatusOut":{"properties":{"capabilities":{"items":{"type":"string"},"type":"array","title":"Capabilities"},"policy_stale":{"type":"boolean","title":"Policy Stale"},"last_push_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Push Hash"},"last_push_at":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Push At"},"last_ack_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Ack Hash"},"last_ack_at":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Ack At"}},"type":"object","required":["capabilities","policy_stale","last_push_hash","last_push_at","last_ack_hash","last_ack_at"],"title":"PolicySyncStatusOut","description":"OPA-08: live policy sync observability for a connected agent.\n\nOnly present when the connector has an active session on this worker.\nCross-worker sessions may not have this data — operators should check\nlogs on the owning worker for full visibility."},"PortalResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"PortalResponse"},"PreferenceOut":{"properties":{"key":{"type":"string","title":"Key"},"value":{"additionalProperties":true,"type":"object","title":"Value"}},"type":"object","required":["key","value"],"title":"PreferenceOut","description":"A single per-user preference row. ``value`` is opaque client JSON."},"PreferencePut":{"properties":{"value":{"additionalProperties":true,"type":"object","title":"Value"}},"type":"object","title":"PreferencePut","description":"Upsert body — the full JSON value to store under the key."},"PresignedUploadRequest":{"properties":{"filename":{"type":"string","title":"Filename"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"folder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder"}},"type":"object","required":["filename"],"title":"PresignedUploadRequest"},"PresignedUploadResponse":{"properties":{"s3_key":{"type":"string","title":"S3 Key"},"upload_url":{"type":"string","title":"Upload Url"},"public_url":{"type":"string","title":"Public Url"},"expires_in":{"type":"integer","title":"Expires In"},"content_type":{"type":"string","title":"Content Type"}},"type":"object","required":["s3_key","upload_url","public_url","expires_in","content_type"],"title":"PresignedUploadResponse"},"ProjectCreate":{"properties":{"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color","default":"#6366f1"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"criticality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Criticality"},"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id"},"team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"external_links":{"items":{"$ref":"#/components/schemas/ExternalLink"},"type":"array","title":"External Links","default":[]}},"type":"object","required":["name","slug"],"title":"ProjectCreate"},"ProjectFeatureFlagsOut":{"properties":{"alerts_enabled":{"type":"boolean","title":"Alerts Enabled"},"oncall_enabled":{"type":"boolean","title":"Oncall Enabled"}},"type":"object","required":["alerts_enabled","oncall_enabled"],"title":"ProjectFeatureFlagsOut","description":"A narrow, explicitly-allowlisted set of customer-visible flags.\n\nNOT a reflection of the whole admin flag registry (that stays\nplatform-admin-only via admin/controllers/feature_flags.py) — add a\nnew key here + to `_CUSTOMER_VISIBLE_FLAGS` deliberately, one at a time."},"ProjectMemberOut":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"email":{"type":"string","title":"Email"},"display_name":{"type":"string","title":"Display Name"},"role":{"type":"string","title":"Role"},"added_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Added By"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["user_id","email","display_name","role"],"title":"ProjectMemberOut"},"ProjectOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"project_dir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Dir"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"criticality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Criticality"},"status":{"type":"string","title":"Status"},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At"},"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id"},"team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"external_links":{"items":{"$ref":"#/components/schemas/ExternalLink"},"type":"array","title":"External Links"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","organization_id","name","slug","color","description","environment","criticality","status","archived_at","owner_user_id","team","tags","timezone","external_links","created_at","updated_at"],"title":"ProjectOut"},"ProjectResourceSummary":{"properties":{"project_id":{"type":"string","format":"uuid","title":"Project Id"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"agent_entities":{"$ref":"#/components/schemas/AgentEntityKindCounts"},"connectors":{"type":"integer","title":"Connectors","default":0},"connectors_online":{"type":"integer","title":"Connectors Online","default":0},"secrets":{"type":"integer","title":"Secrets","default":0},"git_repos":{"type":"integer","title":"Git Repos","default":0},"mcp_servers":{"type":"integer","title":"Mcp Servers","default":0},"approvals_pending":{"type":"integer","title":"Approvals Pending","default":0},"custom_dashboards":{"type":"integer","title":"Custom Dashboards","default":0},"reports":{"type":"integer","title":"Reports","default":0},"artifacts":{"type":"integer","title":"Artifacts","default":0}},"type":"object","required":["project_id","generated_at","agent_entities"],"title":"ProjectResourceSummary","description":"Counts of every non-operational resource linked to a project —\nthe complement to ``DashboardStats`` (which covers tasks/sessions/\nreminders/action_items/notifications/webhooks/storage). Powers the\n\"what does this project contain\" snapshot on the Project detail page\nand the agent's Layer-4 session-context snapshot line."},"ProjectSettingOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"brand_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Name"},"brand_tagline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Tagline"},"brand_logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Logo Url"},"brand_favicon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Favicon Url"},"brand_background_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Background Url"},"brand_logo_dark_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Logo Dark Url"},"brand_favicon_dark_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Favicon Dark Url"},"theme_font_sans":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Font Sans"},"theme_preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Preset"},"theme_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Mode"},"theme_primary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Primary"},"theme_primary_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Primary Foreground"},"theme_background":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Background"},"theme_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Foreground"},"theme_card":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Card"},"theme_card_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Card Foreground"},"theme_secondary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Secondary"},"theme_secondary_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Secondary Foreground"},"theme_accent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Accent"},"theme_accent_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Accent Foreground"},"theme_muted":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Muted"},"theme_muted_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Muted Foreground"},"theme_border":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Border"},"smtp_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Host"},"smtp_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Smtp Port"},"smtp_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Username"},"smtp_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Password"},"smtp_password_set":{"type":"boolean","title":"Smtp Password Set","default":false},"smtp_from_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp From Email"},"smtp_use_tls":{"type":"boolean","title":"Smtp Use Tls","default":true},"email_recipients":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Recipients"},"pushover_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pushover Token"},"pushover_token_set":{"type":"boolean","title":"Pushover Token Set","default":false},"pushover_user":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pushover User"},"slack_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slack Webhook Url"},"slack_webhook_url_set":{"type":"boolean","title":"Slack Webhook Url Set","default":false},"webhook_defaults":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Webhook Defaults"},"pii_redaction_rules":{"items":{},"type":"array","title":"Pii Redaction Rules","default":[]},"alert_repeat_intervals":{"additionalProperties":true,"type":"object","title":"Alert Repeat Intervals","default":{}},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","project_id","created_at","updated_at"],"title":"ProjectSettingOut","description":"Project-scoped settings for branding, theme, system prompt, and notifications.\n\nSecret-bearing columns (``smtp_password``, ``pushover_token``,\n``slack_webhook_url``) are **always masked** on read — the field\nappears as ``None`` regardless of whether a value is set. Use the\nmatching ``<field>_set: bool`` to render \"configured\" indicators\nin the UI. The plaintext only ever leaves the platform via the\nservice-layer dispatchers (notification, webhook). Mirrors the\n``GitRepoOut.has_token`` pattern (``schemas/integrations.py``)."},"ProjectSettingUpdate":{"properties":{"brand_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Name"},"brand_tagline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Tagline"},"brand_logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Logo Url"},"brand_favicon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Favicon Url"},"brand_background_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Background Url"},"brand_logo_dark_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Logo Dark Url"},"brand_favicon_dark_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Favicon Dark Url"},"theme_font_sans":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Font Sans"},"theme_preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Preset"},"theme_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Mode"},"theme_primary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Primary"},"theme_primary_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Primary Foreground"},"theme_background":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Background"},"theme_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Foreground"},"theme_card":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Card"},"theme_card_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Card Foreground"},"theme_secondary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Secondary"},"theme_secondary_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Secondary Foreground"},"theme_accent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Accent"},"theme_accent_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Accent Foreground"},"theme_muted":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Muted"},"theme_muted_foreground":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Muted Foreground"},"theme_border":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Border"},"smtp_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Host"},"smtp_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Smtp Port"},"smtp_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Username"},"smtp_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Password"},"smtp_from_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp From Email"},"smtp_use_tls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Smtp Use Tls"},"email_recipients":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Recipients"},"pushover_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pushover Token"},"pushover_user":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pushover User"},"slack_webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slack Webhook Url"},"webhook_defaults":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Webhook Defaults"},"pii_redaction_rules":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Pii Redaction Rules"},"alert_repeat_intervals":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"null"}]},"type":"object"},{"type":"null"}],"title":"Alert Repeat Intervals"}},"type":"object","title":"ProjectSettingUpdate","description":"Partial update for project settings - all fields optional."},"ProjectUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"criticality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Criticality"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id"},"team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"external_links":{"anyOf":[{"items":{"$ref":"#/components/schemas/ExternalLink"},"type":"array"},{"type":"null"}],"title":"External Links"}},"type":"object","title":"ProjectUpdate"},"PromptSectionIn":{"properties":{"title":{"type":"string","title":"Title","default":""},"content":{"type":"string","title":"Content","default":""}},"type":"object","title":"PromptSectionIn"},"PromptSectionPreview":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description","default":""},"content":{"type":"string","title":"Content"},"editable":{"type":"boolean","title":"Editable","default":false}},"type":"object","required":["id","label","content"],"title":"PromptSectionPreview","description":"One layer of the assembled system prompt — mirrors prompt_assembler.PromptSection."},"PromptSectionUpdate":{"properties":{"content":{"type":"string","title":"Content"}},"type":"object","required":["content"],"title":"PromptSectionUpdate"},"PromptVersionOut":{"properties":{"sha":{"type":"string","title":"Sha"},"first_seen":{"type":"string","format":"date-time","title":"First Seen"},"last_seen":{"type":"string","format":"date-time","title":"Last Seen"},"session_count":{"type":"integer","title":"Session Count"},"total_cost_usd":{"type":"number","title":"Total Cost Usd"},"regression_badge":{"type":"boolean","title":"Regression Badge","default":false}},"type":"object","required":["sha","first_seen","last_seen","session_count","total_cost_usd"],"title":"PromptVersionOut"},"PromptsOut":{"properties":{"versions":{"items":{"$ref":"#/components/schemas/PromptVersionOut"},"type":"array","title":"Versions"}},"type":"object","required":["versions"],"title":"PromptsOut"},"PublicApprovalDecision":{"properties":{"action":{"type":"string","title":"Action"},"decision_note":{"type":"string","title":"Decision Note","default":""}},"type":"object","required":["action"],"title":"PublicApprovalDecision","description":"Write-side payload for a token-scoped decision.\n\n``action`` must be one of the approval's ``allowed_actions``. The subject is\nfixed server-side to ``\"public-link\"`` — never accepted from the request."},"QueueStatOut":{"properties":{"queue":{"type":"string","title":"Queue"},"depth":{"type":"integer","title":"Depth"},"tasks_completed_1h":{"type":"integer","title":"Tasks Completed 1H"},"tasks_failed_1h":{"type":"integer","title":"Tasks Failed 1H"},"p95_duration_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P95 Duration Ms"}},"type":"object","required":["queue","depth","tasks_completed_1h","tasks_failed_1h","p95_duration_ms"],"title":"QueueStatOut"},"QueuesOut":{"properties":{"queues":{"items":{"$ref":"#/components/schemas/QueueStatOut"},"type":"array","title":"Queues"},"top_tasks":{"items":{"$ref":"#/components/schemas/TaskStatOut"},"type":"array","title":"Top Tasks"}},"type":"object","required":["queues","top_tasks"],"title":"QueuesOut"},"QuotaAlertOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"policy_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Policy Id"},"meter":{"$ref":"#/components/schemas/QuotaMeter"},"threshold_pct":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Threshold Pct"},"severity":{"$ref":"#/components/schemas/AlertSeverityLevel"},"status":{"$ref":"#/components/schemas/QuotaAlertStatus"},"current_usage":{"type":"integer","title":"Current Usage"},"limit_value":{"type":"integer","title":"Limit Value"},"percent_at_fire":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Percent At Fire"},"notified_channels":{"items":{"type":"string"},"type":"array","title":"Notified Channels"},"fired_at":{"type":"string","format":"date-time","title":"Fired At"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"}},"type":"object","required":["id","organization_id","policy_id","meter","threshold_pct","severity","status","current_usage","limit_value","percent_at_fire","notified_channels","fired_at","resolved_at"],"title":"QuotaAlertOut"},"QuotaAlertStatus":{"type":"string","enum":["active","resolved"],"title":"QuotaAlertStatus"},"QuotaMeter":{"type":"string","enum":["projects","seats","connectors","storage_bytes","sessions_per_month","api_keys"],"title":"QuotaMeter","description":"All meters that can be threshold-watched.\n\nValues mirror the meter names returned by ``quota_service.current_usage()``."},"QuotaStatusMeterOut":{"properties":{"meter":{"type":"string","title":"Meter"},"label":{"type":"string","title":"Label"},"current":{"type":"integer","title":"Current"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"},"percent_used":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percent Used"},"current_fmt":{"type":"string","title":"Current Fmt"},"limit_fmt":{"type":"string","title":"Limit Fmt"},"unlimited":{"type":"boolean","title":"Unlimited"},"status":{"type":"string","title":"Status"},"active_policies":{"items":{"$ref":"#/components/schemas/QuotaThresholdPolicyOut"},"type":"array","title":"Active Policies","default":[]}},"type":"object","required":["meter","label","current","limit","percent_used","current_fmt","limit_fmt","unlimited","status"],"title":"QuotaStatusMeterOut","description":"Per-meter usage snapshot with threshold annotations."},"QuotaStatusOut":{"properties":{"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"evaluated_at":{"type":"string","format":"date-time","title":"Evaluated At"},"meters":{"items":{"$ref":"#/components/schemas/QuotaStatusMeterOut"},"type":"array","title":"Meters"},"active_alert_count":{"type":"integer","title":"Active Alert Count","default":0},"active_alerts":{"items":{"$ref":"#/components/schemas/QuotaAlertOut"},"type":"array","title":"Active Alerts","default":[]}},"type":"object","required":["organization_id","evaluated_at","meters"],"title":"QuotaStatusOut","description":"Full org quota snapshot for the status endpoint."},"QuotaThresholdPolicyCreate":{"properties":{"meter":{"$ref":"#/components/schemas/QuotaMeter"},"threshold_pct":{"anyOf":[{"type":"number","maximum":100.0,"exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Threshold Pct","description":"Percentage (1-100) at which to alert"},"severity":{"$ref":"#/components/schemas/AlertSeverityLevel","default":"warning"},"channels":{"items":{"type":"string"},"type":"array","title":"Channels","description":"Notification channels e.g. [\"email\",\"slack\",\"telegram\",\"whatsapp\"]"},"cooldown_minutes":{"type":"integer","maximum":44640.0,"minimum":0.0,"title":"Cooldown Minutes","description":"Min minutes between re-fires; 0 = always fire","default":1440},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["meter","threshold_pct"],"title":"QuotaThresholdPolicyCreate","description":"Payload for creating a new threshold policy."},"QuotaThresholdPolicyOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"meter":{"$ref":"#/components/schemas/QuotaMeter"},"threshold_pct":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Threshold Pct"},"severity":{"$ref":"#/components/schemas/AlertSeverityLevel"},"channels":{"items":{"type":"string"},"type":"array","title":"Channels"},"cooldown_minutes":{"type":"integer","title":"Cooldown Minutes"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","organization_id","meter","threshold_pct","severity","channels","cooldown_minutes","is_active","created_at","updated_at"],"title":"QuotaThresholdPolicyOut"},"QuotaThresholdPolicyUpdate":{"properties":{"threshold_pct":{"anyOf":[{"type":"number","maximum":100.0,"exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Threshold Pct"},"severity":{"anyOf":[{"$ref":"#/components/schemas/AlertSeverityLevel"},{"type":"null"}]},"channels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Channels"},"cooldown_minutes":{"anyOf":[{"type":"integer","maximum":44640.0,"minimum":0.0},{"type":"null"}],"title":"Cooldown Minutes"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"QuotaThresholdPolicyUpdate","description":"Payload for partial updates — all fields optional."},"RegisterRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"display_name":{"type":"string","title":"Display Name"},"org_name":{"type":"string","title":"Org Name"}},"type":"object","required":["email","password","display_name","org_name"],"title":"RegisterRequest"},"ReminderCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"channels":{"items":{"type":"string"},"type":"array","title":"Channels","default":[]},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"},"extra_schedules":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Extra Schedules"}},"type":"object","required":["name"],"title":"ReminderCreate"},"ReminderDeliveryOut":{"properties":{"channel":{"type":"string","title":"Channel"},"status":{"type":"string","title":"Status"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["channel","status"],"title":"ReminderDeliveryOut"},"ReminderListStatsOut":{"properties":{"total":{"type":"integer","title":"Total"},"by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Status"},"by_source":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Source"},"recurring":{"type":"integer","title":"Recurring"}},"type":"object","required":["total","by_status","by_source","recurring"],"title":"ReminderListStatsOut"},"ReminderOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"channels":{"items":{"type":"string"},"type":"array","title":"Channels"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"},"extra_schedules":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Extra Schedules"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"},"status":{"type":"string","title":"Status"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"source":{"type":"string","title":"Source"},"created_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By User Id"},"calendar_event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Calendar Event Id"},"deliveries":{"items":{"$ref":"#/components/schemas/ReminderDeliveryOut"},"type":"array","title":"Deliveries","default":[]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","description","channels","scheduled_at","extra_schedules","sent_at","status","error_message","session_id","source","created_by_user_id","created_at","updated_at"],"title":"ReminderOut"},"ReminderStats":{"properties":{"total":{"type":"integer","title":"Total"},"by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Status"},"by_channel":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Channel"},"failure_rate":{"type":"number","title":"Failure Rate"}},"type":"object","required":["total","by_status","by_channel","failure_rate"],"title":"ReminderStats"},"ReminderUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"channels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Channels"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"}},"type":"object","title":"ReminderUpdate"},"RenameRequest":{"properties":{"src":{"type":"string","title":"Src"},"dest":{"type":"string","title":"Dest"}},"type":"object","required":["src","dest"],"title":"RenameRequest"},"RenderSnippetsRequest":{"properties":{"webhook_config_id":{"type":"string","format":"uuid","title":"Webhook Config Id"},"plain_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plain Token"}},"type":"object","required":["webhook_config_id"],"title":"RenderSnippetsRequest"},"RenderedSnippet":{"properties":{"format":{"type":"string","title":"Format"},"label":{"type":"string","title":"Label"},"body":{"type":"string","title":"Body"}},"type":"object","required":["format","label","body"],"title":"RenderedSnippet","description":"A snippet with substitutions already applied."},"RepoPathsRequest":{"properties":{"repo":{"type":"string","title":"Repo"},"paths":{"items":{"type":"string"},"type":"array","title":"Paths"}},"type":"object","required":["repo","paths"],"title":"RepoPathsRequest"},"RepoRequest":{"properties":{"repo":{"type":"string","title":"Repo"}},"type":"object","required":["repo"],"title":"RepoRequest"},"ReportCreate":{"properties":{"title":{"type":"string","title":"Title"},"content_md":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Md"},"content_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Html"},"task_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["title"],"title":"ReportCreate"},"ReportListOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"task_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"title":{"type":"string","title":"Title"},"s3_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Url"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"task_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","task_id","session_id","title","created_at"],"title":"ReportListOut"},"ReportOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"task_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"title":{"type":"string","title":"Title"},"s3_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Url"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","task_id","session_id","title","created_at","updated_at"],"title":"ReportOut"},"ResetPasswordRequest":{"properties":{"token":{"type":"string","title":"Token"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["token","new_password"],"title":"ResetPasswordRequest"},"RetentionPolicyOut":{"properties":{"entity_type":{"type":"string","title":"Entity Type"},"retention_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retention Days"},"archive_to_s3":{"type":"boolean","title":"Archive To S3"},"is_default":{"type":"boolean","title":"Is Default","default":false},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["entity_type","retention_days","archive_to_s3"],"title":"RetentionPolicyOut"},"RetentionPolicyUpdate":{"properties":{"retention_days":{"anyOf":[{"type":"integer","maximum":36500.0,"minimum":0.0},{"type":"null"}],"title":"Retention Days"},"archive_to_s3":{"type":"boolean","title":"Archive To S3","default":false}},"type":"object","title":"RetentionPolicyUpdate"},"RotateCaRequest":{"properties":{"intermediate_cert_pem":{"type":"string","title":"Intermediate Cert Pem","description":"PEM-encoded replacement intermediate CA certificate."},"intermediate_key_pem":{"type":"string","title":"Intermediate Key Pem","description":"PEM-encoded replacement intermediate CA private key."},"reason":{"type":"string","maxLength":500,"minLength":5,"title":"Reason","description":"Human-readable reason for the rotation (kept in audit log)."}},"type":"object","required":["intermediate_cert_pem","intermediate_key_pem","reason"],"title":"RotateCaRequest"},"RotateTokenRequest":{"properties":{"grace_hours":{"type":"integer","title":"Grace Hours","default":24}},"type":"object","title":"RotateTokenRequest"},"RotationIn":{"properties":{"user_ids":{"items":{"type":"string","format":"uuid"},"type":"array","minItems":1,"title":"User Ids"},"rotation_length":{"$ref":"#/components/schemas/RotationLength","default":"weekly"},"handoff_time":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","title":"Handoff Time","default":"09:00"},"starts_at":{"type":"string","format":"date","title":"Starts At"},"restriction_days":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Restriction Days"},"restriction_start_time":{"anyOf":[{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}],"title":"Restriction Start Time"},"restriction_end_time":{"anyOf":[{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}],"title":"Restriction End Time"}},"type":"object","required":["user_ids","starts_at"],"title":"RotationIn"},"RotationLength":{"type":"string","enum":["daily","weekly"],"title":"RotationLength"},"RotationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"schedule_id":{"type":"string","format":"uuid","title":"Schedule Id"},"user_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"User Ids"},"rotation_length":{"$ref":"#/components/schemas/RotationLength"},"handoff_time":{"type":"string","title":"Handoff Time"},"starts_at":{"type":"string","format":"date","title":"Starts At"},"restriction_days":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Restriction Days"},"restriction_start_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Restriction Start Time"},"restriction_end_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Restriction End Time"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","schedule_id","user_ids","rotation_length","handoff_time","starts_at","created_at","updated_at"],"title":"RotationOut"},"RuleDecision":{"type":"string","enum":["allow","deny","require_approval"],"title":"RuleDecision","description":"Per-rule outcome decision."},"RuleInjectionStatusOut":{"properties":{"status":{"type":"string","enum":["full","degraded","path_scoped","excluded_over_limit"],"title":"Status"},"rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank"},"rule_limit":{"type":"integer","title":"Rule Limit"},"bytes_used_through_here":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bytes Used Through Here"},"byte_budget_total":{"type":"integer","title":"Byte Budget Total"}},"type":"object","required":["status","rule_limit","byte_budget_total"],"title":"RuleInjectionStatusOut","description":"How a `rule` entity is actually treated by context injection right\nnow — see ``services/agent/entity_service.classify_rule_injection``."},"RuleMatchType":{"type":"string","enum":["regex","glob","literal_prefix"],"title":"RuleMatchType","description":"How the pattern is interpreted for rule matching."},"RulePathTestRequest":{"properties":{"paths":{"items":{"type":"string"},"type":"array","title":"Paths"},"test_path":{"type":"string","maxLength":1000,"minLength":1,"title":"Test Path"}},"type":"object","required":["test_path"],"title":"RulePathTestRequest","description":"Authoring-time check: does ``test_path`` match any of ``paths``?\n\nPure glob match — no live session/workspace involved, so this is an\napproximation of the real PreToolUse hook match (which also tries the\nbasename and workspace-relative forms; see ``agents/hooks/_builtin_rules.py``)."},"RulePathTestResponse":{"properties":{"matches":{"type":"boolean","title":"Matches"}},"type":"object","required":["matches"],"title":"RulePathTestResponse"},"ScheduleCreateIn":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"timezone":{"type":"string","maxLength":64,"title":"Timezone","default":"UTC"},"rotation":{"$ref":"#/components/schemas/RotationIn"}},"type":"object","required":["name","rotation"],"title":"ScheduleCreateIn"},"ScheduleCurrentOut":{"properties":{"user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"},"is_override":{"type":"boolean","title":"Is Override"},"shift_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Shift Ends At"}},"type":"object","required":["user_id","is_override","shift_ends_at"],"title":"ScheduleCurrentOut"},"ScheduleListOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ScheduleOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["items","total","limit","offset"],"title":"ScheduleListOut"},"ScheduleOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"name":{"type":"string","title":"Name"},"timezone":{"type":"string","title":"Timezone"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"rotation":{"anyOf":[{"$ref":"#/components/schemas/RotationOut"},{"type":"null"}]}},"type":"object","required":["id","project_id","name","timezone","created_at","updated_at"],"title":"ScheduleOut"},"ScheduleUpdateIn":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Name"},"timezone":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Timezone"},"rotation":{"anyOf":[{"$ref":"#/components/schemas/RotationIn"},{"type":"null"}]}},"type":"object","title":"ScheduleUpdateIn"},"SearchRequest":{"properties":{"query":{"type":"string","title":"Query"},"entity_kinds":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Entity Kinds"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"},"mode":{"type":"string","title":"Mode","default":"hybrid"}},"type":"object","required":["query"],"title":"SearchRequest"},"SecretCreate":{"properties":{"name":{"type":"string","title":"Name"},"value":{"type":"string","title":"Value"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},"type":"object","required":["name","value"],"title":"SecretCreate"},"SecretListOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name","description","provider","environment","created_at","updated_at"],"title":"SecretListOut"},"SecretOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"value":{"type":"string","title":"Value"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name","value","description","provider","environment","created_at","updated_at"],"title":"SecretOut"},"SecretRefInput":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"}},"type":"object","required":["name"],"title":"SecretRefInput"},"SecretUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment"}},"type":"object","title":"SecretUpdate"},"SessionArtifactNotification":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"channel_type":{"$ref":"#/components/schemas/NotificationChannelType"},"title":{"type":"string","title":"Title"},"recipient":{"type":"string","title":"Recipient"},"status":{"type":"string","title":"Status"},"sent_at":{"type":"string","format":"date-time","title":"Sent At"}},"type":"object","required":["id","channel_type","title","recipient","status","sent_at"],"title":"SessionArtifactNotification"},"SessionArtifactReport":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"type":"string","title":"Title"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","title","created_at"],"title":"SessionArtifactReport"},"SessionBulkDeleteRequest":{"properties":{"file_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"File Ids"}},"type":"object","required":["file_ids"],"title":"SessionBulkDeleteRequest"},"SessionBulkDeleteResponse":{"properties":{"deleted_count":{"type":"integer","title":"Deleted Count"},"failed_ids":{"items":{"type":"string"},"type":"array","title":"Failed Ids"}},"type":"object","required":["deleted_count","failed_ids"],"title":"SessionBulkDeleteResponse"},"SessionChannelMetadata":{"properties":{"source":{"type":"string","title":"Source"},"label":{"type":"string","title":"Label"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"channel_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel Id"},"thread_ts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thread Ts"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"chat_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chat Id"},"message_thread_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Message Thread Id"},"jid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jid"},"push_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Push Name"}},"type":"object","required":["source","label"],"title":"SessionChannelMetadata","description":"Human-facing metadata for a channel-backed SDK session."},"SessionDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"task_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"},"task_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Name"},"status":{"$ref":"#/components/schemas/SessionStatus"},"agent_type":{"$ref":"#/components/schemas/AgentType"},"trigger_source":{"$ref":"#/components/schemas/TriggerSource","default":"manual"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"total_tokens":{"type":"integer","title":"Total Tokens"},"cost_usd":{"type":"number","title":"Cost Usd"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"total_messages_count":{"type":"integer","title":"Total Messages Count","default":0},"total_tool_calls_count":{"type":"integer","title":"Total Tool Calls Count","default":0},"success_tool_calls_count":{"type":"integer","title":"Success Tool Calls Count","default":0},"failed_tool_calls_count":{"type":"integer","title":"Failed Tool Calls Count","default":0},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"error_details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Details"},"error_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Category"},"agent_native_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Native Session Id"},"sdk_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sdk Session Id"},"otel_trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Otel Trace Id"},"otel_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Otel Span Id"},"langfuse_trace_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Langfuse Trace Url"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"num_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Turns"},"cache_read_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Read Tokens"},"cache_write_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Write Tokens"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"tokens_remaining_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tokens Remaining Pct"},"system_prompt_snapshot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Snapshot"},"prompt_snapshot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Snapshot"},"git_clone_results":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Git Clone Results"},"reports":{"items":{"$ref":"#/components/schemas/SessionArtifactReport"},"type":"array","title":"Reports","default":[]},"notification_logs":{"items":{"$ref":"#/components/schemas/SessionArtifactNotification"},"type":"array","title":"Notification Logs","default":[]}},"type":"object","required":["id","task_id","status","agent_type","started_at","finished_at","duration_ms","input_tokens","output_tokens","total_tokens","cost_usd","summary","error_message","created_at"],"title":"SessionDetailOut"},"SessionForkRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"up_to_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Up To Message Id"}},"type":"object","title":"SessionForkRequest"},"SessionIndexOut":{"properties":{"id":{"type":"string","title":"Id"},"db_session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Db Session Id"},"sdk_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sdk Session Id"},"source":{"type":"string","title":"Source"},"trigger_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Source"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"title":{"type":"string","title":"Title"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"task_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"},"task_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Name"},"agent_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Type"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Tokens"},"output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Tokens"},"total_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Tokens"},"cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Usd"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"last_activity_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Activity At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"pinned":{"type":"boolean","title":"Pinned","default":false},"channel":{"anyOf":[{"$ref":"#/components/schemas/SessionChannelMetadata"},{"type":"null"}]},"can_cancel":{"type":"boolean","title":"Can Cancel","default":false},"can_retry":{"type":"boolean","title":"Can Retry","default":false},"can_download_workspace":{"type":"boolean","title":"Can Download Workspace","default":false},"num_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Turns"},"cache_read_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Read Tokens"},"cache_write_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Write Tokens"},"tokens_remaining_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tokens Remaining Pct"},"error_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Category"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"error_details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Details"}},"type":"object","required":["id","source","title"],"title":"SessionIndexOut","description":"Normalized session row for the console sessions module.\n\n``id`` is the console detail id. It is the DB Session.id when a row\nexists, otherwise the SDK session id. ``sdk_session_id`` remains the\ntranscript/continue-chat id."},"SessionIndexResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SessionIndexOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"stats":{"$ref":"#/components/schemas/SessionIndexStatsOut"}},"type":"object","required":["items","total","stats"],"title":"SessionIndexResponse"},"SessionIndexStatsOut":{"properties":{"total":{"type":"integer","title":"Total"},"chat":{"type":"integer","title":"Chat"},"task":{"type":"integer","title":"Task"},"webchat":{"type":"integer","title":"Webchat"},"slack":{"type":"integer","title":"Slack"},"telegram":{"type":"integer","title":"Telegram"},"whatsapp":{"type":"integer","title":"Whatsapp"},"running":{"type":"integer","title":"Running"},"failed":{"type":"integer","title":"Failed"},"total_cost_usd":{"type":"number","title":"Total Cost Usd"}},"type":"object","required":["total","chat","task","webchat","slack","telegram","whatsapp","running","failed","total_cost_usd"],"title":"SessionIndexStatsOut"},"SessionPresenceOut":{"properties":{"viewers":{"items":{"$ref":"#/components/schemas/SessionViewerOut"},"type":"array","title":"Viewers","default":[]}},"type":"object","title":"SessionPresenceOut"},"SessionRenameRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"}},"type":"object","title":"SessionRenameRequest"},"SessionResumeRequest":{"properties":{"prompt":{"type":"string","maxLength":20000,"minLength":1,"title":"Prompt"},"context_prefix":{"type":"string","title":"Context Prefix","default":""}},"type":"object","required":["prompt"],"title":"SessionResumeRequest"},"SessionSearchRequest":{"properties":{"query":{"type":"string","title":"Query"},"mode":{"type":"string","title":"Mode","default":"hybrid"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["query"],"title":"SessionSearchRequest"},"SessionShareCreateRequest":{"properties":{"ttl_days":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Ttl Days","default":7}},"type":"object","title":"SessionShareCreateRequest"},"SessionShareCreated":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"sdk_session_id":{"type":"string","title":"Sdk Session Id"},"token_prefix":{"type":"string","title":"Token Prefix"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"is_active":{"type":"boolean","title":"Is Active"},"created_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By User Id"},"token":{"type":"string","title":"Token"}},"type":"object","required":["id","sdk_session_id","token_prefix","created_at","expires_at","revoked_at","is_active","created_by_user_id","token"],"title":"SessionShareCreated"},"SessionShareOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"sdk_session_id":{"type":"string","title":"Sdk Session Id"},"token_prefix":{"type":"string","title":"Token Prefix"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"is_active":{"type":"boolean","title":"Is Active"},"created_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By User Id"}},"type":"object","required":["id","sdk_session_id","token_prefix","created_at","expires_at","revoked_at","is_active","created_by_user_id"],"title":"SessionShareOut"},"SessionStatsOut":{"properties":{"total":{"type":"integer","title":"Total"},"by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Status"},"by_agent":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Agent"},"by_trigger":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Trigger"}},"type":"object","required":["total","by_status","by_agent","by_trigger"],"title":"SessionStatsOut"},"SessionStatus":{"type":"string","enum":["pending","running","completed","failed","cancelled","timeout"],"title":"SessionStatus"},"SessionViewerOut":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"}},"type":"object","required":["user_id","display_name"],"title":"SessionViewerOut"},"SettingValueIn":{"properties":{"value":{"title":"Value"}},"type":"object","required":["value"],"title":"SettingValueIn"},"SignatureVerifyRequest":{"properties":{"scheme":{"type":"string","title":"Scheme"},"body":{"type":"string","title":"Body"},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers","default":{}},"signature_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signature Secret"},"provided_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provided Token"}},"type":"object","required":["scheme","body"],"title":"SignatureVerifyRequest"},"SignatureVerifyResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"reason":{"type":"string","title":"Reason"},"scheme":{"type":"string","title":"Scheme"}},"type":"object","required":["ok","reason","scheme"],"title":"SignatureVerifyResponse"},"StorageQuotaResponse":{"properties":{"used_bytes":{"type":"integer","title":"Used Bytes"},"used_formatted":{"type":"string","title":"Used Formatted"},"file_count":{"type":"integer","title":"File Count"}},"type":"object","required":["used_bytes","used_formatted","file_count"],"title":"StorageQuotaResponse"},"StorageStats":{"properties":{"total_files":{"type":"integer","title":"Total Files"},"total_size_bytes":{"type":"integer","title":"Total Size Bytes"},"by_folder":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Folder"}},"type":"object","required":["total_files","total_size_bytes","by_folder"],"title":"StorageStats"},"StoredFileOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"filename":{"type":"string","title":"Filename"},"original_filename":{"type":"string","title":"Original Filename"},"content_type":{"type":"string","title":"Content Type"},"file_size_bytes":{"type":"integer","title":"File Size Bytes"},"s3_url":{"type":"string","title":"S3 Url"},"folder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"is_optimized":{"type":"boolean","title":"Is Optimized"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"}},"type":"object","required":["id","filename","original_filename","content_type","file_size_bytes","s3_url","folder","thumbnail_url","is_optimized","session_id","conversation_id","expires_at","uploaded_at"],"title":"StoredFileOut"},"SubscriptionOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"plan_id":{"type":"string","format":"uuid","title":"Plan Id"},"plan_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Slug"},"status":{"type":"string","enum":["trialing","active","past_due","canceled","unpaid","incomplete"],"title":"Status"},"gateway":{"type":"string","title":"Gateway","default":"stripe"},"gateway_customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gateway Customer Id"},"gateway_subscription_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gateway Subscription Id"},"current_period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period Start"},"current_period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period End"},"trial_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial End"},"cancel_at_period_end":{"type":"boolean","title":"Cancel At Period End","default":false},"canceled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Canceled At"},"quantity":{"type":"integer","title":"Quantity","default":1}},"type":"object","required":["id","organization_id","plan_id","status"],"title":"SubscriptionOut"},"SystemPromptUpdate":{"properties":{"sections":{"anyOf":[{"items":{"$ref":"#/components/schemas/PromptSectionIn"},"type":"array"},{"type":"null"}],"title":"Sections"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"}},"type":"object","title":"SystemPromptUpdate","description":"System-prompt save body. Prefer ``sections`` (the ordered editing model);\n``value`` is the legacy flat-text fallback."},"TaskBulkDeleteRequest":{"properties":{"file_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"File Ids"}},"type":"object","required":["file_ids"],"title":"TaskBulkDeleteRequest"},"TaskBulkDeleteResponse":{"properties":{"deleted_count":{"type":"integer","title":"Deleted Count"},"failed_ids":{"items":{"type":"string"},"type":"array","title":"Failed Ids"}},"type":"object","required":["deleted_count","failed_ids"],"title":"TaskBulkDeleteResponse"},"TaskCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"},"cron_schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cron Schedule"},"agent_type":{"$ref":"#/components/schemas/AgentType","default":"claude-code"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"},"prompt":{"type":"string","title":"Prompt"},"timeout_seconds":{"type":"integer","title":"Timeout Seconds","default":600},"max_retries":{"type":"integer","title":"Max Retries","default":0},"enabled":{"type":"boolean","title":"Enabled","default":true},"auto_archive_artifact":{"type":"boolean","title":"Auto Archive Artifact","default":false},"log_calendar_event":{"type":"boolean","title":"Log Calendar Event","default":false},"calendar_event_type":{"anyOf":[{"$ref":"#/components/schemas/CalendarEventType"},{"type":"null"}]},"agent_settings":{"additionalProperties":true,"type":"object","title":"Agent Settings","default":{}},"pre_run_context":{"additionalProperties":true,"type":"object","title":"Pre Run Context","default":{"inject_skills":true}},"task_memory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Memory"},"mcp_server_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Mcp Server Ids","default":[]},"git_repo_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Git Repo Ids","default":[]},"notification_channel_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Notification Channel Ids","default":[]},"file_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"File Ids","default":[]}},"type":"object","required":["name","prompt"],"title":"TaskCreate"},"TaskDeliveryTargetOut":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"channel_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel Type"},"enabled":{"type":"boolean","title":"Enabled","default":true},"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","title":"TaskDeliveryTargetOut"},"TaskDeliveryTargetPreview":{"properties":{"kind":{"type":"string","title":"Kind"},"label":{"type":"string","title":"Label"}},"type":"object","required":["kind","label"],"title":"TaskDeliveryTargetPreview"},"TaskListOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"cron_schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cron Schedule"},"agent_type":{"$ref":"#/components/schemas/AgentType"},"enabled":{"type":"boolean","title":"Enabled"},"auto_archive_artifact":{"type":"boolean","title":"Auto Archive Artifact"},"agent_settings":{"additionalProperties":true,"type":"object","title":"Agent Settings","default":{}},"last_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Run At"},"next_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Run At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"session_count":{"type":"integer","title":"Session Count","default":0}},"type":"object","required":["id","name","description","cron_schedule","agent_type","enabled","auto_archive_artifact","last_run_at","next_run_at","created_at"],"title":"TaskListOut"},"TaskOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"},"cron_schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cron Schedule"},"agent_type":{"$ref":"#/components/schemas/AgentType"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"},"prompt":{"type":"string","title":"Prompt"},"timeout_seconds":{"type":"integer","title":"Timeout Seconds"},"max_retries":{"type":"integer","title":"Max Retries"},"enabled":{"type":"boolean","title":"Enabled"},"auto_archive_artifact":{"type":"boolean","title":"Auto Archive Artifact"},"log_calendar_event":{"type":"boolean","title":"Log Calendar Event"},"calendar_event_type":{"anyOf":[{"$ref":"#/components/schemas/CalendarEventType"},{"type":"null"}]},"agent_settings":{"additionalProperties":true,"type":"object","title":"Agent Settings","default":{}},"pre_run_context":{"additionalProperties":true,"type":"object","title":"Pre Run Context","default":{"inject_skills":true}},"task_memory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Memory"},"last_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Run At"},"next_run_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Run At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"mcp_servers":{"items":{"$ref":"#/components/schemas/McpServerOut"},"type":"array","title":"Mcp Servers","default":[]},"git_repos":{"items":{"$ref":"#/components/schemas/GitRepoOut"},"type":"array","title":"Git Repos","default":[]},"notification_channels":{"items":{"$ref":"#/components/schemas/TaskDeliveryTargetOut"},"type":"array","title":"Notification Channels","default":[]},"files":{"items":{"$ref":"#/components/schemas/StoredFileOut"},"type":"array","title":"Files","default":[]}},"type":"object","required":["id","name","description","template_id","cron_schedule","agent_type","system_prompt","prompt","timeout_seconds","max_retries","enabled","auto_archive_artifact","log_calendar_event","last_run_at","next_run_at","created_at","updated_at"],"title":"TaskOut"},"TaskPreviewOut":{"properties":{"name":{"type":"string","title":"Name","default":""},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"cron_schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cron Schedule"},"agent_type":{"$ref":"#/components/schemas/AgentType","default":"claude-code"},"user_prompt":{"type":"string","title":"User Prompt"},"system_prompt_text":{"type":"string","title":"System Prompt Text"},"system_prompt_sections":{"items":{"$ref":"#/components/schemas/PromptSectionPreview"},"type":"array","title":"System Prompt Sections"},"agent_settings":{"$ref":"#/components/schemas/AgentSettingsPreview"},"mcp_servers":{"items":{"$ref":"#/components/schemas/McpServerPreview"},"type":"array","title":"Mcp Servers"},"git_repos":{"items":{"$ref":"#/components/schemas/GitRepoPreview"},"type":"array","title":"Git Repos","default":[]},"notification_channels":{"items":{"$ref":"#/components/schemas/TaskDeliveryTargetPreview"},"type":"array","title":"Notification Channels","default":[]},"files":{"items":{"$ref":"#/components/schemas/AttachedFilePreview"},"type":"array","title":"Files","default":[]},"webhook":{"anyOf":[{"$ref":"#/components/schemas/TaskWebhookPreview"},{"type":"null"}]}},"type":"object","required":["user_prompt","system_prompt_text","system_prompt_sections","agent_settings","mcp_servers"],"title":"TaskPreviewOut","description":"Everything the agent will receive when this task runs.\n\nUsed by:\n- POST /api/tasks/preview — type-as-you-go preview on /tasks/new\n- GET  /api/tasks/{task_id}/preview — read-only preview on /tasks/[id]"},"TaskPreviewRequest":{"properties":{"name":{"type":"string","title":"Name","default":""},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"},"cron_schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cron Schedule"},"agent_type":{"$ref":"#/components/schemas/AgentType","default":"claude-code"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"},"prompt":{"type":"string","title":"Prompt","default":""},"timeout_seconds":{"type":"integer","title":"Timeout Seconds","default":600},"max_retries":{"type":"integer","title":"Max Retries","default":0},"enabled":{"type":"boolean","title":"Enabled","default":true},"auto_archive_artifact":{"type":"boolean","title":"Auto Archive Artifact","default":false},"agent_settings":{"additionalProperties":true,"type":"object","title":"Agent Settings","default":{}},"pre_run_context":{"additionalProperties":true,"type":"object","title":"Pre Run Context","default":{"inject_skills":true}},"task_memory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Memory"},"mcp_server_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Mcp Server Ids","default":[]},"git_repo_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Git Repo Ids","default":[]},"notification_channel_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Notification Channel Ids","default":[]},"file_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"File Ids","default":[]}},"type":"object","title":"TaskPreviewRequest","description":"Draft body for the preview endpoint — all fields optional.\n\nThe preview endpoint never persists anything. Mirrors TaskCreate but\nrelaxed so the panel renders incrementally as the user fills the form."},"TaskStatOut":{"properties":{"task":{"type":"string","title":"Task"},"queue":{"type":"string","title":"Queue"},"invocations_1h":{"type":"integer","title":"Invocations 1H"},"failures_1h":{"type":"integer","title":"Failures 1H"},"p95_duration_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P95 Duration Ms"}},"type":"object","required":["task","queue","invocations_1h","failures_1h","p95_duration_ms"],"title":"TaskStatOut"},"TaskStatsOut":{"properties":{"total":{"type":"integer","title":"Total"},"enabled":{"type":"integer","title":"Enabled"},"disabled":{"type":"integer","title":"Disabled"},"scheduled":{"type":"integer","title":"Scheduled"},"by_agent":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Agent"}},"type":"object","required":["total","enabled","disabled","scheduled","by_agent"],"title":"TaskStatsOut"},"TaskTemplateOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"type":"string","title":"Description"},"default_cron":{"type":"string","title":"Default Cron"},"default_agent_type":{"$ref":"#/components/schemas/AgentType"},"system_prompt":{"type":"string","title":"System Prompt"},"default_mcp_servers":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Default Mcp Servers"},"default_timeout_seconds":{"type":"integer","title":"Default Timeout Seconds"},"icon":{"type":"string","title":"Icon"},"color":{"type":"string","title":"Color"},"category":{"type":"string","title":"Category","default":"general"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","name","slug","description","default_cron","default_agent_type","system_prompt","default_timeout_seconds","icon","color","created_at"],"title":"TaskTemplateOut"},"TaskTriggerResponse":{"properties":{"session_id":{"type":"string","format":"uuid","title":"Session Id"},"message":{"type":"string","title":"Message"}},"type":"object","required":["session_id","message"],"title":"TaskTriggerResponse"},"TaskUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"cron_schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cron Schedule"},"agent_type":{"anyOf":[{"$ref":"#/components/schemas/AgentType"},{"type":"null"}]},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"timeout_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timeout Seconds"},"max_retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Retries"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"auto_archive_artifact":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Archive Artifact"},"log_calendar_event":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Log Calendar Event"},"calendar_event_type":{"anyOf":[{"$ref":"#/components/schemas/CalendarEventType"},{"type":"null"}]},"agent_settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Agent Settings"},"pre_run_context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pre Run Context"},"task_memory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Memory"},"mcp_server_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Mcp Server Ids"},"git_repo_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Git Repo Ids"},"notification_channel_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Notification Channel Ids"},"file_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"File Ids"}},"type":"object","title":"TaskUpdate"},"TaskWebhookPreview":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"ingest_url":{"type":"string","title":"Ingest Url"},"signature_scheme":{"type":"string","title":"Signature Scheme"},"rate_limit_per_minute":{"type":"integer","title":"Rate Limit Per Minute"},"dedupe_window_seconds":{"type":"integer","title":"Dedupe Window Seconds"}},"type":"object","required":["enabled","ingest_url","signature_scheme","rate_limit_per_minute","dedupe_window_seconds"],"title":"TaskWebhookPreview"},"TemplatePreviewRequest":{"properties":{"template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"}},"type":"object","required":["payload"],"title":"TemplatePreviewRequest"},"TemplatePreviewResponse":{"properties":{"rendered":{"type":"string","title":"Rendered"},"missing_keys":{"items":{"type":"string"},"type":"array","title":"Missing Keys","default":[]}},"type":"object","required":["rendered"],"title":"TemplatePreviewResponse"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"user":{"$ref":"#/components/schemas/UserOut"}},"type":"object","required":["access_token","user"],"title":"TokenResponse","description":"Returned by /login (no MFA), /accept-invite, /register, /refresh,\n/mfa/challenge (success). The same shape so the frontend can branch on\npresence of ``mfa_required`` instead of two response types."},"ToolCallRequest":{"properties":{"tool":{"type":"string","title":"Tool"},"params":{"additionalProperties":true,"type":"object","title":"Params","default":{}}},"type":"object","required":["tool"],"title":"ToolCallRequest"},"ToolPreview":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["name"],"title":"ToolPreview"},"ToolReliabilityOut":{"properties":{"tool_name":{"type":"string","title":"Tool Name"},"server":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server"},"invocations":{"type":"integer","title":"Invocations"},"errors":{"type":"integer","title":"Errors"},"error_rate_pct":{"type":"number","title":"Error Rate Pct"},"p95_duration_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P95 Duration Ms"}},"type":"object","required":["tool_name","server","invocations","errors","error_rate_pct","p95_duration_ms"],"title":"ToolReliabilityOut"},"TriggerSource":{"type":"string","enum":["manual","scheduled","webhook","web"],"title":"TriggerSource"},"TroubleshootNodeOut":{"properties":{"id":{"type":"string","title":"Id"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation"},"options":{"items":{"$ref":"#/components/schemas/TroubleshootOptionOut"},"type":"array","title":"Options","default":[]},"action_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Label"},"action_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Link"}},"type":"object","required":["id"],"title":"TroubleshootNodeOut"},"TroubleshootOptionOut":{"properties":{"label":{"type":"string","title":"Label"},"next":{"type":"string","title":"Next"}},"type":"object","required":["label","next"],"title":"TroubleshootOptionOut"},"UnreadCountOut":{"properties":{"count":{"type":"integer","title":"Count"}},"type":"object","required":["count"],"title":"UnreadCountOut"},"UpcomingShiftOut":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"is_override":{"type":"boolean","title":"Is Override"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"ends_at":{"type":"string","format":"date-time","title":"Ends At"}},"type":"object","required":["user_id","is_override","starts_at","ends_at"],"title":"UpcomingShiftOut"},"UpdateCeilingRequest":{"properties":{"daily_usd_limit":{"type":"number","title":"Daily Usd Limit","description":"New daily USD limit. Use -1 to disable the ceiling."}},"type":"object","required":["daily_usd_limit"],"title":"UpdateCeilingRequest"},"UpdateMemberRoleRequest":{"properties":{"role":{"type":"string","title":"Role"}},"type":"object","required":["role"],"title":"UpdateMemberRoleRequest"},"UpdateProjectMemberRequest":{"properties":{"role":{"type":"string","enum":["viewer","member","admin"],"title":"Role"}},"type":"object","required":["role"],"title":"UpdateProjectMemberRequest"},"UsageMeterOut":{"properties":{"meter":{"type":"string","title":"Meter"},"current":{"type":"integer","title":"Current"},"limit":{"type":"integer","title":"Limit"},"percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percent"}},"type":"object","required":["meter","current","limit"],"title":"UsageMeterOut"},"UsageOut":{"properties":{"meters":{"items":{"$ref":"#/components/schemas/UsageMeterOut"},"type":"array","title":"Meters"}},"type":"object","required":["meters"],"title":"UsageOut"},"UserOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"avatar_thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Thumbnail Url"},"email_verified":{"type":"boolean","title":"Email Verified"},"org_id":{"type":"string","format":"uuid","title":"Org Id"},"role":{"type":"string","title":"Role"},"is_platform_admin":{"type":"boolean","title":"Is Platform Admin","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","email","display_name","avatar_url","email_verified","org_id","role","created_at","updated_at"],"title":"UserOut","description":"User profile returned in API responses.\n\norg_id and role come from the JWT ContextVars — not from the DB row —\nso they are passed in explicitly by the endpoint, not via from_attributes."},"UserUpdate":{"properties":{"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"}},"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"},"VerifyEmailRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"VerifyEmailRequest"},"VersionResponse":{"properties":{"api_version":{"type":"string","title":"Api Version"},"min_cli_version":{"type":"string","title":"Min Cli Version"},"max_cli_version":{"type":"string","title":"Max Cli Version"},"deprecation_notice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deprecation Notice"},"released_at":{"type":"string","format":"date-time","title":"Released At"},"build_sha":{"type":"string","title":"Build Sha"}},"type":"object","required":["api_version","min_cli_version","max_cli_version","released_at","build_sha"],"title":"VersionResponse"},"WebPushSubscriptionCreate":{"properties":{"endpoint":{"type":"string","title":"Endpoint"},"p256dh":{"type":"string","title":"P256Dh"},"auth":{"type":"string","title":"Auth"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"}},"type":"object","required":["endpoint","p256dh","auth"],"title":"WebPushSubscriptionCreate"},"WebPushSubscriptionOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"endpoint":{"type":"string","title":"Endpoint"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","endpoint","user_agent","created_at"],"title":"WebPushSubscriptionOut"},"WebPushVapidKeyOut":{"properties":{"public_key":{"type":"string","title":"Public Key"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["public_key","enabled"],"title":"WebPushVapidKeyOut"},"WebhookBulkDeleteRequest":{"properties":{"ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Ids"}},"type":"object","required":["ids"],"title":"WebhookBulkDeleteRequest"},"WebhookBulkDeleteResponse":{"properties":{"deleted_count":{"type":"integer","title":"Deleted Count"}},"type":"object","required":["deleted_count"],"title":"WebhookBulkDeleteResponse"},"WebhookBulkReplayItem":{"properties":{"event_id":{"type":"string","format":"uuid","title":"Event Id"},"ok":{"type":"boolean","title":"Ok"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["event_id","ok"],"title":"WebhookBulkReplayItem"},"WebhookBulkReplayRequest":{"properties":{"event_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Event Ids"}},"type":"object","required":["event_ids"],"title":"WebhookBulkReplayRequest"},"WebhookBulkReplayResponse":{"properties":{"replayed":{"type":"integer","title":"Replayed"},"failed":{"type":"integer","title":"Failed"},"items":{"items":{"$ref":"#/components/schemas/WebhookBulkReplayItem"},"type":"array","title":"Items"}},"type":"object","required":["replayed","failed","items"],"title":"WebhookBulkReplayResponse"},"WebhookConfigCreate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id"},"apply_recommended_defaults":{"type":"boolean","title":"Apply Recommended Defaults","default":false},"signature_scheme":{"type":"string","title":"Signature Scheme","default":"shared_token"},"signature_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signature Secret"},"rate_limit_per_minute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rate Limit Per Minute"},"dedupe_window_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dedupe Window Seconds"},"prompt_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Template"},"filter_rules":{"items":{},"type":"array","title":"Filter Rules","default":[]}},"type":"object","title":"WebhookConfigCreate"},"WebhookConfigCreatedOut":{"properties":{"config":{"$ref":"#/components/schemas/WebhookConfigOut"},"plain_token":{"type":"string","title":"Plain Token"}},"type":"object","required":["config","plain_token"],"title":"WebhookConfigCreatedOut","description":"Returned once at creation time — contains the plain token."},"WebhookConfigListItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"task_id":{"type":"string","format":"uuid","title":"Task Id"},"task_name":{"type":"string","title":"Task Name"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"token_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Prefix"},"signature_scheme":{"type":"string","title":"Signature Scheme","default":"shared_token"},"enabled":{"type":"boolean","title":"Enabled"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id"},"rate_limit_per_minute":{"type":"integer","title":"Rate Limit Per Minute","default":60},"dedupe_window_seconds":{"type":"integer","title":"Dedupe Window Seconds","default":60},"total_events":{"type":"integer","title":"Total Events","default":0},"last_event_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Event At"},"last_event_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Event Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"events_last_24h_buckets":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Events Last 24H Buckets"}},"type":"object","required":["id","task_id","task_name","enabled","created_at","updated_at"],"title":"WebhookConfigListItem"},"WebhookConfigOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"task_id":{"type":"string","format":"uuid","title":"Task Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"token_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Prefix"},"signature_scheme":{"type":"string","title":"Signature Scheme","default":"shared_token"},"has_signature_secret":{"type":"boolean","title":"Has Signature Secret","default":false},"previous_token_valid_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Previous Token Valid Until"},"enabled":{"type":"boolean","title":"Enabled"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id"},"rate_limit_per_minute":{"type":"integer","title":"Rate Limit Per Minute","default":60},"dedupe_window_seconds":{"type":"integer","title":"Dedupe Window Seconds","default":60},"prompt_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Template"},"filter_rules":{"items":{},"type":"array","title":"Filter Rules","default":[]},"retention_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retention Days"},"redaction_rules_override":{"items":{},"type":"array","title":"Redaction Rules Override","default":[]},"store_payload_metadata_only":{"type":"boolean","title":"Store Payload Metadata Only","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","task_id","enabled","description","created_at","updated_at"],"title":"WebhookConfigOut"},"WebhookConfigUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"signature_scheme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signature Scheme"},"signature_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signature Secret"},"rate_limit_per_minute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rate Limit Per Minute"},"dedupe_window_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dedupe Window Seconds"},"prompt_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Template"},"filter_rules":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Filter Rules"}},"type":"object","title":"WebhookConfigUpdate"},"WebhookEventDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"task_id":{"type":"string","format":"uuid","title":"Task Id"},"task_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Name"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"fanout_session_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Fanout Session Ids"},"headers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Headers"},"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload"},"source_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ip"},"received_at":{"type":"string","format":"date-time","title":"Received At"},"processing_status":{"type":"string","title":"Processing Status"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"error_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Category"},"session_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Status"},"session_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Error"},"parent_event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Event Id"},"replayed_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Replayed By"},"replay_chain":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Replay Chain"},"payload_redacted":{"type":"boolean","title":"Payload Redacted","default":false},"payload_stripped":{"type":"boolean","title":"Payload Stripped","default":false}},"type":"object","required":["id","task_id","received_at","processing_status"],"title":"WebhookEventDetailOut"},"WebhookEventListItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"task_id":{"type":"string","format":"uuid","title":"Task Id"},"task_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Name"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"source_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ip"},"received_at":{"type":"string","format":"date-time","title":"Received At"},"processing_status":{"type":"string","title":"Processing Status"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"payload_preview":{"type":"string","title":"Payload Preview","default":""},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"error_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Category"},"parent_event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Event Id"},"payload_redacted":{"type":"boolean","title":"Payload Redacted","default":false},"payload_stripped":{"type":"boolean","title":"Payload Stripped","default":false}},"type":"object","required":["id","task_id","received_at","processing_status"],"title":"WebhookEventListItem"},"WebhookLatencyOut":{"properties":{"mean":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mean"},"p50":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"P50"},"p95":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"P95"},"p99":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"P99"},"count":{"type":"integer","title":"Count","default":0}},"type":"object","title":"WebhookLatencyOut"},"WebhookPrivacySettings":{"properties":{"retention_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retention Days"},"redaction_rules_override":{"items":{"$ref":"#/components/schemas/WebhookRedactionRule"},"type":"array","title":"Redaction Rules Override","default":[]},"store_payload_metadata_only":{"type":"boolean","title":"Store Payload Metadata Only","default":false}},"type":"object","title":"WebhookPrivacySettings","description":"Per-webhook privacy settings."},"WebhookPrivacySettingsUpdate":{"properties":{"retention_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retention Days"},"redaction_rules_override":{"anyOf":[{"items":{"$ref":"#/components/schemas/WebhookRedactionRule"},"type":"array"},{"type":"null"}],"title":"Redaction Rules Override"},"store_payload_metadata_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Store Payload Metadata Only"}},"type":"object","title":"WebhookPrivacySettingsUpdate","description":"Patch payload for per-webhook privacy settings."},"WebhookProviderDetailOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"category":{"type":"string","title":"Category"},"signature_scheme":{"type":"string","title":"Signature Scheme"},"content_type":{"type":"string","title":"Content Type"},"has_resolved_signal":{"type":"boolean","title":"Has Resolved Signal"},"recommended_correlation":{"type":"boolean","title":"Recommended Correlation"},"docs_url":{"type":"string","title":"Docs Url"},"accent_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent Color"},"logo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo"},"sample_payload":{"additionalProperties":true,"type":"object","title":"Sample Payload"},"snippets":{"items":{"$ref":"#/components/schemas/WebhookProviderSnippet"},"type":"array","title":"Snippets"}},"type":"object","required":["id","name","category","signature_scheme","content_type","has_resolved_signal","recommended_correlation","docs_url","sample_payload","snippets"],"title":"WebhookProviderDetailOut"},"WebhookProviderOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"category":{"type":"string","title":"Category"},"signature_scheme":{"type":"string","title":"Signature Scheme"},"content_type":{"type":"string","title":"Content Type"},"has_resolved_signal":{"type":"boolean","title":"Has Resolved Signal"},"recommended_correlation":{"type":"boolean","title":"Recommended Correlation"},"docs_url":{"type":"string","title":"Docs Url"},"accent_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent Color"},"logo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo"}},"type":"object","required":["id","name","category","signature_scheme","content_type","has_resolved_signal","recommended_correlation","docs_url"],"title":"WebhookProviderOut"},"WebhookProviderSnippet":{"properties":{"format":{"type":"string","title":"Format"},"label":{"type":"string","title":"Label"},"body":{"type":"string","title":"Body"}},"type":"object","required":["format","label","body"],"title":"WebhookProviderSnippet"},"WebhookPurgeRequest":{"properties":{"ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Ids"}},"type":"object","required":["ids"],"title":"WebhookPurgeRequest","description":"Request body for bulk purge."},"WebhookPurgeResponse":{"properties":{"purged_count":{"type":"integer","title":"Purged Count"}},"type":"object","required":["purged_count"],"title":"WebhookPurgeResponse","description":"Response for purge operations."},"WebhookRecipeOut":{"properties":{"slug":{"type":"string","title":"Slug"},"title":{"type":"string","title":"Title"}},"type":"object","required":["slug","title"],"title":"WebhookRecipeOut"},"WebhookRedactionPreviewOut":{"properties":{"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"original":{"additionalProperties":true,"type":"object","title":"Original"},"redacted":{"additionalProperties":true,"type":"object","title":"Redacted"},"any_applied":{"type":"boolean","title":"Any Applied"},"payload_stripped":{"type":"boolean","title":"Payload Stripped"},"already_redacted_at_ingest":{"type":"boolean","title":"Already Redacted At Ingest","default":false}},"type":"object","required":["original","redacted","any_applied","payload_stripped"],"title":"WebhookRedactionPreviewOut","description":"Before/after redaction preview for a sample event.\n\n`already_redacted_at_ingest` is True when `original` is a stored event's\npayload — which has already been redacted at ingest time, so `redacted`\nmay equal `original`. To preview a rule against a pre-redaction payload,\nPOST to the same endpoint with a `sample_payload` body."},"WebhookRedactionPreviewRequest":{"properties":{"sample_payload":{"additionalProperties":true,"type":"object","title":"Sample Payload"},"rules":{"anyOf":[{"items":{"$ref":"#/components/schemas/WebhookRedactionRule"},"type":"array"},{"type":"null"}],"title":"Rules"},"webhook_config_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Webhook Config Id"}},"type":"object","required":["sample_payload"],"title":"WebhookRedactionPreviewRequest","description":"Preview redaction rules against an arbitrary payload.\n\nUse when you want to test what a rule WOULD do — the `event_id` path\nvariant shows what the stored copy looks like, which is already redacted."},"WebhookRedactionRule":{"properties":{"name":{"type":"string","title":"Name"},"path_glob":{"type":"string","title":"Path Glob"},"value_regex":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value Regex"},"replacement":{"type":"string","title":"Replacement","default":"[REDACTED]"}},"type":"object","required":["name","path_glob"],"title":"WebhookRedactionRule","description":"A single JSON-path glob redaction rule."},"WebhookRetentionSettings":{"properties":{"webhook_event_retention_days":{"type":"integer","title":"Webhook Event Retention Days","default":30},"webhook_redaction_rules":{"items":{"$ref":"#/components/schemas/WebhookRedactionRule"},"type":"array","title":"Webhook Redaction Rules","default":[]}},"type":"object","title":"WebhookRetentionSettings","description":"Project-wide webhook retention & redaction settings."},"WebhookRetentionSettingsUpdate":{"properties":{"webhook_event_retention_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Webhook Event Retention Days"},"webhook_redaction_rules":{"anyOf":[{"items":{"$ref":"#/components/schemas/WebhookRedactionRule"},"type":"array"},{"type":"null"}],"title":"Webhook Redaction Rules"}},"type":"object","title":"WebhookRetentionSettingsUpdate","description":"Patch payload for project-wide retention settings."},"WebhookRotatedTokenResponse":{"properties":{"plain_token":{"type":"string","title":"Plain Token"},"previous_token_valid_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Previous Token Valid Until"}},"type":"object","required":["plain_token"],"title":"WebhookRotatedTokenResponse","description":"Returned once after token rotation — contains the new plain token."},"WebhookRoutingRuleCreate":{"properties":{"task_id":{"type":"string","format":"uuid","title":"Task Id"},"priority":{"type":"integer","title":"Priority","default":100},"name":{"type":"string","title":"Name"},"when_expr":{"type":"string","title":"When Expr"},"prompt_template_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Template Override"},"action":{"type":"string","title":"Action","default":"first_match"},"action_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Action Config"},"enabled":{"type":"boolean","title":"Enabled","default":true},"requires_approval":{"type":"boolean","title":"Requires Approval","default":false}},"type":"object","required":["task_id","name","when_expr"],"title":"WebhookRoutingRuleCreate"},"WebhookRoutingRuleOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"webhook_config_id":{"type":"string","format":"uuid","title":"Webhook Config Id"},"task_id":{"type":"string","format":"uuid","title":"Task Id"},"priority":{"type":"integer","title":"Priority"},"name":{"type":"string","title":"Name"},"when_expr":{"type":"string","title":"When Expr"},"prompt_template_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Template Override"},"action":{"type":"string","title":"Action","default":"first_match"},"action_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Action Config"},"enabled":{"type":"boolean","title":"Enabled"},"requires_approval":{"type":"boolean","title":"Requires Approval","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","project_id","webhook_config_id","task_id","priority","name","when_expr","enabled","created_at","updated_at"],"title":"WebhookRoutingRuleOut"},"WebhookRoutingRuleUpdate":{"properties":{"task_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"when_expr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"When Expr"},"prompt_template_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Template Override"},"action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"},"action_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Action Config"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"requires_approval":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Requires Approval"}},"type":"object","title":"WebhookRoutingRuleUpdate"},"WebhookStats":{"properties":{"total_events":{"type":"integer","title":"Total Events"},"by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Status"}},"type":"object","required":["total_events","by_status"],"title":"WebhookStats"},"WebhookStatsOut":{"properties":{"total_configs":{"type":"integer","title":"Total Configs"},"enabled":{"type":"integer","title":"Enabled"},"disabled":{"type":"integer","title":"Disabled"},"total_events_24h":{"type":"integer","title":"Total Events 24H"},"events_by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"Events By Status","default":{}},"succeeded_24h":{"type":"integer","title":"Succeeded 24H","default":0},"failed_24h":{"type":"integer","title":"Failed 24H","default":0},"timed_out_24h":{"type":"integer","title":"Timed Out 24H","default":0},"dropped_24h":{"type":"integer","title":"Dropped 24H","default":0}},"type":"object","required":["total_configs","enabled","disabled","total_events_24h"],"title":"WebhookStatsOut"},"WebhookTestRequest":{"properties":{"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload"}},"type":"object","title":"WebhookTestRequest"},"WebhookTimeseriesOut":{"properties":{"buckets":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Buckets"}},"type":"object","required":["buckets"],"title":"WebhookTimeseriesOut"},"WebhookTriggerResponse":{"properties":{"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"message":{"type":"string","title":"Message"},"alert_group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Alert Group Id"},"alert_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Alert Count"}},"type":"object","required":["message"],"title":"WebhookTriggerResponse"},"WriteFileRequest":{"properties":{"path":{"type":"string","title":"Path"},"content":{"type":"string","title":"Content","default":""}},"type":"object","required":["path"],"title":"WriteFileRequest"},"veirox__api__chat__CancelRequest":{"properties":{"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"CancelRequest"},"veirox__api__whatsapp__CancelRequest":{"properties":{"pair_id":{"type":"string","title":"Pair Id"}},"type":"object","required":["pair_id"],"title":"CancelRequest"},"veirox__schemas__api_keys__ApiKeyCreated":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"role":{"type":"string","title":"Role"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"project_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Project Ids"},"tool_allowlist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tool Allowlist"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"last_used_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used Ip"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"plaintext_key":{"type":"string","title":"Plaintext Key"}},"type":"object","required":["id","name","key_prefix","role","scopes","project_ids","tool_allowlist","last_used_at","last_used_ip","expires_at","is_active","created_at","plaintext_key"],"title":"ApiKeyCreated","description":"Returned exactly once on POST /api/api-keys and POST /rotate.\n\nThe ``plaintext_key`` is the raw secret; the server never retains it\nafter this response. Clients must store it securely — there is no\nrecovery path if it is lost."},"veirox__schemas__billing__CancelRequest":{"properties":{"at_period_end":{"type":"boolean","title":"At Period End","default":true}},"type":"object","title":"CancelRequest"},"veirox__schemas__billing__CheckoutRequest":{"properties":{"plan_slug":{"type":"string","pattern":"^[a-z][a-z0-9_-]{1,39}$","title":"Plan Slug"}},"type":"object","required":["plan_slug"],"title":"CheckoutRequest"},"veirox__schemas__conversations__SessionOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"task_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"},"task_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Name"},"status":{"$ref":"#/components/schemas/SessionStatus"},"agent_type":{"$ref":"#/components/schemas/AgentType"},"trigger_source":{"$ref":"#/components/schemas/TriggerSource","default":"manual"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"total_tokens":{"type":"integer","title":"Total Tokens"},"cost_usd":{"type":"number","title":"Cost Usd"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"total_messages_count":{"type":"integer","title":"Total Messages Count","default":0},"total_tool_calls_count":{"type":"integer","title":"Total Tool Calls Count","default":0},"success_tool_calls_count":{"type":"integer","title":"Success Tool Calls Count","default":0},"failed_tool_calls_count":{"type":"integer","title":"Failed Tool Calls Count","default":0},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"error_details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Details"},"error_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Category"},"agent_native_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Native Session Id"},"sdk_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sdk Session Id"},"otel_trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Otel Trace Id"},"otel_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Otel Span Id"},"langfuse_trace_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Langfuse Trace Url"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"num_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Turns"},"cache_read_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Read Tokens"},"cache_write_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Write Tokens"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"tokens_remaining_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tokens Remaining Pct"}},"type":"object","required":["id","task_id","status","agent_type","started_at","finished_at","duration_ms","input_tokens","output_tokens","total_tokens","cost_usd","summary","error_message","created_at"],"title":"SessionOut"},"veirox__schemas__git__CheckoutRequest":{"properties":{"repo":{"type":"string","title":"Repo"},"branch":{"type":"string","title":"Branch"}},"type":"object","required":["repo","branch"],"title":"CheckoutRequest"},"veirox__schemas__identity__SessionOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip Address"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"device_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Name"},"last_active_at":{"type":"string","format":"date-time","title":"Last Active At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"is_current":{"type":"boolean","title":"Is Current","default":false}},"type":"object","required":["id","ip_address","user_agent","device_name","last_active_at","created_at","expires_at"],"title":"SessionOut"},"veirox__schemas__onboarding__ApiKeyCreated":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"plaintext_key":{"type":"string","title":"Plaintext Key"},"scope_set":{"items":{"type":"string"},"type":"array","title":"Scope Set"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["id","name","plaintext_key","scope_set","expires_at"],"title":"ApiKeyCreated"}}}}