{"openapi":"3.1.0","info":{"title":"Compliancly.ai Tenant Service","description":"Owns tenants, plans, settings, invitations, and billing sync.","version":"0.1.0"},"paths":{"/health":{"get":{"tags":["meta"],"summary":"Health","description":"Liveness probe.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/ready":{"get":{"tags":["meta"],"summary":"Ready","description":"Readiness probe — checks DB.","operationId":"ready_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/tenants":{"get":{"tags":["tenants"],"summary":"List Tenants","description":"List tenants. Super admins see all; tenant admins see their own children only.","operationId":"list_tenants_v1_tenants_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Page Size"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/TenantStatus"},{"type":"null"}],"title":"Status"}},{"name":"parent_tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tenants"],"summary":"Create Tenant","description":"Create a new tenant. Super_admin only (or MSSP creating sub-tenant).","operationId":"create_tenant_v1_tenants_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tenants/{tenant_id}":{"get":{"tags":["tenants"],"summary":"Get Tenant","operationId":"get_tenant_v1_tenants__tenant_id__get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["tenants"],"summary":"Update Tenant","operationId":"update_tenant_v1_tenants__tenant_id__patch","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tenants"],"summary":"Delete Tenant","operationId":"delete_tenant_v1_tenants__tenant_id__delete","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tenants/{tenant_id}/settings":{"get":{"tags":["settings"],"summary":"List Settings","operationId":"list_settings_v1_tenants__tenant_id__settings_get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TenantSettingRead"},"title":"Response List Settings V1 Tenants  Tenant Id  Settings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["settings"],"summary":"Upsert Setting","operationId":"upsert_setting_v1_tenants__tenant_id__settings_put","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantSettingUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantSettingRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tenants/me/settings":{"get":{"tags":["settings"],"summary":"List My Settings","description":"List all key/value settings for the calling tenant.","operationId":"list_my_settings_v1_tenants_me_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List My Settings V1 Tenants Me Settings Get"}}}}}}},"/v1/tenants/me/settings/{key}":{"get":{"tags":["settings"],"summary":"Get My Setting","description":"Read one setting; returns null `value` (200) instead of 404 when\nmissing — UI treats unset keys as defaults.","operationId":"get_my_setting_v1_tenants_me_settings__key__get","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get My Setting V1 Tenants Me Settings  Key  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["settings"],"summary":"Upsert My Setting","description":"Upsert one setting by key for the calling tenant. Body: {\"value\": ...}","operationId":"upsert_my_setting_v1_tenants_me_settings__key__put","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upsert My Setting V1 Tenants Me Settings  Key  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["settings"],"summary":"Delete My Setting","operationId":"delete_my_setting_v1_tenants_me_settings__key__delete","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete My Setting V1 Tenants Me Settings  Key  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tenants/{tenant_id}/invitations":{"post":{"tags":["invitations"],"summary":"Invite User","operationId":"invite_user_v1_tenants__tenant_id__invitations_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["invitations"],"summary":"List Invitations","operationId":"list_invitations_v1_tenants__tenant_id__invitations_get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/InvitationStatus"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InvitationRead"},"title":"Response List Invitations V1 Tenants  Tenant Id  Invitations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users":{"get":{"tags":["users"],"summary":"List Users","description":"List users in the calling tenant. Backs the assignee picker.\n\nOptionally filter with `q` (substring match across email + name). RLS\nkeeps results scoped to the caller's tenant automatically.","operationId":"list_users_v1_users_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Users V1 Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users/me":{"get":{"tags":["users"],"summary":"Me","description":"Identity reflection — used by the SPA at session start to confirm\nthe JWT decoded into the expected tenant + claims.","operationId":"me_v1_users_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Me V1 Users Me Get"}}}}}}},"/v1/users/me/push-tokens":{"get":{"tags":["users"],"summary":"List Push Tokens","description":"List the calling user's registered devices. Tokens are masked\nin the response — only last 8 chars to confirm identity.","operationId":"list_push_tokens_v1_users_me_push_tokens_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Push Tokens V1 Users Me Push Tokens Get"}}}}}},"post":{"tags":["users"],"summary":"Register Push Token","description":"Register/refresh a push token for the calling user.\n\nBody: {\"platform\": \"ios\"|\"android\"|\"web\", \"token\": \"<token>\",\n       \"device_label\": \"Vikas's iPhone\"}\n\nIdempotent — re-posting the same token bumps last_used_at instead\nof inserting a new row. Tokens are stored in clear; APNs/FCM\ntokens are not secret-grade and rotate frequently.","operationId":"register_push_token_v1_users_me_push_tokens_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Register Push Token V1 Users Me Push Tokens Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users/me/push-tokens/{token_id}":{"delete":{"tags":["users"],"summary":"Delete Push Token","description":"Revoke a single registered device — used by the 'sign-out\nthis device' flow + the periodic FCM/APNs invalid-token sweep.","operationId":"delete_push_token_v1_users_me_push_tokens__token_id__delete","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Token Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Push Token V1 Users Me Push Tokens  Token Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users/{user_id}":{"get":{"tags":["users"],"summary":"Get User By Id","operationId":"get_user_by_id_v1_users__user_id__get","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":{"type":"object","additionalProperties":true,"title":"Response Get User By Id V1 Users  User Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wallet":{"get":{"tags":["wallet"],"summary":"Get Wallet","description":"Return the calling tenant's wallet balance + recent transactions.","operationId":"get_wallet_v1_wallet_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Wallet V1 Wallet Get"}}}}}}},"/v1/wallet/topup":{"post":{"tags":["wallet"],"summary":"Topup Wallet","description":"Tenant-initiated top-up. In dev mode credits are added immediately;\nin prod, this would mint a Stripe checkout session and credit the wallet\non webhook receipt.","operationId":"topup_wallet_v1_wallet_topup_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Topup Wallet V1 Wallet Topup Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/wallets/{tenant_id}/topup":{"post":{"tags":["super-admin"],"summary":"Admin Topup","description":"Super-admin grant — used for support credits or refunds.","operationId":"admin_topup_v1_admin_wallets__tenant_id__topup_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Topup V1 Admin Wallets  Tenant Id  Topup Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/grants/run-now":{"post":{"tags":["super-admin"],"summary":"Admin Run Grants","description":"Trigger the monthly grant cron immediately.\n\nIdempotent — tenants whose `last_grant_at` is already in the current\ncalendar month are skipped. Useful for new-plan top-ups, smoke tests,\nor recovering from a missed cron fire.","operationId":"admin_run_grants_v1_admin_grants_run_now_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Run Grants V1 Admin Grants Run Now Post"}}}}}}},"/v1/admin/integrations":{"get":{"tags":["super-admin"],"summary":"Admin List Integrations","description":"List all SaaS-level third-party integrations.\n\nMail (SendGrid/SES), SMS (Twilio), Push (APNs/FCM), Slack,\nPagerDuty, Stripe webhook signing secret, SIEM HEC, etc.\nSecrets are masked — only `last_four` returned.","operationId":"admin_list_integrations_v1_admin_integrations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin List Integrations V1 Admin Integrations Get"}}}}}}},"/v1/admin/integrations/{kind}":{"put":{"tags":["super-admin"],"summary":"Admin Upsert Integration","description":"Create or rotate a SaaS-level integration credential.\n\nBody:\n  {\n    \"name\": \"default\",                  # optional, defaults 'default'\n    \"secret\": \"SG.xxxxxxxx...\",         # required on create / rotate\n    \"config\": {\"from_email\": \"...\", \"from_name\": \"...\"},\n    \"notes\": \"...\",\n    \"enabled\": true\n  }\n\nSecret is encrypted with the platform Fernet key. Existing rows\nare rotated — `rotated_at` updated, `last_four` recomputed.","operationId":"admin_upsert_integration_v1_admin_integrations__kind__put","parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Upsert Integration V1 Admin Integrations  Kind  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/integrations/{kind}/{name}/toggle":{"post":{"tags":["super-admin"],"summary":"Admin Toggle Integration","operationId":"admin_toggle_integration_v1_admin_integrations__kind___name__toggle_post","parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Toggle Integration V1 Admin Integrations  Kind   Name  Toggle Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/integrations/{kind}/{name}":{"delete":{"tags":["super-admin"],"summary":"Admin Delete Integration","operationId":"admin_delete_integration_v1_admin_integrations__kind___name__delete","parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Delete Integration V1 Admin Integrations  Kind   Name  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/integrations/{kind}/{name}/test":{"post":{"tags":["super-admin"],"summary":"Admin Test Integration","description":"Live-test a stored integration: send a probe and stamp result.\n\nCurrently supports kinds:\n  - 'sendgrid'  → send a test email to payload.to (or admin's email)\n  - 'twilio'    → send a test SMS to payload.to (E.164)\n  - 'slack'     → post to webhook URL in config\nOther kinds return a structural-validation result only.","operationId":"admin_test_integration_v1_admin_integrations__kind___name__test_post","parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Test Integration V1 Admin Integrations  Kind   Name  Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/wallets":{"get":{"tags":["super-admin"],"summary":"Admin List Wallets","description":"All wallets across the platform (super_admin only).","operationId":"admin_list_wallets_v1_admin_wallets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Admin List Wallets V1 Admin Wallets Get"}}}}}}},"/v1/wallet/consume":{"post":{"tags":["wallet"],"summary":"Consume Wallet","description":"Debit the calling tenant's wallet for an LLM call.\n\nBody: {\"amount_usd\": float, \"run_id\": str, \"model\": str}\nReturns: {\"balance_usd\": float, \"allowed\": bool}\n\n`allowed` is true if the resulting balance is >= 0 (caller may proceed\nwith at most one more step). When `allowed` is false, the wallet has\njust gone negative — caller MUST abort the run.\n\nThe endpoint is idempotent-friendly per (tenant, run_id, dedup_key) at\nthe call-site level; this row writes once per call.","operationId":"consume_wallet_v1_wallet_consume_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Consume Wallet V1 Wallet Consume Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/plans":{"get":{"tags":["super-admin"],"summary":"List Plans","description":"Returns all plan tier specs — credit grants, limits, pricing.","operationId":"list_plans_v1_admin_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Plans V1 Admin Plans Get"}}}}}}},"/v1/admin/impersonate/{tenant_id}":{"post":{"tags":["super-admin"],"summary":"Impersonate Start","description":"Start impersonating a tenant. Records an audit row.\n\nActual tenant override happens via the `X-Impersonate-Tenant` header on\nsubsequent requests — this endpoint just creates the audit trail and\nreturns the tenant info (so the SPA can show the banner).","operationId":"impersonate_start_v1_admin_impersonate__tenant_id__post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Impersonate Start V1 Admin Impersonate  Tenant Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/impersonate/{tenant_id}/stop":{"post":{"tags":["super-admin"],"summary":"Impersonate Stop","description":"Stop impersonating. Audit-only — the SPA clears its localStorage flag.","operationId":"impersonate_stop_v1_admin_impersonate__tenant_id__stop_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Impersonate Stop V1 Admin Impersonate  Tenant Id  Stop Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/audit-log":{"get":{"tags":["super-admin"],"summary":"List Audit Log","description":"Returns the audit_svc.audit_log feed.\n\nSuper_admin only. Most recent first. Supports optional filters by tenant\nand action prefix. Returns raw dict rows (no Pydantic model — the audit\nlog is intentionally an append-only flat table without RLS).","operationId":"list_audit_log_v1_admin_audit_log_get","parameters":[{"name":"tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by target tenant","title":"Tenant Id"},"description":"Filter by target tenant"},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by action prefix, e.g. 'tenant.'","title":"Action"},"description":"Filter by action prefix, e.g. 'tenant.'"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Audit Log V1 Admin Audit Log Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/grc/{kind}":{"get":{"tags":["grc"],"summary":"Grc List","operationId":"grc_list_v1_grc__kind__get","parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Grc List V1 Grc  Kind  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["grc"],"summary":"Grc Create","operationId":"grc_create_v1_grc__kind__post","parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Grc Create V1 Grc  Kind  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/grc/{kind}/{item_id}":{"patch":{"tags":["grc"],"summary":"Grc Update","operationId":"grc_update_v1_grc__kind___item_id__patch","parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Grc Update V1 Grc  Kind   Item Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["grc"],"summary":"Grc Delete","operationId":"grc_delete_v1_grc__kind___item_id__delete","parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/trust/config":{"get":{"tags":["trust-center"],"summary":"Trust Get Config","operationId":"trust_get_config_v1_trust_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Trust Get Config V1 Trust Config Get"}}}}}},"put":{"tags":["trust-center"],"summary":"Trust Put Config","operationId":"trust_put_config_v1_trust_config_put","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Trust Put Config V1 Trust Config Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/trust/cards":{"get":{"tags":["trust-center"],"summary":"Trust List Cards","operationId":"trust_list_cards_v1_trust_cards_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Trust List Cards V1 Trust Cards Get"}}}}}},"post":{"tags":["trust-center"],"summary":"Trust Create Card","operationId":"trust_create_card_v1_trust_cards_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Trust Create Card V1 Trust Cards Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/trust/cards/{card_id}":{"patch":{"tags":["trust-center"],"summary":"Trust Update Card","operationId":"trust_update_card_v1_trust_cards__card_id__patch","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Card Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Trust Update Card V1 Trust Cards  Card Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["trust-center"],"summary":"Trust Delete Card","operationId":"trust_delete_card_v1_trust_cards__card_id__delete","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Card Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/trust/requests":{"get":{"tags":["trust-center"],"summary":"Trust List Requests","operationId":"trust_list_requests_v1_trust_requests_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Trust List Requests V1 Trust Requests Get"}}}}}}},"/v1/trust/requests/{req_id}/grant":{"post":{"tags":["trust-center"],"summary":"Trust Grant Request","operationId":"trust_grant_request_v1_trust_requests__req_id__grant_post","parameters":[{"name":"req_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Req Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Trust Grant Request V1 Trust Requests  Req Id  Grant Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/trust/requests/{req_id}/deny":{"post":{"tags":["trust-center"],"summary":"Trust Deny Request","operationId":"trust_deny_request_v1_trust_requests__req_id__deny_post","parameters":[{"name":"req_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Req Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Trust Deny Request V1 Trust Requests  Req Id  Deny Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/trust/auditor-invites":{"get":{"tags":["trust-center"],"summary":"Trust List Invites","operationId":"trust_list_invites_v1_trust_auditor_invites_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Trust List Invites V1 Trust Auditor Invites Get"}}}}}},"post":{"tags":["trust-center"],"summary":"Trust Create Invite","operationId":"trust_create_invite_v1_trust_auditor_invites_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Trust Create Invite V1 Trust Auditor Invites Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/trust/auditor-invites/{invite_id}":{"delete":{"tags":["trust-center"],"summary":"Trust Revoke Invite","operationId":"trust_revoke_invite_v1_trust_auditor_invites__invite_id__delete","parameters":[{"name":"invite_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invite Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations":{"get":{"tags":["integrations"],"summary":"Integrations List","operationId":"integrations_list_v1_integrations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Integrations List V1 Integrations Get"}}}}}},"post":{"tags":["integrations"],"summary":"Integrations Create","operationId":"integrations_create_v1_integrations_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Integrations Create V1 Integrations Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/{int_id}":{"patch":{"tags":["integrations"],"summary":"Integrations Update","operationId":"integrations_update_v1_integrations__int_id__patch","parameters":[{"name":"int_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Int Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Integrations Update V1 Integrations  Int Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["integrations"],"summary":"Integrations Delete","operationId":"integrations_delete_v1_integrations__int_id__delete","parameters":[{"name":"int_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Int Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/{int_id}/test":{"post":{"tags":["integrations"],"summary":"Integrations Test","description":"Test-ping the integration. Currently:\n- slack: POST a small message to the configured webhook\n- webhook: POST a benign JSON ping\n- others: stubbed — record as 'connected' with note that real\n  OAuth flow is pending V9","operationId":"integrations_test_v1_integrations__int_id__test_post","parameters":[{"name":"int_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Int Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Integrations Test V1 Integrations  Int Id  Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/api-keys":{"get":{"tags":["api-keys"],"summary":"List Keys","operationId":"list_keys_v1_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Keys V1 Api Keys Get"}}}}}},"post":{"tags":["api-keys"],"summary":"Create Key","operationId":"create_key_v1_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Key V1 Api Keys Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/api-keys/{key_id}":{"delete":{"tags":["api-keys"],"summary":"Revoke Key","operationId":"revoke_key_v1_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"}}}}}}},"/v1/webhook-subscriptions":{"get":{"tags":["webhooks"],"summary":"List Webhooks","operationId":"list_webhooks_v1_webhook_subscriptions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Webhooks V1 Webhook Subscriptions Get"}}}}}},"post":{"tags":["webhooks"],"summary":"Create Webhook","description":"Subscribe to outbound finding events. Generates a per-subscription\nHMAC secret returned ONCE on create — receivers verify body integrity\nby computing `hmac_sha256(secret, body)` and comparing with the\n`X-Compliancly-Signature` header on each delivery.","operationId":"create_webhook_v1_webhook_subscriptions_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Webhook V1 Webhook Subscriptions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhook-subscriptions/{sub_id}/test-fire":{"post":{"tags":["webhooks"],"summary":"Test Fire Webhook","description":"Send a synthetic event to the subscription so the user can\nconfirm receipt + signature handling. Body shape stable; receivers\ncan match on `kind == \"webhook.test\"`. Records a delivery row so\nthe test attempt shows up in the history panel.","operationId":"test_fire_webhook_v1_webhook_subscriptions__sub_id__test_fire_post","parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Test Fire Webhook V1 Webhook Subscriptions  Sub Id  Test Fire Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhook-subscriptions/{sub_id}/rotate-secret":{"post":{"tags":["webhooks"],"summary":"Rotate Webhook Secret","description":"Generate a new signing secret with a 24h dual-sign overlap.\n\nDuring the overlap, deliveries carry BOTH headers:\n  X-Compliancly-Signature           (new key)\n  X-Compliancly-Signature-Previous  (old key, until expiry)\n\nBody: {\"overlap_hours\": 24}  (default 24, max 168 = 7d, 0 = no overlap).\nReturned ONCE — receivers must update before overlap expires.","operationId":"rotate_webhook_secret_v1_webhook_subscriptions__sub_id__rotate_secret_post","parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sub Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rotate Webhook Secret V1 Webhook Subscriptions  Sub Id  Rotate Secret Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhook-subscriptions/{sub_id}/deliveries":{"get":{"tags":["webhooks"],"summary":"List Webhook Deliveries","description":"Recent delivery attempts for one subscription. Drives the\n'last attempts' panel on Developer Settings.","operationId":"list_webhook_deliveries_v1_webhook_subscriptions__sub_id__deliveries_get","parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sub Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Webhook Deliveries V1 Webhook Subscriptions  Sub Id  Deliveries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhook-subscriptions/{sub_id}":{"delete":{"tags":["webhooks"],"summary":"Delete Webhook","operationId":"delete_webhook_v1_webhook_subscriptions__sub_id__delete","parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sub Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/audit-log/export":{"get":{"tags":["super-admin"],"summary":"Export Audit Log","description":"Stream the tenant's audit log in a SIEM-ingestible format.\n\n- `ndjson` — newline-delimited JSON; default for Splunk HEC + Datadog.\n- `cef` — Common Event Format; ArcSight / QRadar.\n- `csv` — for ad-hoc analysis.\n\nTenants see their own rows only (RLS). Super-admins see global rows\nvia the existing `/v1/admin/audit-log` endpoint when they need\ncross-tenant exports.","operationId":"export_audit_log_v1_admin_audit_log_export_get","parameters":[{"name":"fmt","in":"query","required":false,"schema":{"type":"string","pattern":"^(ndjson|cef|csv)$","default":"ndjson","title":"Fmt"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/gdpr/export":{"post":{"tags":["super-admin"],"summary":"Gdpr Export","description":"Stream a JSON bundle of every row this tenant owns across the\ntenant service. Asset / findings / scan services have their own\n/v1/admin/gdpr/export — the SPA chains them and offers the user one\ndownload per service.\n\nThe output is human-readable NDJSON: one envelope per \"table\" with\nthe table name and the rows, so an auditor can grep without a\nparser. Streaming so even very large tenants don't blow memory.","operationId":"gdpr_export_v1_admin_gdpr_export_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/admin/gdpr/delete":{"post":{"tags":["super-admin"],"summary":"Gdpr Delete","description":"Right-to-erasure across the tenant service.\n\nTwo-phase: caller must POST first with `{\"step\": \"request\"}` to get a\nconfirmation token, then POST again with `{\"step\": \"confirm\",\n\"token\": \"...\"}` to actually delete. The token is bound to the\nrequesting user + tenant + a short TTL so it cannot be replayed\ncross-tenant.\n\nAsset / findings services expose their own equivalent endpoints —\nthe SPA chains them in series. Tenant deletion (the row in\n`tenants`) is a soft delete via `deleted_at`; rows in tenant-scoped\ntables stay (auditors regret hard deletion). For full physical\npurge run the scheduled retention job after enough time has passed.","operationId":"gdpr_delete_v1_admin_gdpr_delete_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Gdpr Delete V1 Admin Gdpr Delete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/retention/purge":{"post":{"tags":["super-admin"],"summary":"Retention Purge","description":"Purge audit log rows older than the given number of days. Run\nmanually or wired to a scheduler externally. Other tables follow\nsimilar patterns — extend as retention requirements crystallize.","operationId":"retention_purge_v1_admin_retention_purge_post","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","minimum":30,"description":"Audit log rows older than this are deleted (default 7y)","default":2555,"title":"Days"},"description":"Audit log rows older than this are deleted (default 7y)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Retention Purge V1 Admin Retention Purge Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/marketplace":{"get":{"tags":["marketplace"],"summary":"Marketplace Catalog","description":"Static catalog of installable integration kinds. Drives the\nIntegrations page's \"Add integration\" tile picker. Status flags:\n  - 'ga'      — fully wired, end-to-end tested\n  - 'preview' — config + tile available, sync logic stubbed\n  - 'beta'    — limited rollout","operationId":"marketplace_catalog_v1_marketplace_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Marketplace Catalog V1 Marketplace Get"}}}}}}},"/v1/findings/{finding_id}/replay-proof":{"post":{"tags":["replay"],"summary":"Store Replay Proof","description":"Attach a recorded HTTP exchange to a finding. Body shape:\n{\n  \"request\": {\"method\": \"POST\", \"url\": \"...\", \"headers\": {...}, \"body\": \"...\"},\n  \"response\": {\"status\": 500, \"headers\": {...}, \"body\": \"...\"},\n  \"captured_at\": \"<iso>\"\n}\n\nThe bytes are stored verbatim; auditors get the original wire-level\nartefact. Body content is capped at 1MB total to keep the DB\nhealthy.","operationId":"store_replay_proof_v1_findings__finding_id__replay_proof_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Store Replay Proof V1 Findings  Finding Id  Replay Proof Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/oncall/rotations":{"get":{"tags":["oncall"],"summary":"List Rotations","operationId":"list_rotations_v1_oncall_rotations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Rotations V1 Oncall Rotations Get"}}}}}},"post":{"tags":["oncall"],"summary":"Create Rotation","operationId":"create_rotation_v1_oncall_rotations_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Rotation V1 Oncall Rotations Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/oncall/rotations/{rotation_id}/current":{"get":{"tags":["oncall"],"summary":"Current Oncall","description":"Return the user UUID currently on-call. Honors active overrides.","operationId":"current_oncall_v1_oncall_rotations__rotation_id__current_get","parameters":[{"name":"rotation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rotation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Current Oncall V1 Oncall Rotations  Rotation Id  Current Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/oncall/rotations/{rotation_id}/overrides":{"post":{"tags":["oncall"],"summary":"Add Override","operationId":"add_override_v1_oncall_rotations__rotation_id__overrides_post","parameters":[{"name":"rotation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rotation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Override V1 Oncall Rotations  Rotation Id  Overrides Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/workflow/transitions":{"get":{"tags":["workflow"],"summary":"Get Workflow","operationId":"get_workflow_v1_workflow_transitions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Workflow V1 Workflow Transitions Get"}}}}}},"put":{"tags":["workflow"],"summary":"Upsert Workflow","description":"Persist a tenant-specific status transition map. Stored under\n`workflow_transitions` in tenant_settings. Shape:\n  {\"open\": [\"in_progress\", \"false_positive\", ...], ...}\n\nThe findings-store mutation API today accepts any FindingStatus\ntransition. Once this map is non-empty, a future enforcement layer\ncan reject transitions that aren't in the tenant's allow-list.","operationId":"upsert_workflow_v1_workflow_transitions_put","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upsert Workflow V1 Workflow Transitions Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notify/chat":{"get":{"tags":["notifications"],"summary":"List Subs","operationId":"list_subs_v1_notify_chat_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Subs V1 Notify Chat Get"}}}}}},"post":{"tags":["notifications"],"summary":"Subscribe","operationId":"subscribe_v1_notify_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Subscribe V1 Notify Chat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notify/chat/{sub_id}":{"delete":{"tags":["notifications"],"summary":"Unsubscribe","operationId":"unsubscribe_v1_notify_chat__sub_id__delete","parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sub Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notify/chat/test":{"post":{"tags":["notifications"],"summary":"Test Push","operationId":"test_push_v1_notify_chat_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestPushRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Test Push V1 Notify Chat Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/offboarding/webhook":{"post":{"tags":["offboarding"],"summary":"Offboard Webhook","operationId":"offboard_webhook_v1_offboarding_webhook_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OffboardWebhook"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Offboard Webhook V1 Offboarding Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/offboarding/events":{"get":{"tags":["offboarding"],"summary":"List Events","operationId":"list_events_v1_offboarding_events_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Events V1 Offboarding Events Get"}}}}}}},"/v1/billing/checkout-session":{"post":{"tags":["billing"],"summary":"Create Checkout Session","operationId":"create_checkout_session_v1_billing_checkout_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Checkout Session V1 Billing Checkout Session Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/subscription":{"get":{"tags":["billing"],"summary":"Get Subscription","operationId":"get_subscription_v1_billing_subscription_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Subscription V1 Billing Subscription Get"}}}}}}},"/v1/invitations":{"get":{"tags":["invitations"],"summary":"List Invitations","operationId":"list_invitations_v1_invitations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Invitations V1 Invitations Get"}}}}}},"post":{"tags":["invitations"],"summary":"Create Invitation","operationId":"create_invitation_v1_invitations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Invitation V1 Invitations Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invitations/{inv_id}":{"delete":{"tags":["invitations"],"summary":"Revoke Invitation","operationId":"revoke_invitation_v1_invitations__inv_id__delete","parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/github":{"get":{"tags":["integration-github"],"summary":"List Bound","operationId":"list_bound_v1_integrations_github_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Bound V1 Integrations Github Get"}}}}}},"post":{"tags":["integration-github"],"summary":"Bind Github","operationId":"bind_github_v1_integrations_github_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitHubBindRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Bind Github V1 Integrations Github Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/auto-fix":{"post":{"tags":["integration-github"],"summary":"Auto Fix Pr","operationId":"auto_fix_pr_v1_findings_auto_fix_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoFixRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Auto Fix Pr V1 Findings Auto Fix Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audit-log":{"get":{"tags":["audit-log"],"summary":"List Log","operationId":"list_log_v1_audit_log_get","parameters":[{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Action"}},{"name":"actor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Actor"}},{"name":"since_days","in":"query","required":false,"schema":{"type":"integer","maximum":730,"minimum":1,"default":30,"title":"Since Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Log V1 Audit Log Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audit-log/export.ndjson":{"get":{"tags":["audit-log"],"summary":"Export Ndjson","operationId":"export_ndjson_v1_audit_log_export_ndjson_get","parameters":[{"name":"since_days","in":"query","required":false,"schema":{"type":"integer","maximum":730,"minimum":1,"default":30,"title":"Since Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/portal-session":{"post":{"tags":["billing"],"summary":"Create Portal Session","operationId":"create_portal_session_v1_billing_portal_session_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Portal Session V1 Billing Portal Session Post"}}}}}}},"/v1/webhooks/dashboard":{"get":{"tags":["webhooks"],"summary":"Dashboard","operationId":"dashboard_v1_webhooks_dashboard_get","parameters":[{"name":"since_hours","in":"query","required":false,"schema":{"type":"integer","maximum":720,"minimum":1,"default":24,"title":"Since Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Dashboard V1 Webhooks Dashboard Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scim/tokens":{"get":{"tags":["scim"],"summary":"List Scim Tokens","operationId":"list_scim_tokens_v1_scim_tokens_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Scim Tokens V1 Scim Tokens Get"}}}}}},"post":{"tags":["scim"],"summary":"Issue Scim Token","operationId":"issue_scim_token_v1_scim_tokens_post","responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Issue Scim Token V1 Scim Tokens Post"}}}}}}},"/v1/scim/tokens/{tok_id}":{"delete":{"tags":["scim"],"summary":"Revoke Scim Token","operationId":"revoke_scim_token_v1_scim_tokens__tok_id__delete","parameters":[{"name":"tok_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tok Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/ServiceProviderConfig":{"get":{"tags":["scim-protocol"],"summary":"Spc","operationId":"spc_v2_ServiceProviderConfig_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Spc V2 Serviceproviderconfig Get"}}}}}}},"/v2/ResourceTypes":{"get":{"tags":["scim-protocol"],"summary":"Resource Types","operationId":"resource_types_v2_ResourceTypes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Resource Types V2 Resourcetypes Get"}}}}}}},"/v2/Users":{"get":{"tags":["scim-protocol"],"summary":"List Users","operationId":"list_users_v2_Users_get","parameters":[{"name":"startIndex","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Startindex"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Count"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Users V2 Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["scim-protocol"],"summary":"Create User","operationId":"create_user_v2_Users_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create User V2 Users Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/Users/{user_id}":{"get":{"tags":["scim-protocol"],"summary":"Get User","operationId":"get_user_v2_Users__user_id__get","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":{"type":"object","additionalProperties":true,"title":"Response Get User V2 Users  User Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["scim-protocol"],"summary":"Delete User","operationId":"delete_user_v2_Users__user_id__delete","parameters":[{"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"}}}}}}},"/v1/audit-log/seal":{"post":{"tags":["audit-log"],"summary":"Seal Unsealed Rows","description":"Compute hash-chain over rows without row_hash. Idempotent.\n\nWalks rows in created_at order. For each, computes\nrow_hash = SHA-256(prev_hash || canonical(id,action,resource,actor,payload,created_at)).","operationId":"seal_unsealed_rows_v1_audit_log_seal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Seal Unsealed Rows V1 Audit Log Seal Post"}}}}}}},"/v1/audit-log/verify":{"get":{"tags":["audit-log"],"summary":"Verify Chain","operationId":"verify_chain_v1_audit_log_verify_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Verify Chain V1 Audit Log Verify Get"}}}}}}},"/v1/admin/digest/run":{"post":{"tags":["digest","super-admin"],"summary":"Manual Digest","operationId":"manual_digest_v1_admin_digest_run_post","parameters":[{"name":"window_hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Window Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Manual Digest V1 Admin Digest Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/backup/run":{"post":{"tags":["backup","super-admin"],"summary":"Manual Backup","operationId":"manual_backup_v1_admin_backup_run_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Manual Backup V1 Admin Backup Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/backup/runs":{"get":{"tags":["backup","super-admin"],"summary":"List Runs","operationId":"list_runs_v1_admin_backup_runs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Runs V1 Admin Backup Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/saml/init":{"post":{"tags":["saml-sso"],"summary":"Init Sp","operationId":"init_sp_v1_saml_init_post","responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Init Sp V1 Saml Init Post"}}}}}}},"/v1/saml/metadata.xml":{"get":{"tags":["saml-sso"],"summary":"Metadata Xml","operationId":"metadata_xml_v1_saml_metadata_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/saml/configure-idp":{"post":{"tags":["saml-sso"],"summary":"Configure Idp","operationId":"configure_idp_v1_saml_configure_idp_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdPConfigure"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Configure Idp V1 Saml Configure Idp Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/saml/status":{"get":{"tags":["saml-sso"],"summary":"Status","operationId":"status_v1_saml_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Status V1 Saml Status Get"}}}}}}},"/v1/admin/help-articles":{"put":{"tags":["help","super-admin"],"summary":"Upsert","operationId":"upsert_v1_admin_help_articles_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleUpsert"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upsert V1 Admin Help Articles Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/stripe-metered/run":{"post":{"tags":["billing","super-admin"],"summary":"Manual Run","operationId":"manual_run_v1_admin_stripe_metered_run_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Manual Run V1 Admin Stripe Metered Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auditor/tokens":{"get":{"tags":["auditor-portal"],"summary":"List Tokens","operationId":"list_tokens_v1_auditor_tokens_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Tokens V1 Auditor Tokens Get"}}}}}},"post":{"tags":["auditor-portal"],"summary":"Issue","operationId":"issue_v1_auditor_tokens_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditorTokenIssue"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Issue V1 Auditor Tokens Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auditor/tokens/{tok_id}":{"delete":{"tags":["auditor-portal"],"summary":"Revoke","operationId":"revoke_v1_auditor_tokens__tok_id__delete","parameters":[{"name":"tok_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tok Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/crons":{"get":{"tags":["super-admin","ops"],"summary":"Cron Health","operationId":"cron_health_v1_admin_crons_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cron Health V1 Admin Crons Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/slack/install-url":{"get":{"tags":["integration-slack"],"summary":"Install Url","operationId":"install_url_v1_integrations_slack_install_url_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Install Url V1 Integrations Slack Install Url Get"}}}}}}},"/v1/integrations/slack/installed":{"get":{"tags":["integration-slack"],"summary":"List Installed","operationId":"list_installed_v1_integrations_slack_installed_get","parameters":[{"name":"session","in":"query","required":false,"schema":{"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Installed V1 Integrations Slack Installed Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dsar":{"get":{"tags":["dsar"],"summary":"List Dsar","operationId":"list_dsar_v1_dsar_get","parameters":[{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Dsar V1 Dsar Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dsar/{dsar_id}/transition":{"post":{"tags":["dsar"],"summary":"Transition","operationId":"transition_v1_dsar__dsar_id__transition_post","parameters":[{"name":"dsar_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dsar Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DSARTransition"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Transition V1 Dsar  Dsar Id  Transition Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dsar/{dsar_id}/history":{"get":{"tags":["dsar"],"summary":"History","operationId":"history_v1_dsar__dsar_id__history_get","parameters":[{"name":"dsar_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dsar Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response History V1 Dsar  Dsar Id  History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/phish/recipients":{"post":{"tags":["phishing"],"summary":"Enroll Recipients","operationId":"enroll_recipients_v1_phish_recipients_post","parameters":[{"name":"session","in":"query","required":false,"schema":{"title":"Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrolRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Enroll Recipients V1 Phish Recipients Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/phish/campaign/{campaign_id}/results":{"get":{"tags":["phishing"],"summary":"Campaign Results","operationId":"campaign_results_v1_phish_campaign__campaign_id__results_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"session","in":"query","required":false,"schema":{"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Campaign Results V1 Phish Campaign  Campaign Id  Results Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tprm/send":{"post":{"tags":["tprm"],"summary":"Send Questionnaire","operationId":"send_questionnaire_v1_tprm_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TPRMSend"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Send Questionnaire V1 Tprm Send Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tprm":{"get":{"tags":["tprm"],"summary":"List Questionnaires","operationId":"list_questionnaires_v1_tprm_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Questionnaires V1 Tprm Get"}}}}}}},"/v1/region":{"get":{"tags":["regions"],"summary":"Get Region","operationId":"get_region_v1_region_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Region V1 Region Get"}}}}}},"put":{"tags":["regions"],"summary":"Set Region","operationId":"set_region_v1_region_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegionUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Set Region V1 Region Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/github-app":{"get":{"tags":["integration-github-app"],"summary":"List Installs","operationId":"list_installs_v1_integrations_github_app_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Installs V1 Integrations Github App Get"}}}}}}},"/v1/integrations/github-app/{install_id}/test-token":{"post":{"tags":["integration-github-app"],"summary":"Test Token","operationId":"test_token_v1_integrations_github_app__install_id__test_token_post","parameters":[{"name":"install_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Install Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Test Token V1 Integrations Github App  Install Id  Test Token Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/devices/register":{"post":{"tags":["devices"],"summary":"Register Device","operationId":"register_device_v1_devices_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceRegistration"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Register Device V1 Devices Register Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/devices":{"get":{"tags":["devices"],"summary":"List Devices","operationId":"list_devices_v1_devices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Devices V1 Devices Get"}}}}}}},"/v1/devices/{device_id}":{"delete":{"tags":["devices"],"summary":"Revoke Device","operationId":"revoke_device_v1_devices__device_id__delete","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Revoke Device V1 Devices  Device Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/razorpay/subscribe":{"post":{"tags":["billing-razorpay"],"summary":"Subscribe","operationId":"subscribe_v1_billing_razorpay_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Subscribe V1 Billing Razorpay Subscribe Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/razorpay/status":{"get":{"tags":["billing-razorpay"],"summary":"Status","operationId":"status_v1_billing_razorpay_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Status V1 Billing Razorpay Status Get"}}}}}}},"/v1/billing/razorpay/cancel":{"post":{"tags":["billing-razorpay"],"summary":"Cancel","operationId":"cancel_v1_billing_razorpay_cancel_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cancel V1 Billing Razorpay Cancel Post"}}}}}}},"/v1/billing/invoices/generate":{"post":{"tags":["billing-invoices"],"summary":"Generate","operationId":"generate_v1_billing_invoices_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateInvoiceReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Generate V1 Billing Invoices Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/invoices":{"get":{"tags":["billing-invoices"],"summary":"List Invoices","operationId":"list_invoices_v1_billing_invoices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Invoices V1 Billing Invoices Get"}}}}}}},"/v1/billing/invoices/{inv_id}.html":{"get":{"tags":["billing-invoices"],"summary":"Get Invoice Html","operationId":"get_invoice_html_v1_billing_invoices__inv_id__html_get","parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/invoices/{inv_id}.pdf":{"get":{"tags":["billing-invoices"],"summary":"Get Invoice Pdf","operationId":"get_invoice_pdf_v1_billing_invoices__inv_id__pdf_get","parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/referrals/code":{"get":{"tags":["referrals"],"summary":"Get Code","operationId":"get_code_v1_referrals_code_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Code V1 Referrals Code Get"}}}}}},"put":{"tags":["referrals"],"summary":"Update Code","operationId":"update_code_v1_referrals_code_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update Code V1 Referrals Code Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/referrals/code/regenerate":{"post":{"tags":["referrals"],"summary":"Regenerate","operationId":"regenerate_v1_referrals_code_regenerate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Regenerate V1 Referrals Code Regenerate Post"}}}}}}},"/v1/referrals/credits":{"get":{"tags":["referrals"],"summary":"Credits","operationId":"credits_v1_referrals_credits_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Credits V1 Referrals Credits Get"}}}}}}},"/v1/customer-webhooks/events":{"get":{"tags":["customer-webhooks"],"summary":"Supported Events","operationId":"supported_events_v1_customer_webhooks_events_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Supported Events V1 Customer Webhooks Events Get"}}}}}}},"/v1/customer-webhooks":{"get":{"tags":["customer-webhooks"],"summary":"List Subs","operationId":"list_subs_v1_customer_webhooks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Subs V1 Customer Webhooks Get"}}}}}},"post":{"tags":["customer-webhooks"],"summary":"Create","operationId":"create_v1_customer_webhooks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create V1 Customer Webhooks Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/customer-webhooks/{wh_id}":{"put":{"tags":["customer-webhooks"],"summary":"Update","operationId":"update_v1_customer_webhooks__wh_id__put","parameters":[{"name":"wh_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Wh Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update V1 Customer Webhooks  Wh Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["customer-webhooks"],"summary":"Disable","operationId":"disable_v1_customer_webhooks__wh_id__delete","parameters":[{"name":"wh_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Wh Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Disable V1 Customer Webhooks  Wh Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/customer-webhooks/{wh_id}/deliveries":{"get":{"tags":["customer-webhooks"],"summary":"Deliveries","operationId":"deliveries_v1_customer_webhooks__wh_id__deliveries_get","parameters":[{"name":"wh_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Wh Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Deliveries V1 Customer Webhooks  Wh Id  Deliveries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/customer-webhooks/{wh_id}/test":{"post":{"tags":["customer-webhooks"],"summary":"Send Test","operationId":"send_test_v1_customer_webhooks__wh_id__test_post","parameters":[{"name":"wh_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Wh Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Send Test V1 Customer Webhooks  Wh Id  Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/roadmap/{item_id}":{"put":{"tags":["roadmap-admin"],"summary":"Admin Update","operationId":"admin_update_v1_admin_roadmap__item_id__put","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"internal_notes","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Internal Notes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Update V1 Admin Roadmap  Item Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/safebase/config":{"get":{"tags":["safebase"],"summary":"Get Config","operationId":"get_config_v1_safebase_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Config V1 Safebase Config Get"}}}}}},"put":{"tags":["safebase"],"summary":"Save Config","operationId":"save_config_v1_safebase_config_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SafebaseConfig"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Save Config V1 Safebase Config Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/servicenow/incident":{"post":{"tags":["servicenow"],"summary":"Sn Create Incident","operationId":"sn_create_incident_v1_integrations_servicenow_incident_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SNIncidentCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sn Create Incident V1 Integrations Servicenow Incident Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/servicenow/incidents":{"get":{"tags":["servicenow"],"summary":"Sn List","operationId":"sn_list_v1_integrations_servicenow_incidents_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sn List V1 Integrations Servicenow Incidents Get"}}}}}}},"/v1/integrations/linear/issue":{"post":{"tags":["linear"],"summary":"Linear Create Issue","operationId":"linear_create_issue_v1_integrations_linear_issue_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinearIssueCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Linear Create Issue V1 Integrations Linear Issue Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/pagerduty/ack":{"post":{"tags":["pagerduty"],"summary":"Pd Ack","operationId":"pd_ack_v1_integrations_pagerduty_ack_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PDAckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Pd Ack V1 Integrations Pagerduty Ack Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/signup":{"post":{"tags":["public-signup"],"summary":"Public Signup","operationId":"public_signup_v1_public_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/integrations":{"get":{"tags":["public-meta"],"summary":"Integrations","operationId":"integrations_v1_public_integrations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Integrations V1 Public Integrations Get"}}}}}}},"/v1/public/vendor-library":{"get":{"tags":["public-meta"],"summary":"Vendor Library","operationId":"vendor_library_v1_public_vendor_library_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Vendor Library V1 Public Vendor Library Get"}}}}}}},"/v1/public/frameworks":{"get":{"tags":["public-meta"],"summary":"Frameworks Public","operationId":"frameworks_public_v1_public_frameworks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Frameworks Public V1 Public Frameworks Get"}}}}}}},"/v1/public/demo-request":{"post":{"tags":["public-meta"],"summary":"Demo Request","operationId":"demo_request_v1_public_demo_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Demo Request V1 Public Demo Request Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/public/trust/{slug}":{"get":{"tags":["trust-public"],"summary":"Public Trust Page","description":"Resolve slug → public-safe trust-center payload. No auth.","operationId":"public_trust_page_public_trust__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Trust Page Public Trust  Slug  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/public/trust/{slug}/request":{"post":{"tags":["trust-public"],"summary":"Public Trust Submit Request","description":"Visitor-submitted request for gated doc / DSAR.","operationId":"public_trust_submit_request_public_trust__slug__request_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Trust Submit Request Public Trust  Slug  Request Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auditor/{token}/summary":{"get":{"tags":["auditor"],"summary":"Auditor Summary","operationId":"auditor_summary_auditor__token__summary_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 Auditor Summary Auditor  Token  Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auditor/{token}/risks":{"get":{"tags":["auditor"],"summary":"Auditor Risks","operationId":"auditor_risks_auditor__token__risks_get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Auditor Risks Auditor  Token  Risks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auditor/{token}/policies":{"get":{"tags":["auditor"],"summary":"Auditor Policies","description":"Auditor view of policies — all statuses (draft/published/archived)\nso the auditor can see the full lifecycle, not just published.","operationId":"auditor_policies_auditor__token__policies_get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Auditor Policies Auditor  Token  Policies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/public/trust/{slug}/policies":{"get":{"tags":["trust-public"],"summary":"Public Trust Policies","description":"Visitor-facing list — only PUBLISHED policies. Returns name +\ncategory + version + published_at; NOT the full content_md.","operationId":"public_trust_policies_public_trust__slug__policies_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Public Trust Policies Public Trust  Slug  Policies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auditor/{token}/vendors":{"get":{"tags":["auditor"],"summary":"Auditor Vendors","operationId":"auditor_vendors_auditor__token__vendors_get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Auditor Vendors Auditor  Token  Vendors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/csrf/token":{"get":{"tags":["security"],"summary":"Csrf Token","description":"Issue a fresh CSRF token via Set-Cookie + JSON body.\n\nThe frontend reads the cookie value (via `document.cookie`) and\nechoes it in the `X-CSRF-Token` header on every state-changing\nrequest. CSRFMiddleware (when wired) enforces double-submit.\n\nBearer/JWT and ApiKey flows skip CSRF — only cookie-authenticated\nsessions need it. Tokens rotate on every fetch so the SPA\nrefreshes per session.","operationId":"csrf_token_v1_csrf_token_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/status":{"get":{"tags":["status"],"summary":"Public Status","description":"Aggregate status across all backend services. Powers the public\n/status page + customer trust dashboards.\n\nReturns one row per service with (service, status, latency_ms).\nMissing/timeouted services are reported as `down` so the page is\nalways honest, never optimistic.","operationId":"public_status_v1_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Status V1 Status Get"}}}}}}},"/v1/billing/stripe/webhook":{"post":{"tags":["billing"],"summary":"Stripe Webhook","description":"Accept Stripe events. Verifies the `Stripe-Signature` header\nagainst `STRIPE_WEBHOOK_SECRET` (HMAC-SHA256 over the timestamped\npayload — same scheme Stripe documents).\n\nOn `invoice.paid`, credits the customer's wallet by\n`amount_paid / 100` USD. On `customer.subscription.deleted`, marks\nthe tenant suspended.\n\nPublic endpoint — Stripe POSTs without auth headers but the\nsignature gates trust.","operationId":"stripe_webhook_v1_billing_stripe_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stripe Webhook V1 Billing Stripe Webhook Post"}}}}}}},"/v1/public/status":{"get":{"tags":["status"],"summary":"Public Status","operationId":"public_status_v1_public_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Status V1 Public Status Get"}}}}}}},"/public/v1/billing/stripe/webhook":{"post":{"tags":["billing-public"],"summary":"Stripe Webhook","operationId":"stripe_webhook_public_v1_billing_stripe_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stripe Webhook Public V1 Billing Stripe Webhook Post"}}}}}}},"/v1/public/invitation/inspect":{"get":{"tags":["invitations-public"],"summary":"Inspect","operationId":"inspect_v1_public_invitation_inspect_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Inspect V1 Public Invitation Inspect Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/invitation/accept":{"post":{"tags":["invitations-public"],"summary":"Accept","operationId":"accept_v1_public_invitation_accept_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteAccept"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Accept V1 Public Invitation Accept Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/changelog.atom":{"get":{"tags":["public-feed"],"summary":"Changelog Atom","operationId":"changelog_atom_v1_public_changelog_atom_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/public/changelog.rss":{"get":{"tags":["public-feed"],"summary":"Changelog Rss","operationId":"changelog_rss_v1_public_changelog_rss_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/public/incidents":{"get":{"tags":["status"],"summary":"List Incidents","operationId":"list_incidents_v1_public_incidents_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Incidents V1 Public Incidents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/incidents":{"post":{"tags":["status","admin"],"summary":"Announce Incident","operationId":"announce_incident_v1_admin_incidents_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncidentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Announce Incident V1 Admin Incidents Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/incidents/{inc_id}/updates":{"post":{"tags":["status","admin"],"summary":"Post Update","operationId":"post_update_v1_admin_incidents__inc_id__updates_post","parameters":[{"name":"inc_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inc Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncidentUpdate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Update V1 Admin Incidents  Inc Id  Updates Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/aws-marketplace/subscribe":{"post":{"tags":["aws-marketplace"],"summary":"Subscribe","description":"Inbound from AWS Marketplace SNS topic on subscription events.","operationId":"subscribe_v1_public_aws_marketplace_subscribe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Subscribe V1 Public Aws Marketplace Subscribe Post"}}}}}}},"/v1/public/aws-marketplace/entitlement":{"get":{"tags":["aws-marketplace"],"summary":"Entitlement","operationId":"entitlement_v1_public_aws_marketplace_entitlement_get","parameters":[{"name":"customer_identifier","in":"query","required":true,"schema":{"type":"string","title":"Customer Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Entitlement V1 Public Aws Marketplace Entitlement Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/aws-marketplace/meter":{"post":{"tags":["aws-marketplace"],"summary":"Meter","description":"Cron-style endpoint. Hourly the daemon computes per-customer\nAI overage in arbitrary 'sentinel-call' units and POSTs them here.\n\nBody: {\"customer_identifier\":\"...\", \"dimension\":\"sentinel_calls\", \"quantity\":N}","operationId":"meter_v1_public_aws_marketplace_meter_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Meter V1 Public Aws Marketplace Meter Post"}}}}}}},"/v1/public/help-articles":{"get":{"tags":["help"],"summary":"List Public","operationId":"list_public_v1_public_help_articles_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Category"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Q"}},{"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 List Public V1 Public Help Articles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/help-articles/{slug}":{"get":{"tags":["help"],"summary":"Get Public","operationId":"get_public_v1_public_help_articles__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Public V1 Public Help Articles  Slug  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/auditor/{token}/summary":{"get":{"tags":["auditor-portal-public"],"summary":"Public Summary","operationId":"public_summary_v1_public_auditor__token__summary_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 Public Summary V1 Public Auditor  Token  Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/auditor/{token}/policies":{"get":{"tags":["auditor-portal-public"],"summary":"Public Policies","operationId":"public_policies_v1_public_auditor__token__policies_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 Public Policies V1 Public Auditor  Token  Policies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/auditor/{token}/findings":{"get":{"tags":["auditor-portal-public"],"summary":"Public Findings","operationId":"public_findings_v1_public_auditor__token__findings_get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Findings V1 Public Auditor  Token  Findings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/webhooks/sign":{"post":{"tags":["webhook-test"],"summary":"Sign","operationId":"sign_v1_public_webhooks_sign_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sign V1 Public Webhooks Sign Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/webhooks/verify":{"post":{"tags":["webhook-test"],"summary":"Verify","operationId":"verify_v1_public_webhooks_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Verify V1 Public Webhooks Verify Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/saml/acs/{tenant_id}":{"post":{"tags":["saml-acs"],"summary":"Acs Post","operationId":"acs_post_v1_public_saml_acs__tenant_id__post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_acs_post_v1_public_saml_acs__tenant_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/saml/sso-init/{tenant_id}":{"get":{"tags":["saml-acs"],"summary":"Sso Init","description":"Send user to IdP SSO URL for SP-initiated SSO.","operationId":"sso_init_v1_public_saml_sso_init__tenant_id__get","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"RelayState","in":"query","required":false,"schema":{"type":"string","default":"/dashboard","title":"Relaystate"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/slack/install-url":{"get":{"tags":["integration-slack-public"],"summary":"Public Install Url","operationId":"public_install_url_v1_public_slack_install_url_get","parameters":[{"name":"tenant_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"return_to","in":"query","required":false,"schema":{"type":"string","default":"/settings/integrations","title":"Return To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Install Url V1 Public Slack Install Url Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/slack/oauth/callback":{"get":{"tags":["integration-slack-public"],"summary":"Callback","operationId":"callback_v1_public_slack_oauth_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","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"}}}}}}},"/v1/public/dsar/submit/{tenant_id}":{"post":{"tags":["dsar-public"],"summary":"Public Submit","operationId":"public_submit_v1_public_dsar_submit__tenant_id__post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DSARSubmit"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Submit V1 Public Dsar Submit  Tenant Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/dsar/status/{token}":{"get":{"tags":["dsar-public"],"summary":"Public Status","operationId":"public_status_v1_public_dsar_status__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 Public Status V1 Public Dsar Status  Token  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/phish/click/{token}":{"get":{"tags":["phishing-public"],"summary":"Click","operationId":"click_v1_public_phish_click__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/phish/report/{token}":{"get":{"tags":["phishing-public"],"summary":"Report Phishing","operationId":"report_phishing_v1_public_phish_report__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/tprm/form/{token}":{"get":{"tags":["tprm-public"],"summary":"Public Form","operationId":"public_form_v1_public_tprm_form__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 Public Form V1 Public Tprm Form  Token  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/tprm/submit/{token}":{"post":{"tags":["tprm-public"],"summary":"Public Submit","operationId":"public_submit_v1_public_tprm_submit__token__post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TPRMSubmit"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Public Submit V1 Public Tprm Submit  Token  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/regions":{"get":{"tags":["regions"],"summary":"List Regions","operationId":"list_regions_v1_public_regions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Regions V1 Public Regions Get"}}}}}}},"/v1/public/github-app/install-url":{"get":{"tags":["integration-github-app"],"summary":"Install Url","operationId":"install_url_v1_public_github_app_install_url_get","parameters":[{"name":"tenant_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}},{"name":"return_to","in":"query","required":false,"schema":{"type":"string","default":"/settings/integrations","title":"Return To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Install Url V1 Public Github App Install Url Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/github-app/setup":{"get":{"tags":["integration-github-app"],"summary":"Setup Callback","description":"Called by GitHub after install/uninstall. Persists installation_id.","operationId":"setup_callback_v1_public_github_app_setup_get","parameters":[{"name":"installation_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Installation Id"}},{"name":"setup_action","in":"query","required":false,"schema":{"type":"string","default":"","title":"Setup Action"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/github-app/webhook":{"post":{"tags":["integration-github-app"],"summary":"Webhook","operationId":"webhook_v1_public_github_app_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Webhook V1 Public Github App Webhook Post"}}}}}}},"/v1/public/rfp-pack":{"get":{"tags":["rfp-pack"],"summary":"Get Rfp Pack","operationId":"get_rfp_pack_v1_public_rfp_pack_get","parameters":[{"name":"section","in":"query","required":false,"schema":{"type":"string","default":"","title":"Section"}},{"name":"framework","in":"query","required":false,"schema":{"type":"string","default":"","title":"Framework"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Rfp Pack V1 Public Rfp Pack Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/rfp-pack.csv":{"get":{"tags":["rfp-pack"],"summary":"Get Rfp Pack Csv","operationId":"get_rfp_pack_csv_v1_public_rfp_pack_csv_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v1/public/rfp-pack.json":{"get":{"tags":["rfp-pack"],"summary":"Get Rfp Pack Json","operationId":"get_rfp_pack_json_v1_public_rfp_pack_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/public/v1/billing/razorpay/webhook":{"post":{"tags":["billing-razorpay-public"],"summary":"Webhook","operationId":"webhook_public_v1_billing_razorpay_webhook_post","parameters":[{"name":"x-razorpay-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Razorpay-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Webhook Public V1 Billing Razorpay Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/trust-center":{"get":{"tags":["trust-center"],"summary":"Overview","operationId":"overview_v1_public_trust_center_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Overview V1 Public Trust Center Get"}}}}}}},"/v1/public/trust-center/sub-processors":{"get":{"tags":["trust-center"],"summary":"Sub Processors","operationId":"sub_processors_v1_public_trust_center_sub_processors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sub Processors V1 Public Trust Center Sub Processors Get"}}}}}}},"/v1/public/trust-center/badges":{"get":{"tags":["trust-center"],"summary":"Badges","operationId":"badges_v1_public_trust_center_badges_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Badges V1 Public Trust Center Badges Get"}}}}}}},"/v1/public/trust-center/access-request":{"post":{"tags":["trust-center"],"summary":"Access Request","operationId":"access_request_v1_public_trust_center_access_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Access Request V1 Public Trust Center Access Request Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/referrals/track":{"post":{"tags":["referrals-public"],"summary":"Track Click","operationId":"track_click_v1_public_referrals_track_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackClickReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Track Click V1 Public Referrals Track Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/referrals/convert":{"post":{"tags":["referrals-public"],"summary":"Convert","operationId":"convert_v1_public_referrals_convert_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Convert V1 Public Referrals Convert Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/referrals/leaderboard":{"get":{"tags":["referrals-public"],"summary":"Leaderboard","operationId":"leaderboard_v1_public_referrals_leaderboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Leaderboard V1 Public Referrals Leaderboard Get"}}}}}}},"/v1/public/aws-marketplace/register":{"post":{"tags":["aws-marketplace"],"summary":"Aws Register","operationId":"aws_register_v1_public_aws_marketplace_register_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_aws_register_v1_public_aws_marketplace_register_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/aws-marketplace/unsubscribe":{"post":{"tags":["aws-marketplace"],"summary":"Aws Unsubscribe","operationId":"aws_unsubscribe_v1_public_aws_marketplace_unsubscribe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Aws Unsubscribe V1 Public Aws Marketplace Unsubscribe Post"}}}}}}},"/v1/public/bug-bounty":{"get":{"tags":["bug-bounty"],"summary":"Overview","operationId":"overview_v1_public_bug_bounty_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Overview V1 Public Bug Bounty Get"}}}}}}},"/v1/public/bug-bounty/submit":{"post":{"tags":["bug-bounty"],"summary":"Submit","operationId":"submit_v1_public_bug_bounty_submit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitReport"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Submit V1 Public Bug Bounty Submit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/bug-bounty/hall-of-fame":{"get":{"tags":["bug-bounty"],"summary":"Hall Of Fame","operationId":"hall_of_fame_v1_public_bug_bounty_hall_of_fame_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Hall Of Fame V1 Public Bug Bounty Hall Of Fame Get"}}}}}}},"/v1/public/bug-bounty/disclosed":{"get":{"tags":["bug-bounty"],"summary":"Disclosed","operationId":"disclosed_v1_public_bug_bounty_disclosed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Disclosed V1 Public Bug Bounty Disclosed Get"}}}}}}},"/v1/public/roadmap":{"get":{"tags":["roadmap"],"summary":"List Items","operationId":"list_items_v1_public_roadmap_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Items V1 Public Roadmap Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/roadmap/submit":{"post":{"tags":["roadmap"],"summary":"Submit","operationId":"submit_v1_public_roadmap_submit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitItem"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Submit V1 Public Roadmap Submit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/roadmap/{item_id}/vote":{"post":{"tags":["roadmap"],"summary":"Vote","operationId":"vote_v1_public_roadmap__item_id__vote_post","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Vote V1 Public Roadmap  Item Id  Vote Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/safebase/{slug}":{"get":{"tags":["safebase-public"],"summary":"Landing","operationId":"landing_v1_public_safebase__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Landing V1 Public Safebase  Slug  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/safebase/{slug}/ask":{"post":{"tags":["safebase-public"],"summary":"Ask","operationId":"ask_v1_public_safebase__slug__ask_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskQuestion"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ask V1 Public Safebase  Slug  Ask Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/safebase/{slug}/nda-accept":{"post":{"tags":["safebase-public"],"summary":"Nda Accept","operationId":"nda_accept_v1_public_safebase__slug__nda_accept_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NDAAccept"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Nda Accept V1 Public Safebase  Slug  Nda Accept Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/comparison":{"get":{"tags":["comparison"],"summary":"Comparison","operationId":"comparison_v1_public_comparison_get","parameters":[{"name":"competitor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Competitor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Comparison V1 Public Comparison Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/roi-calculator":{"post":{"tags":["roi"],"summary":"Roi","operationId":"roi_v1_public_roi_calculator_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ROIRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Roi V1 Public Roi Calculator Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/roi-calculator/example":{"get":{"tags":["roi"],"summary":"Roi Example","operationId":"roi_example_v1_public_roi_calculator_example_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Roi Example V1 Public Roi Calculator Example Get"}}}}}}},"/v1/public/free-trial":{"post":{"tags":["free-trial"],"summary":"Free Trial","operationId":"free_trial_v1_public_free_trial_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeTrialRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Free Trial V1 Public Free Trial Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/docs":{"get":{"tags":["docs"],"summary":"List Docs","operationId":"list_docs_v1_public_docs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Docs V1 Public Docs Get"}}}}}}},"/v1/public/docs/{slug}":{"get":{"tags":["docs"],"summary":"Get Doc","operationId":"get_doc_v1_public_docs__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/docs/{slug}/json":{"get":{"tags":["docs"],"summary":"Get Doc Json","operationId":"get_doc_json_v1_public_docs__slug__json_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Doc Json V1 Public Docs  Slug  Json Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/slack/slash":{"post":{"tags":["slack-slash"],"summary":"Slack Slash","operationId":"slack_slash_v1_public_slack_slash_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_slack_slash_v1_public_slack_slash_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Slack Slash V1 Public Slack Slash Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/teams/manifest":{"get":{"tags":["teams"],"summary":"Teams Manifest","operationId":"teams_manifest_v1_public_teams_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Teams Manifest V1 Public Teams Manifest Get"}}}}}}},"/v1/public/teams/webhook":{"post":{"tags":["teams"],"summary":"Teams Webhook","operationId":"teams_webhook_v1_public_teams_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Teams Webhook V1 Public Teams Webhook Post"}}}}}}},"/scim/v2/Users":{"get":{"summary":"List Users","operationId":"list_users_scim_v2_Users_get","parameters":[{"name":"filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter"}},{"name":"startIndex","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Startindex"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Count"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Users Scim V2 Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create User","operationId":"create_user_scim_v2_Users_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create User Scim V2 Users Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scim/v2/Users/{user_id}":{"get":{"summary":"Get User","operationId":"get_user_scim_v2_Users__user_id__get","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":{"type":"object","additionalProperties":true,"title":"Response Get User Scim V2 Users  User Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Patch User","description":"Apply SCIM PatchOp Operations. Supports add/replace/remove on\n`userName`, `displayName`, `active`, `externalId`.","operationId":"patch_user_scim_v2_Users__user_id__patch","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch User Scim V2 Users  User Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete User","description":"SCIM DELETE = deactivate. Per spec, providers MAY hard-delete or\nsoft-deactivate; we soft-deactivate so audit references stay intact.","operationId":"delete_user_scim_v2_Users__user_id__delete","parameters":[{"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"}}}}}}},"/scim/v2/Groups":{"get":{"summary":"List Groups","operationId":"list_groups_scim_v2_Groups_get","parameters":[{"name":"filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter"}},{"name":"startIndex","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Startindex"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Count"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Groups Scim V2 Groups Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create Group","operationId":"create_group_scim_v2_Groups_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Group Scim V2 Groups Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scim/v2/Groups/{group_id}":{"get":{"summary":"Get Group","operationId":"get_group_scim_v2_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":{"type":"object","additionalProperties":true,"title":"Response Get Group Scim V2 Groups  Group Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Patch Group","description":"Supports the most common Okta/Azure operations: add/remove members,\nrename, set externalId.","operationId":"patch_group_scim_v2_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":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Group Scim V2 Groups  Group Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Group","operationId":"delete_group_scim_v2_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"}}}}}}},"/scim/v2/ServiceProviderConfig":{"get":{"summary":"Service Provider Config","operationId":"service_provider_config_scim_v2_ServiceProviderConfig_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Service Provider Config Scim V2 Serviceproviderconfig Get"}}}}}}},"/scim/v2/ResourceTypes":{"get":{"summary":"Resource Types","operationId":"resource_types_scim_v2_ResourceTypes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Resource Types Scim V2 Resourcetypes Get"}}}}}}},"/scim/v2/Schemas":{"get":{"summary":"Schemas","operationId":"schemas_scim_v2_Schemas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Schemas Scim V2 Schemas Get"}}}}}}},"/saml/metadata":{"get":{"summary":"Sp Metadata","description":"Return the SP metadata XML. IdPs (Okta / Azure AD / Google\nWorkspace) accept this as a one-shot SSO configuration import.","operationId":"sp_metadata_saml_metadata_get","responses":{"200":{"description":"Successful Response"}}}},"/saml/acs/{tenant_slug}":{"post":{"summary":"Saml Acs","operationId":"saml_acs_saml_acs__tenant_slug__post","parameters":[{"name":"tenant_slug","in":"path","required":true,"schema":{"type":"string","title":"Tenant Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/saml/idp-config":{"get":{"summary":"Get Idp Config","operationId":"get_idp_config_v1_saml_idp_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Idp Config V1 Saml Idp Config Get"}}}}}},"put":{"summary":"Save Idp Config","description":"Persist the IdP's metadata (entity_id, sso_url, x509_cert) into\ntenant_settings so the ACS can fetch + verify against it once\nreal signature validation lands.","operationId":"save_idp_config_v1_saml_idp_config_put","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Save Idp Config V1 Saml Idp Config Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"APIKeyCreate":{"properties":{"name":{"type":"string","maxLength":80,"minLength":2,"title":"Name"},"scopes":{"items":{"type":"string","enum":["read","write","admin"]},"type":"array","title":"Scopes"},"expires_in_days":{"anyOf":[{"type":"integer","maximum":3650.0,"minimum":1.0},{"type":"null"}],"title":"Expires In Days"}},"type":"object","required":["name"],"title":"APIKeyCreate"},"AccessRequest":{"properties":{"requester_email":{"type":"string","format":"email","title":"Requester Email"},"requester_name":{"type":"string","maxLength":120,"minLength":1,"title":"Requester Name"},"company":{"type":"string","maxLength":200,"minLength":1,"title":"Company"},"documents":{"items":{"type":"string"},"type":"array","maxItems":20,"minItems":1,"title":"Documents"},"nda_accepted":{"type":"boolean","title":"Nda Accepted"}},"type":"object","required":["requester_email","requester_name","company","documents","nda_accepted"],"title":"AccessRequest"},"ArticleUpsert":{"properties":{"slug":{"type":"string","maxLength":120,"minLength":2,"pattern":"^[a-z0-9-]+$","title":"Slug"},"title":{"type":"string","maxLength":200,"minLength":4,"title":"Title"},"category":{"type":"string","maxLength":64,"title":"Category","default":"general"},"body_md":{"type":"string","maxLength":80000,"minLength":20,"title":"Body Md"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"published":{"type":"boolean","title":"Published","default":true}},"type":"object","required":["slug","title","body_md"],"title":"ArticleUpsert"},"AskQuestion":{"properties":{"asker_email":{"type":"string","maxLength":320,"minLength":3,"title":"Asker Email"},"asker_company":{"type":"string","maxLength":200,"title":"Asker Company","default":""},"question":{"type":"string","maxLength":2000,"minLength":8,"title":"Question"}},"type":"object","required":["asker_email","question"],"title":"AskQuestion"},"AuditorTokenIssue":{"properties":{"auditor_email":{"type":"string","maxLength":320,"minLength":4,"title":"Auditor Email"},"auditor_firm":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Auditor Firm"},"expires_in_days":{"type":"integer","maximum":180.0,"minimum":1.0,"title":"Expires In Days","default":30}},"type":"object","required":["auditor_email"],"title":"AuditorTokenIssue"},"AutoFixRequest":{"properties":{"finding_id":{"type":"string","format":"uuid","title":"Finding Id"},"file_path":{"type":"string","title":"File Path"},"fix_diff":{"type":"string","maxLength":64000,"minLength":1,"title":"Fix Diff"},"pr_title":{"type":"string","maxLength":140,"minLength":2,"title":"Pr Title"},"pr_body":{"type":"string","maxLength":8000,"title":"Pr Body","default":""}},"type":"object","required":["finding_id","file_path","fix_diff","pr_title"],"title":"AutoFixRequest"},"Body_acs_post_v1_public_saml_acs__tenant_id__post":{"properties":{"SAMLResponse":{"type":"string","title":"Samlresponse"},"RelayState":{"type":"string","title":"Relaystate","default":""}},"type":"object","required":["SAMLResponse"],"title":"Body_acs_post_v1_public_saml_acs__tenant_id__post"},"Body_aws_register_v1_public_aws_marketplace_register_post":{"properties":{"x_amzn_marketplace_token":{"type":"string","title":"X Amzn Marketplace Token","default":""}},"type":"object","title":"Body_aws_register_v1_public_aws_marketplace_register_post"},"Body_slack_slash_v1_public_slack_slash_post":{"properties":{"token":{"type":"string","title":"Token","default":""},"team_id":{"type":"string","title":"Team Id","default":""},"team_domain":{"type":"string","title":"Team Domain","default":""},"channel_id":{"type":"string","title":"Channel Id","default":""},"channel_name":{"type":"string","title":"Channel Name","default":""},"user_id":{"type":"string","title":"User Id","default":""},"user_name":{"type":"string","title":"User Name","default":""},"command":{"type":"string","title":"Command","default":""},"text":{"type":"string","title":"Text","default":""},"response_url":{"type":"string","title":"Response Url","default":""}},"type":"object","title":"Body_slack_slash_v1_public_slack_slash_post"},"CheckoutRequest":{"properties":{"plan_tier":{"type":"string","enum":["starter","growth","business"],"title":"Plan Tier"},"billing_period":{"type":"string","enum":["monthly","yearly"],"title":"Billing Period"},"success_url":{"type":"string","title":"Success Url","default":"https://app.compliancly.ai/?billing=success"},"cancel_url":{"type":"string","title":"Cancel Url","default":"https://compliancly.ai/#pricing"}},"type":"object","required":["plan_tier","billing_period"],"title":"CheckoutRequest"},"CodeUpdate":{"properties":{"leaderboard_optin":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Leaderboard Optin"},"display_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Display Name"}},"type":"object","title":"CodeUpdate"},"ConvertReq":{"properties":{"code":{"type":"string","maxLength":32,"minLength":4,"title":"Code"},"new_tenant_id":{"type":"string","maxLength":64,"minLength":8,"title":"New Tenant Id"}},"type":"object","required":["code","new_tenant_id"],"title":"ConvertReq"},"DSARSubmit":{"properties":{"request_type":{"type":"string","enum":["access","correction","erasure","portability","restriction","objection","withdraw_consent"],"title":"Request Type"},"subject_email":{"type":"string","format":"email","title":"Subject Email"},"subject_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Subject Name"},"jurisdiction":{"type":"string","maxLength":32,"title":"Jurisdiction","default":"GDPR"},"details":{"type":"string","maxLength":4000,"title":"Details","default":""}},"type":"object","required":["request_type","subject_email"],"title":"DSARSubmit"},"DSARTransition":{"properties":{"to_state":{"type":"string","enum":["verifying","fulfilling","fulfilled","rejected"],"title":"To State"},"note":{"type":"string","maxLength":2000,"title":"Note","default":""},"rejection_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rejection Reason"}},"type":"object","required":["to_state"],"title":"DSARTransition"},"DemoRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"company_name":{"type":"string","maxLength":80,"minLength":2,"title":"Company Name"},"role":{"type":"string","maxLength":80,"minLength":2,"title":"Role"},"company_size":{"type":"string","maxLength":24,"title":"Company Size"},"needs":{"type":"string","maxLength":2000,"title":"Needs","default":""},"accept_terms":{"type":"boolean","title":"Accept Terms"}},"type":"object","required":["email","company_name","role","company_size","accept_terms"],"title":"DemoRequest"},"DeviceRegistration":{"properties":{"platform":{"type":"string","enum":["ios","android","web"],"title":"Platform"},"os_version":{"type":"string","maxLength":64,"title":"Os Version","default":""},"app_version":{"type":"string","maxLength":32,"title":"App Version","default":""},"push_token":{"type":"string","maxLength":512,"minLength":8,"title":"Push Token"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id"}},"type":"object","required":["platform","push_token"],"title":"DeviceRegistration"},"EnrolRequest":{"properties":{"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"recipients":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":2000,"minItems":1,"title":"Recipients"}},"type":"object","required":["campaign_id","recipients"],"title":"EnrolRequest"},"FreeTrialRequest":{"properties":{"email":{"type":"string","maxLength":320,"minLength":3,"title":"Email"},"company_name":{"type":"string","maxLength":200,"minLength":2,"title":"Company Name"},"full_name":{"type":"string","maxLength":200,"title":"Full Name","default":""},"team_size":{"type":"string","enum":["1-10","11-50","51-200","201-1000","1000+"],"title":"Team Size","default":"1-10"},"use_case":{"type":"string","maxLength":500,"title":"Use Case","default":""},"referral_code":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Referral Code"},"utm_source":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Utm Source"},"utm_campaign":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Utm Campaign"},"utm_medium":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Utm Medium"}},"type":"object","required":["email","company_name"],"title":"FreeTrialRequest"},"GenerateInvoiceReq":{"properties":{"plan":{"type":"string","maxLength":64,"minLength":1,"title":"Plan"},"period_start":{"type":"string","title":"Period Start"},"period_end":{"type":"string","title":"Period End"},"amount":{"type":"number","maximum":10000000.0,"exclusiveMinimum":0.0,"title":"Amount"},"currency":{"type":"string","enum":["INR","USD","EUR"],"title":"Currency","default":"INR"},"customer_name":{"type":"string","maxLength":200,"minLength":1,"title":"Customer Name"},"customer_email":{"type":"string","maxLength":320,"minLength":3,"title":"Customer Email"},"customer_address":{"type":"string","maxLength":500,"title":"Customer Address","default":""},"customer_gstin":{"type":"string","maxLength":15,"title":"Customer Gstin","default":""},"customer_country":{"type":"string","maxLength":2,"minLength":2,"title":"Customer Country","default":"IN"},"customer_state_code":{"type":"string","maxLength":2,"title":"Customer State Code","default":""}},"type":"object","required":["plan","period_start","period_end","amount","customer_name","customer_email"],"title":"GenerateInvoiceReq"},"GitHubBindRequest":{"properties":{"repo_full_name":{"type":"string","maxLength":120,"minLength":3,"pattern":"^[\\w.-]+/[\\w.-]+$","title":"Repo Full Name"},"default_branch":{"type":"string","title":"Default Branch","default":"main"},"token":{"type":"string","maxLength":400,"minLength":10,"title":"Token"}},"type":"object","required":["repo_full_name","token"],"title":"GitHubBindRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"service":{"type":"string","title":"Service"},"version":{"type":"string","title":"Version"},"db_ok":{"type":"boolean","title":"Db Ok"}},"type":"object","required":["service","version","db_ok"],"title":"HealthResponse"},"IdPConfigure":{"properties":{"idp_entity_id":{"type":"string","maxLength":400,"minLength":4,"title":"Idp Entity Id"},"idp_sso_url":{"type":"string","maxLength":600,"minLength":8,"title":"Idp Sso Url"},"idp_cert_pem":{"type":"string","maxLength":8000,"minLength":50,"title":"Idp Cert Pem"},"attribute_map":{"additionalProperties":{"type":"string"},"type":"object","title":"Attribute Map"}},"type":"object","required":["idp_entity_id","idp_sso_url","idp_cert_pem"],"title":"IdPConfigure"},"IncidentCreate":{"properties":{"title":{"type":"string","maxLength":200,"minLength":4,"title":"Title"},"body_md":{"type":"string","maxLength":8000,"title":"Body Md","default":""},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved"],"title":"Status","default":"investigating"},"impact":{"type":"string","enum":["none","minor","major","critical"],"title":"Impact","default":"minor"},"components":{"items":{"type":"string"},"type":"array","title":"Components"}},"type":"object","required":["title"],"title":"IncidentCreate"},"IncidentUpdate":{"properties":{"status":{"type":"string","enum":["investigating","identified","monitoring","resolved"],"title":"Status"},"body_md":{"type":"string","maxLength":4000,"minLength":2,"title":"Body Md"}},"type":"object","required":["status","body_md"],"title":"IncidentUpdate"},"InvitationCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"type":"string","pattern":"^(super_admin|tenant_admin|pentester|developer|auditor|viewer)$","title":"Role","default":"viewer"},"expires_in_hours":{"type":"integer","maximum":720.0,"minimum":1.0,"title":"Expires In Hours","default":72}},"type":"object","required":["email"],"title":"InvitationCreate"},"InvitationRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"email":{"type":"string","title":"Email"},"role":{"type":"string","title":"Role"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"status":{"$ref":"#/components/schemas/InvitationStatus"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","tenant_id","email","role","expires_at","status","created_at"],"title":"InvitationRead"},"InvitationStatus":{"type":"string","enum":["pending","accepted","revoked","expired"],"title":"InvitationStatus","description":"User invitation status."},"InviteAccept":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"InviteAccept"},"InviteCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"type":"string","enum":["admin","member","read_only","auditor"],"title":"Role","default":"member"},"expires_in_days":{"type":"integer","maximum":90.0,"minimum":1.0,"title":"Expires In Days","default":14}},"type":"object","required":["email"],"title":"InviteCreate"},"LinearIssueCreate":{"properties":{"title":{"type":"string","maxLength":200,"minLength":4,"title":"Title"},"description":{"type":"string","maxLength":20000,"title":"Description","default":""},"priority":{"type":"integer","maximum":4.0,"minimum":0.0,"title":"Priority","default":3},"team_id":{"type":"string","maxLength":64,"minLength":4,"title":"Team Id"},"label_ids":{"items":{"type":"string"},"type":"array","maxItems":20,"title":"Label Ids"}},"type":"object","required":["title","team_id"],"title":"LinearIssueCreate"},"NDAAccept":{"properties":{"acceptor_email":{"type":"string","maxLength":320,"minLength":3,"title":"Acceptor Email"},"acceptor_name":{"type":"string","maxLength":200,"minLength":2,"title":"Acceptor Name"},"acceptor_company":{"type":"string","maxLength":200,"minLength":2,"title":"Acceptor Company"}},"type":"object","required":["acceptor_email","acceptor_name","acceptor_company"],"title":"NDAAccept"},"OffboardWebhook":{"properties":{"source":{"type":"string","enum":["bamboohr","rippling","workday","hibob","generic"],"title":"Source"},"email":{"type":"string","format":"email","title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"termination_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Termination Date"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["source","email"],"title":"OffboardWebhook"},"PDAckRequest":{"properties":{"incident_id":{"type":"string","maxLength":64,"minLength":4,"title":"Incident Id"},"note":{"type":"string","maxLength":500,"title":"Note","default":"Acked via Compliancly"}},"type":"object","required":["incident_id"],"title":"PDAckRequest"},"PlanTier":{"type":"string","enum":["trial","starter","growth","business","enterprise","mssp"],"title":"PlanTier","description":"Subscription plans."},"ROIRequest":{"properties":{"employee_count":{"type":"integer","maximum":100000.0,"minimum":1.0,"title":"Employee Count"},"target_frameworks":{"items":{"type":"string","enum":["SOC2_TYPE2","ISO27001","HIPAA","GDPR","DPDP","PCI_DSS","RBI_CSF"]},"type":"array","maxItems":10,"minItems":1,"title":"Target Frameworks","default":["SOC2_TYPE2"]},"annual_revenue_usd":{"type":"number","maximum":1000000000.0,"minimum":0.0,"title":"Annual Revenue Usd"},"avg_breach_cost_assumption_usd":{"anyOf":[{"type":"number","maximum":100000000.0,"minimum":0.0},{"type":"null"}],"title":"Avg Breach Cost Assumption Usd"},"competitor":{"type":"string","enum":["vanta","drata","sprinto","secureframe","none"],"title":"Competitor","default":"vanta"}},"type":"object","required":["employee_count","annual_revenue_usd"],"title":"ROIRequest"},"RegionUpdate":{"properties":{"region_code":{"type":"string","enum":["ap-south-1","us-east-1","eu-central-1","ap-southeast-1"],"title":"Region Code"}},"type":"object","required":["region_code"],"title":"RegionUpdate"},"SNIncidentCreate":{"properties":{"short_description":{"type":"string","maxLength":160,"minLength":8,"title":"Short Description"},"description":{"type":"string","maxLength":8000,"minLength":20,"title":"Description"},"urgency":{"type":"string","enum":["1","2","3"],"title":"Urgency","default":"3"},"impact":{"type":"string","enum":["1","2","3"],"title":"Impact","default":"3"},"assignment_group":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Assignment Group"},"caller_email":{"anyOf":[{"type":"string","maxLength":320},{"type":"null"}],"title":"Caller Email"}},"type":"object","required":["short_description","description"],"title":"SNIncidentCreate"},"SafebaseConfig":{"properties":{"slug":{"type":"string","maxLength":42,"minLength":2,"title":"Slug"},"public_bio":{"type":"string","maxLength":2000,"title":"Public Bio","default":""},"hero_tagline":{"type":"string","maxLength":200,"title":"Hero Tagline","default":""},"brand_color":{"type":"string","maxLength":20,"title":"Brand Color","default":"#047857"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["slug"],"title":"SafebaseConfig"},"SignRequest":{"properties":{"secret":{"type":"string","maxLength":400,"minLength":4,"title":"Secret"},"body":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Body"},"body_str":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Str"}},"type":"object","required":["secret"],"title":"SignRequest"},"SignupRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"company_name":{"type":"string","maxLength":80,"minLength":2,"title":"Company Name"},"target_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Target Url"},"accept_terms":{"type":"boolean","title":"Accept Terms","description":"Must be true"}},"type":"object","required":["email","company_name","target_url","accept_terms"],"title":"SignupRequest"},"SignupResponse":{"properties":{"email":{"type":"string","title":"Email"},"company_name":{"type":"string","title":"Company Name"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"temp_password":{"type":"string","title":"Temp Password"},"login_url":{"type":"string","title":"Login Url"},"wallet_usd":{"type":"number","title":"Wallet Usd"},"target_url":{"type":"string","title":"Target Url"},"plan":{"type":"string","title":"Plan","default":"trial"},"message":{"type":"string","title":"Message"}},"type":"object","required":["email","company_name","tenant_id","temp_password","login_url","wallet_usd","target_url","message"],"title":"SignupResponse"},"SubmitItem":{"properties":{"title":{"type":"string","maxLength":200,"minLength":8,"title":"Title"},"description":{"type":"string","maxLength":4000,"minLength":20,"title":"Description"},"category":{"type":"string","enum":["general","frameworks","integrations","reporting","ai","platform","mobile","api","dx"],"title":"Category","default":"general"},"submitter_email":{"type":"string","format":"email","title":"Submitter Email"}},"type":"object","required":["title","description","submitter_email"],"title":"SubmitItem"},"SubmitReport":{"properties":{"reporter_email":{"type":"string","format":"email","title":"Reporter Email"},"reporter_name":{"type":"string","maxLength":120,"title":"Reporter Name","default":""},"reporter_handle":{"type":"string","maxLength":64,"title":"Reporter Handle","default":""},"hall_of_fame_optin":{"type":"boolean","title":"Hall Of Fame Optin","default":false},"title":{"type":"string","maxLength":200,"minLength":8,"title":"Title"},"description":{"type":"string","maxLength":20000,"minLength":50,"title":"Description"},"reproduction":{"type":"string","maxLength":20000,"title":"Reproduction","default":""},"cvss_self_assessed":{"type":"string","enum":["critical","high","medium","low","informational"],"title":"Cvss Self Assessed","default":"medium"},"affected_assets":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Affected Assets"}},"type":"object","required":["reporter_email","title","description"],"title":"SubmitReport"},"SubscribeReq":{"properties":{"plan":{"type":"string","enum":["starter","growth","business"],"title":"Plan"},"period":{"type":"string","enum":["monthly","yearly"],"title":"Period","default":"monthly"},"customer_email":{"type":"string","maxLength":320,"minLength":3,"title":"Customer Email"},"customer_name":{"type":"string","maxLength":200,"title":"Customer Name","default":""},"customer_phone":{"type":"string","maxLength":20,"title":"Customer Phone","default":""},"gstin":{"type":"string","maxLength":15,"title":"Gstin","default":""}},"type":"object","required":["plan","customer_email"],"title":"SubscribeReq"},"SubscribeRequest":{"properties":{"kind":{"type":"string","enum":["slack","teams","discord","generic"],"title":"Kind"},"webhook_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Webhook Url"},"events":{"items":{"type":"string"},"type":"array","title":"Events"}},"type":"object","required":["kind","webhook_url"],"title":"SubscribeRequest"},"TPRMSend":{"properties":{"vendor_name":{"type":"string","maxLength":200,"minLength":2,"title":"Vendor Name"},"vendor_email":{"type":"string","format":"email","title":"Vendor Email"},"expires_in_days":{"type":"integer","maximum":180.0,"minimum":1.0,"title":"Expires In Days","default":30},"questions":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Questions"}},"type":"object","required":["vendor_name","vendor_email"],"title":"TPRMSend"},"TPRMSubmit":{"properties":{"responses":{"additionalProperties":true,"type":"object","title":"Responses"}},"type":"object","required":["responses"],"title":"TPRMSubmit"},"TenantCreate":{"properties":{"name":{"type":"string","maxLength":200,"minLength":2,"title":"Name"},"slug":{"type":"string","maxLength":64,"minLength":2,"pattern":"^[a-z0-9][a-z0-9-]*[a-z0-9]$","title":"Slug"},"plan":{"$ref":"#/components/schemas/PlanTier","default":"trial"},"data_region":{"type":"string","maxLength":20,"title":"Data Region","default":"ap-south-1"},"parent_tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Tenant Id"},"is_mssp":{"type":"boolean","title":"Is Mssp","default":false},"primary_color":{"anyOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},{"type":"null"}],"title":"Primary Color"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"custom_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Domain"},"max_assets":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Assets"},"max_users":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Users"},"max_scans_per_month":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Scans Per Month"},"monthly_llm_budget_usd":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Monthly Llm Budget Usd"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["name","slug"],"title":"TenantCreate"},"TenantList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TenantRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"TenantList"},"TenantRead":{"properties":{"name":{"type":"string","maxLength":200,"minLength":2,"title":"Name"},"slug":{"type":"string","maxLength":64,"minLength":2,"pattern":"^[a-z0-9][a-z0-9-]*[a-z0-9]$","title":"Slug"},"plan":{"$ref":"#/components/schemas/PlanTier","default":"trial"},"data_region":{"type":"string","maxLength":20,"title":"Data Region","default":"ap-south-1"},"id":{"type":"string","format":"uuid","title":"Id"},"status":{"$ref":"#/components/schemas/TenantStatus"},"parent_tenant_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Tenant Id"},"is_mssp":{"type":"boolean","title":"Is Mssp"},"primary_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Color"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"custom_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Domain"},"max_assets":{"type":"integer","title":"Max Assets"},"max_users":{"type":"integer","title":"Max Users"},"max_scans_per_month":{"type":"integer","title":"Max Scans Per Month"},"monthly_llm_budget_usd":{"type":"integer","title":"Monthly Llm Budget Usd"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["name","slug","id","status","parent_tenant_id","is_mssp","primary_color","logo_url","custom_domain","max_assets","max_users","max_scans_per_month","monthly_llm_budget_usd","metadata","created_at","updated_at"],"title":"TenantRead"},"TenantSettingRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"key":{"type":"string","title":"Key"},"value":{"additionalProperties":true,"type":"object","title":"Value"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","key","value","description","created_at","updated_at"],"title":"TenantSettingRead"},"TenantSettingUpsert":{"properties":{"key":{"type":"string","maxLength":128,"minLength":1,"title":"Key"},"value":{"additionalProperties":true,"type":"object","title":"Value"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["key","value"],"title":"TenantSettingUpsert"},"TenantStatus":{"type":"string","enum":["active","suspended","churned","deleted"],"title":"TenantStatus","description":"Tenant lifecycle status."},"TenantUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":2},{"type":"null"}],"title":"Name"},"plan":{"anyOf":[{"$ref":"#/components/schemas/PlanTier"},{"type":"null"}]},"status":{"anyOf":[{"$ref":"#/components/schemas/TenantStatus"},{"type":"null"}]},"primary_color":{"anyOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},{"type":"null"}],"title":"Primary Color"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"custom_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Domain"},"max_assets":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Assets"},"max_users":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Users"},"max_scans_per_month":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Scans Per Month"},"monthly_llm_budget_usd":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Monthly Llm Budget Usd"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","title":"TenantUpdate"},"TestPushRequest":{"properties":{"subscription_id":{"type":"string","format":"uuid","title":"Subscription Id"}},"type":"object","required":["subscription_id"],"title":"TestPushRequest"},"TrackClickReq":{"properties":{"code":{"type":"string","maxLength":32,"minLength":4,"title":"Code"},"utm_source":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Utm Source"},"utm_medium":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Utm Medium"},"utm_campaign":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Utm Campaign"}},"type":"object","required":["code"],"title":"TrackClickReq"},"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"},"VerifyRequest":{"properties":{"secret":{"type":"string","maxLength":400,"minLength":4,"title":"Secret"},"body_str":{"type":"string","maxLength":20000,"minLength":1,"title":"Body Str"},"signature":{"type":"string","maxLength":200,"minLength":10,"title":"Signature"}},"type":"object","required":["secret","body_str","signature"],"title":"VerifyRequest"},"VoteReq":{"properties":{"voter_email":{"type":"string","format":"email","title":"Voter Email"}},"type":"object","required":["voter_email"],"title":"VoteReq"},"WebhookCreate":{"properties":{"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url"},"events":{"items":{"type":"string"},"type":"array","maxItems":50,"minItems":1,"title":"Events"},"description":{"type":"string","maxLength":300,"title":"Description","default":""}},"type":"object","required":["url","events"],"title":"WebhookCreate"},"WebhookUpdate":{"properties":{"url":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Url"},"events":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":50},{"type":"null"}],"title":"Events"},"description":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Description"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"}},"type":"object","title":"WebhookUpdate"}}}}