API Route Catalog
Source-level index of every QNSI API route, with method, path and handler comment, generated from service source files.
QNSI API Route Source Index
This page is auto-generated from statically visible server.get/post/put/delete/patch calls in service route source files. It is a source-level engineering index, not proof that a registrar is mounted or that an endpoint is externally reachable. The service manifests and production surface probe provide separate declaration and reachability evidence. For supported public contracts and usage examples, see API Reference.
AI Orchestrator
| Method | Path | Description |
|---|---|---|
| POST | /ai/v1/artifacts |
|
| GET | /ai/v1/bias/configs |
|
| POST | /ai/v1/bias/configs |
|
| DELETE | /ai/v1/bias/configs/:id |
|
| GET | /ai/v1/bias/configs/:id |
|
| PATCH | /ai/v1/bias/configs/:id |
|
| GET | /ai/v1/bias/evaluations |
|
| POST | /ai/v1/bias/evaluations |
|
| GET | /ai/v1/bias/evaluations/:id |
|
| PATCH | /ai/v1/bias/evaluations/:id |
|
| POST | /ai/v1/bias/evaluations/:id/start |
|
| GET | /ai/v1/bias/incidents |
|
| POST | /ai/v1/bias/incidents |
|
| GET | /ai/v1/bias/incidents/:id |
|
| PATCH | /ai/v1/bias/incidents/:id |
|
| GET | /ai/v1/bias/metrics |
|
| POST | /ai/v1/bias/metrics |
|
| POST | /ai/v1/bias/metrics/batch |
|
| GET | /ai/v1/bias/summary |
|
| GET | /ai/v1/costs/alerts |
|
| POST | /ai/v1/costs/alerts/:id/acknowledge |
|
| GET | /ai/v1/costs/analytics |
|
| GET | /ai/v1/costs/budgets |
|
| POST | /ai/v1/costs/budgets |
|
| DELETE | /ai/v1/costs/budgets/:id |
|
| GET | /ai/v1/costs/budgets/:id |
|
| PATCH | /ai/v1/costs/budgets/:id |
|
| GET | /ai/v1/costs/recommendations |
|
| POST | /ai/v1/costs/recommendations |
|
| POST | /ai/v1/costs/recommendations/:id/accept |
|
| POST | /ai/v1/costs/recommendations/:id/reject |
|
| POST | /ai/v1/costs/record |
Transactional outbox for ai.recommendation.issued.v1 (sweep F6/F8). |
| POST | /ai/v1/costs/record/batch |
|
| GET | /ai/v1/costs/summary |
|
| GET | /ai/v1/enclaves |
|
| POST | /ai/v1/enclaves |
|
| POST | /ai/v1/inference |
|
| GET | /ai/v1/inference/:id/stream |
|
| GET | /ai/v1/models |
List model deployments for a tenant |
| POST | /ai/v1/models |
Register a new model deployment (submits a long-running workload tagged as a model) |
| DELETE | /ai/v1/models/:id |
Delete (cancel) a model deployment |
| GET | /ai/v1/models/:id |
Get a specific model deployment |
| GET | /ai/v1/registry/deployments |
|
| POST | /ai/v1/registry/deployments |
|
| GET | /ai/v1/registry/deployments/:id |
|
| PATCH | /ai/v1/registry/deployments/:id |
|
| POST | /ai/v1/registry/deployments/:id/stop |
|
| GET | /ai/v1/registry/models |
|
| POST | /ai/v1/registry/models |
|
| DELETE | /ai/v1/registry/models/:id |
|
| GET | /ai/v1/registry/models/:id |
|
| PATCH | /ai/v1/registry/models/:id |
|
| POST | /ai/v1/registry/models/:id/activate |
|
| POST | /ai/v1/registry/models/:id/deprecate |
|
| GET | /ai/v1/registry/models/:id/versions |
|
| POST | /ai/v1/registry/models/:id/versions |
|
| POST | /ai/v1/security/incidents/analyze |
|
| POST | /ai/v1/security/injection/analyze |
|
| GET | /ai/v1/security/injection/configs |
|
| PATCH | /ai/v1/security/injection/configs |
|
| POST | /ai/v1/security/injection/configs |
|
| GET | /ai/v1/security/injection/incidents |
|
| POST | /ai/v1/security/injection/incidents |
|
| GET | /ai/v1/security/injection/incidents/:id |
|
| GET | /ai/v1/security/injection/patterns |
|
| POST | /ai/v1/security/injection/patterns |
|
| DELETE | /ai/v1/security/injection/patterns/:id |
|
| GET | /ai/v1/security/injection/patterns/:id |
|
| PATCH | /ai/v1/security/injection/patterns/:id |
|
| GET | /ai/v1/security/injection/stats |
|
| GET | /ai/v1/security/injection/summary |
|
| GET | /ai/v1/workloads |
|
| POST | /ai/v1/workloads |
|
| GET | /ai/v1/workloads/:id |
|
| POST | /ai/v1/workloads/:id/cancel |
|
| GET | /health |
Access Control
| Method | Path | Description |
|---|---|---|
| GET | /access/v1/ai/content-policy/:tenantId |
|
| PUT | /access/v1/ai/content-policy/:tenantId |
|
| POST | /access/v1/capabilities |
|
| POST | /access/v1/capabilities/:tokenId/revoke |
|
| POST | /access/v1/capabilities/introspect |
|
| GET | /access/v1/capabilities/revocation-operations/:operationId |
|
| POST | /access/v1/capabilities/revoke-by-criteria |
|
| POST | /access/v1/check |
Check whether a subject has a permission (optionally within a scope) |
| POST | /access/v1/cross-tenant/anomalies |
Detect access anomalies across tenants |
| POST | /access/v1/cross-tenant/compare |
Compare policies across tenants |
| GET | /access/v1/cross-tenant/graph |
Get cross-tenant access graph |
| GET | /access/v1/cross-tenant/isolation-audit |
Tenant isolation audit |
| POST | /access/v1/cross-tenant/overview |
Cross-tenant access overview |
| POST | /access/v1/evaluate |
|
| DELETE | /access/v1/internal/tenant/:tenantId |
|
| POST | /access/v1/jit/check |
Check if user has JIT access to resource |
| POST | /access/v1/jit/grants/:grantId/revoke |
Revoke JIT grant |
| GET | /access/v1/jit/grants/user/:userId |
Get active JIT grants for a user |
| GET | /access/v1/jit/policies |
List JIT policies |
| POST | /access/v1/jit/policies |
Create/update JIT policy |
| GET | /access/v1/jit/requests |
List JIT requests |
| POST | /access/v1/jit/requests |
Request JIT access |
| POST | /access/v1/jit/requests/:requestId/process |
Process (approve/deny) JIT request |
| GET | /access/v1/jit/stats |
JIT statistics |
| POST | /access/v1/policies |
|
| GET | /access/v1/policies/:policyId |
|
| GET | /access/v1/reviews/campaigns |
List access review campaigns |
| POST | /access/v1/reviews/campaigns |
Create a new access review campaign |
| POST | /access/v1/reviews/campaigns/:campaignId/complete |
Complete a review campaign |
| POST | /access/v1/reviews/campaigns/:campaignId/start |
Start a review campaign (generates review items) |
| GET | /access/v1/reviews/stats |
Get access review statistics |
| POST | /access/v1/role-assignments |
Assign a role to a subject |
| DELETE | /access/v1/role-assignments/:assignmentId |
Revoke a role assignment |
| GET | /access/v1/roles |
List roles |
| POST | /access/v1/roles |
Create a role |
| DELETE | /access/v1/roles/:roleId |
Delete a role (and its assignments) |
| GET | /access/v1/roles/:roleId |
Get a role |
| PATCH | /access/v1/roles/:roleId |
Update a role |
| POST | /access/v1/simulate |
Simulate a single access request |
| POST | /access/v1/simulate/batch |
Batch simulation for multiple requests |
| GET | /access/v1/simulate/history |
Get simulation history |
| POST | /access/v1/simulate/impact |
Impact analysis for policy changes |
| GET | /access/v1/tenants/:tenantId/policies |
|
| GET | /access/v1/zero-trust/status |
|
| GET | /test/tenant |
Audit
| Method | Path | Description |
|---|---|---|
| GET | /audit/v1/admin/events |
|
| POST | /audit/v1/chain/verify |
|
| GET | /audit/v1/checkpoints |
|
| GET | /audit/v1/checkpoints/:id/proofs/public |
Public, receipt-facing inclusion proof. The proof contains only hashes and the signed checkpoint metadata; it never exposes event payloads. |
| GET | /audit/v1/checkpoints/:id/verify |
|
| GET | /audit/v1/checkpoints/latest |
|
| GET | /audit/v1/checkpoints/latest/public |
are exposed; internal event IDs, counts of per-tenant events, and chain-state cursors are NOT included. |
| GET | /audit/v1/compliance/frameworks |
|
| GET | /audit/v1/compliance/frameworks/:frameworkId |
|
| GET | /audit/v1/compliance/reports |
|
| POST | /audit/v1/compliance/reports/generate |
|
| GET | /audit/v1/conformance/runs/:runId |
|
| GET | /audit/v1/conformance/stats |
|
| GET | /audit/v1/events |
|
| POST | /audit/v1/events |
|
| GET | /audit/v1/forensic/timeline |
Advanced forensic timeline endpoint |
| POST | /audit/v1/hipaa/incidents |
Create a HIPAA incident POST /audit/v1/hipaa/incidents |
| GET | /audit/v1/hipaa/incidents/:id |
Get HIPAA incident report GET /audit/v1/hipaa/incidents/:id |
| POST | /audit/v1/hipaa/incidents/:id/customer-notify |
Mark customer as notified POST /audit/v1/hipaa/incidents/:id/customer-notify |
| POST | /audit/v1/hipaa/incidents/:id/hhs-report |
Report incident to HHS (for breaches affecting 500+ individuals) POST /audit/v1/hipaa/incidents/:id/hhs-report |
| PATCH | /audit/v1/hipaa/incidents/:id/status |
Update incident status PATCH /audit/v1/hipaa/incidents/:id/status |
| POST | /audit/v1/kms-evidence |
|
| POST | /audit/v1/receipts |
|
| GET | /audit/v1/receipts/:id/verify |
|
| POST | /audit/v1/retention/cleanup |
Execute manual cleanup POST /audit/v1/retention/cleanup |
| GET | /audit/v1/retention/metrics |
Get retention metrics and statistics GET /audit/v1/retention/metrics |
| GET | /audit/v1/retention/policies |
List retention policies for a tenant GET /audit/v1/retention/policies |
| POST | /audit/v1/retention/policies |
Create a retention policy POST /audit/v1/retention/policies |
| DELETE | /audit/v1/retention/policies/:policyId |
Delete a retention policy DELETE /audit/v1/retention/policies/:policyId |
| GET | /audit/v1/retention/policies/:policyId |
Get a retention policy GET /audit/v1/retention/policies/:policyId |
| PATCH | /audit/v1/retention/policies/:policyId |
Update a retention policy PATCH /audit/v1/retention/policies/:policyId |
| POST | /audit/v1/retention/preview |
Preview retention impact (what would be deleted) POST /audit/v1/retention/preview |
| POST | /audit/v1/search |
|
| GET | /audit/v1/stats |
|
| GET | /audit/v1/streaming/connections |
Get active streaming connections (admin endpoint) GET /audit/v1/streaming/connections |
| DELETE | /audit/v1/streaming/connections/:connectionId |
Disconnect a streaming connection (admin endpoint) DELETE /audit/v1/streaming/connections/:connectionId |
| GET | /audit/v1/streaming/events |
SSE endpoint for streaming audit events GET /audit/v1/streaming/events |
| GET | /audit/v1/streaming/metrics |
Get streaming metrics GET /audit/v1/streaming/metrics |
| GET | /audit/v1/streaming/subscriptions |
List streaming subscriptions for a tenant GET /audit/v1/streaming/subscriptions |
| POST | /audit/v1/streaming/subscriptions |
Create a streaming subscription POST /audit/v1/streaming/subscriptions |
| DELETE | /audit/v1/streaming/subscriptions/:subscriptionId |
Delete a streaming subscription DELETE /audit/v1/streaming/subscriptions/:subscriptionId |
| GET | /audit/v1/streaming/subscriptions/:subscriptionId |
Get a streaming subscription GET /audit/v1/streaming/subscriptions/:subscriptionId |
| PATCH | /audit/v1/streaming/subscriptions/:subscriptionId |
Update a streaming subscription PATCH /audit/v1/streaming/subscriptions/:subscriptionId |
| POST | /v1/audit/chain/verify |
|
| POST | /v1/audit/intent |
|
| GET | /v1/audit/intent/:intentId |
|
| POST | /v1/audit/intent/complete |
|
| POST | /v1/audit/merkle/build |
|
| GET | /v1/audit/proof/:receiptId |
|
| POST | /v1/audit/verify |
Auth
| Method | Path | Description |
|---|---|---|
| GET | /auth/admin/session |
|
| GET | /auth/admin/user-actions/:commandId |
|
| GET | /auth/admin/users |
|
| PATCH | /auth/admin/users/:userId/status |
|
| POST | /auth/analytics/events |
|
| GET | /auth/analytics/risk-report |
|
| GET | /auth/analytics/sessions |
|
| GET | /auth/analytics/sessions/:sessionId |
|
| GET | /auth/analytics/stats |
|
| POST | /auth/email/addon-request |
|
| POST | /auth/email/join-request-notification |
|
| POST | /auth/email/team-invitation |
|
| POST | /auth/email/welcome |
Send welcome email to newly registered user. Called by billing-service after successful signup provisioning. |
| GET | /auth/federation/:providerId/metadata |
Get federation metadata |
| POST | /auth/federation/audit/query |
Query federated audit events |
| GET | /auth/federation/audit/reports |
List generated reports |
| POST | /auth/federation/audit/reports |
Generate compliance report |
| GET | /auth/federation/audit/reports/:reportId |
Get specific report |
| POST | /auth/federation/config |
Register/update federation configuration (admin endpoint) |
| DELETE | /auth/federation/config/:providerId |
|
| GET | /auth/federation/config/:providerId |
|
| PUT | /auth/federation/config/:providerId |
|
| POST | /auth/federation/config/:providerId/refresh-metadata |
|
| POST | /auth/federation/oidc/callback |
OIDC callback endpoint |
| POST | /auth/federation/oidc/start |
|
| GET | /auth/federation/providers |
|
| GET | /auth/federation/public/providers |
|
| POST | /auth/federation/public/start |
|
| POST | /auth/federation/saml/acs |
|
| POST | /auth/federation/saml/assertion |
SAML assertion endpoint |
| POST | /auth/federation/saml/start |
|
| POST | /auth/federation/scim/:providerId/Bulk |
|
| GET | /auth/federation/scim/:providerId/Groups |
|
| POST | /auth/federation/scim/:providerId/Groups |
|
| DELETE | /auth/federation/scim/:providerId/Groups/:groupId |
|
| GET | /auth/federation/scim/:providerId/Groups/:groupId |
|
| PATCH | /auth/federation/scim/:providerId/Groups/:groupId |
|
| PUT | /auth/federation/scim/:providerId/Groups/:groupId |
|
| GET | /auth/federation/scim/:providerId/ServiceProviderConfig |
|
| GET | /auth/federation/scim/:providerId/Users |
|
| POST | /auth/federation/scim/:providerId/Users |
|
| DELETE | /auth/federation/scim/:providerId/Users/:userId |
|
| GET | /auth/federation/scim/:providerId/Users/:userId |
|
| PATCH | /auth/federation/scim/:providerId/Users/:userId |
|
| PUT | /auth/federation/scim/:providerId/Users/:userId |
|
| POST | /auth/federation/scim/:providerId/import-jobs |
|
| GET | /auth/federation/scim/:providerId/import-jobs/:jobId |
|
| GET | /auth/federation/scim/:providerId/metadata |
|
| POST | /auth/federation/scim/:providerId/rotate-token |
|
| GET | /auth/federation/templates |
|
| POST | /auth/forgot-account |
Look up cloud accounts by email Sends email with list of accounts if any exist |
| POST | /auth/forgot-password |
Request password reset Sends email with reset link if user exists |
| POST | /auth/mfa/challenge |
Generate MFA challenge (TOTP) |
| POST | /auth/mfa/verify |
Verify MFA challenge (TOTP) |
| GET | /auth/oauth/identity |
Returns { userId, tenantId } or 404. Protected by AUTH_OAUTH_SESSION_SECRET. |
| POST | /auth/oauth/identity |
Upsert an OAuth identity link. Protected by AUTH_OAUTH_SESSION_SECRET. |
| POST | /auth/oauth/session |
Caller must supply { userId, tenantId, roles } - verified server-side. Protected by AUTH_OAUTH_SESSION_SECRET. |
| GET | /auth/oauth/user-by-email |
is not linked yet but the user account already exists. Protected by AUTH_OAUTH_SESSION_SECRET. |
| POST | /auth/reset-password |
Reset password with token |
| POST | /auth/risk/evaluate |
Evaluate authentication risk |
| GET | /auth/risk/policies |
List risk policies |
| POST | /auth/risk/policies |
Configure risk policy |
| POST | /auth/risk/signals |
Report threat signal |
| GET | /auth/risk/stats |
Get risk statistics |
| GET | /auth/risk/users/:userId/signals |
Get risk signals for a user |
| GET | /auth/session |
|
| POST | /auth/token |
|
| POST | /auth/token/revoke |
|
| DELETE | /auth/v1/internal/tenant/:tenantId |
|
| GET | /auth/v1/nhi/discovery |
|
| GET | /auth/v1/nhi/identities |
|
| POST | /auth/v1/service-accounts |
|
| POST | /auth/v1/service-accounts/:serviceAccountId/keys |
|
| POST | /auth/v1/service-accounts/:serviceAccountId/rotate-secret |
|
| PATCH | /auth/v1/service-accounts/:serviceAccountId/status |
|
| POST | /auth/webauthn/authenticate/complete |
Complete passkey authentication |
| POST | /auth/webauthn/authenticate/start |
Start passkey authentication |
| DELETE | /auth/webauthn/credentials/:credentialId |
Delete a passkey |
| GET | /auth/webauthn/credentials/:userId |
List passkeys for a user |
| POST | /auth/webauthn/register/complete |
Complete passkey registration |
| POST | /auth/webauthn/register/start |
Start passkey registration |
Billing
| Method | Path | Description |
|---|---|---|
| GET | /api/marketplace/aws/entitlement/:customerIdentifier |
Verify customer subscription Used by other services to verify AWS Marketplace subscriptions |
| POST | /api/marketplace/aws/resolve-customer |
AWS Marketplace. The registration token is passed as a query parameter by AWS Marketplace to the fulfillment URL. |
| POST | /api/marketplace/aws/webhook |
AWS Marketplace webhook endpoint Handles subscription events from AWS Marketplace |
| GET | /api/marketplace/azure/entitlement/:subscriptionId |
Get subscription entitlement by Azure subscription ID. GET /api/marketplace/azure/entitlement/:subscriptionId |
| POST | /api/marketplace/azure/resolve |
Called when a customer clicks through from Azure Marketplace to the QNSI landing page. The marketplace token is passed as a query parameter. |
| POST | /api/marketplace/azure/webhook |
Must respond with HTTP 200 to acknowledge receipt. For ChangePlan/ChangeQuantity, must PATCH the operation within 10 seconds. |
| GET | /api/marketplace/vercel/oauth/callback |
OAuth callback (user-initiated install flow) ======================================================================= |
| GET | /api/marketplace/vercel/sso |
SSO deep link ======================================================================= |
| DELETE | /api/marketplace/vercel/v1/installations/:installationId |
|
| GET | /api/marketplace/vercel/v1/installations/:installationId |
|
| GET | /api/marketplace/vercel/v1/installations/:installationId/billing/plans |
|
| POST | /api/marketplace/vercel/v1/installations/:installationId/resources |
Partner API: Resource lifecycle ======================================================================= |
| DELETE | /api/marketplace/vercel/v1/installations/:installationId/resources/:resourceId |
|
| GET | /api/marketplace/vercel/v1/installations/:installationId/resources/:resourceId |
|
| PATCH | /api/marketplace/vercel/v1/installations/:installationId/resources/:resourceId |
|
| GET | /api/marketplace/vercel/v1/products/:productId/plans |
Partner API: Billing plans ======================================================================= |
| POST | /api/marketplace/vercel/webhook |
Webhook receiver (Vercel -> us) ======================================================================= |
| GET | /billing/addons/:tenantId |
List all enabled add-ons for a tenant GET /addons/:tenantId |
| GET | /billing/addons/catalog |
List all available add-ons with pricing GET /addons/catalog |
| POST | /billing/addons/disable |
Disable an add-on for a tenant POST /addons/disable |
| POST | /billing/addons/enable |
Enable an add-on for a tenant POST /addons/enable |
| POST | /billing/addons/request |
Request an add-on (sales-assisted flow) POST /addons/request |
| GET | /billing/tiers/catalog |
Returns the full tier catalog from TIER_PRICING config. Used by the frontend upgrade page to display dynamic pricing. |
| GET | /billing/upgrade-context |
|
| POST | /billing/v1/admin/addons/enable |
Auth: same BILLING_ADMIN_TOKEN as provision-tier. Body: { tenantId: string (uuid), addonId: AddOnId, reason?: string } |
| POST | /billing/v1/admin/addons/requests/complete |
|
| GET | /billing/v1/admin/funnel |
|
| POST | /billing/v1/admin/provision-tier |
Tenant, entitlement, access-state, receipt, and outbox writes are performed atomically through TierEntitlementService's persisted saga. |
| POST | /billing/v1/admin/signup/cleanup |
Admin endpoint to cleanup failed signups (requires admin token) |
| POST | /billing/v1/admin/signup/complete-provisioning |
|
| POST | /billing/v1/admin/signup/retry-provisioning |
Admin endpoint to retry provisioning for failed signups |
| DELETE | /billing/v1/admin/tier/:tenantId |
Revoke tier entitlement (downgrade to free) DELETE /billing/v1/admin/tier/:tenantId |
| GET | /billing/v1/admin/tier/:tenantId |
Get current tier entitlement for a tenant GET /billing/v1/admin/tier/:tenantId |
| GET | /billing/v1/analytics/revenue/breakdown/:tenantId |
Get revenue breakdown by category GET /billing/v1/analytics/revenue/breakdown/:tenantId |
| GET | /billing/v1/analytics/revenue/by-service |
Get revenue by service/meter type GET /billing/v1/analytics/revenue/by-service |
| GET | /billing/v1/analytics/revenue/mrr |
Get Monthly Recurring Revenue (MRR) metrics GET /billing/v1/analytics/revenue/mrr |
| GET | /billing/v1/analytics/revenue/summary |
Get revenue summary/overview GET /billing/v1/analytics/revenue/summary |
| GET | /billing/v1/analytics/revenue/tenant/:tenantId |
Get revenue by tenant over time GET /billing/v1/analytics/revenue/tenant/:tenantId |
| GET | /billing/v1/analytics/revenue/time-series |
Get revenue time series for charts GET /billing/v1/analytics/revenue/time-series |
| GET | /billing/v1/analytics/revenue/top-tenants |
Get top revenue-generating tenants GET /billing/v1/analytics/revenue/top-tenants |
| GET | /billing/v1/conformance/active-tenants |
|
| GET | /billing/v1/conformance/quota/:tenantId |
|
| POST | /billing/v1/conformance/quota/:tenantId/consume |
|
| POST | /billing/v1/credits |
Create a credit for a tenant POST /billing/v1/credits |
| POST | /billing/v1/credits/apply |
Apply credit to an invoice or balance POST /billing/v1/credits/apply |
| GET | /billing/v1/credits/balance/:tenantId |
Get credit balance for a tenant GET /billing/v1/credits/balance/:tenantId |
| GET | /billing/v1/credits/history/:tenantId |
Get credit transaction history GET /billing/v1/credits/history/:tenantId |
| GET | /billing/v1/credits/metrics |
Get credit system metrics GET /billing/v1/credits/metrics |
| POST | /billing/v1/credits/process-expirations |
Process expired credits (cron endpoint) POST /billing/v1/credits/process-expirations |
| POST | /billing/v1/credits/transfer |
Transfer credits between tenants POST /billing/v1/credits/transfer |
| POST | /billing/v1/credits/void |
Void/cancel a credit POST /billing/v1/credits/void |
| GET | /billing/v1/customer-credits/:tenantId |
|
| GET | /billing/v1/customer/account |
|
| GET | /billing/v1/customer/catalog |
|
| POST | /billing/v1/dunning/escalate |
Create an escalation for a failed payment POST /billing/v1/dunning/escalate |
| GET | /billing/v1/dunning/failed-payments |
List all failed payments across tenants GET /billing/v1/dunning/failed-payments |
| GET | /billing/v1/dunning/metrics |
Get dunning metrics/dashboard data GET /billing/v1/dunning/metrics |
| POST | /billing/v1/dunning/operator-actions |
|
| GET | /billing/v1/dunning/payments |
|
| POST | /billing/v1/dunning/payments/:commandId/reconcile |
|
| POST | /billing/v1/dunning/process |
Process scheduled dunning actions (cron endpoint) POST /billing/v1/dunning/process |
| POST | /billing/v1/dunning/resolve |
Legacy tenant-wide resolution could conceal unresolved invoices. Use the atomic invoice-scoped operator command with actor, reason and evidence instead. |
| POST | /billing/v1/dunning/retry |
|
| POST | /billing/v1/dunning/schedule |
Configure dunning schedule for a tenant POST /billing/v1/dunning/schedule |
| GET | /billing/v1/dunning/schedule/:tenantId |
Get dunning schedule for a tenant GET /billing/v1/dunning/schedule/:tenantId |
| GET | /billing/v1/dunning/status/:tenantId |
Get dunning status for a tenant GET /billing/v1/dunning/status/:tenantId |
| GET | /billing/v1/forecasting/anomalies/:tenantId |
Detect usage anomalies GET /billing/v1/forecasting/anomalies/:tenantId |
| GET | /billing/v1/forecasting/billing/:tenantId |
Get billing/cost forecast for a tenant GET /billing/v1/forecasting/billing/:tenantId |
| GET | /billing/v1/forecasting/capacity/:tenantId |
Get capacity planning forecast GET /billing/v1/forecasting/capacity/:tenantId |
| GET | /billing/v1/forecasting/trends/:tenantId |
Get trend analysis for usage GET /billing/v1/forecasting/trends/:tenantId |
| GET | /billing/v1/forecasting/usage/:tenantId |
Get usage forecast for a tenant GET /billing/v1/forecasting/usage/:tenantId |
| POST | /billing/v1/funnel/events |
|
| DELETE | /billing/v1/internal/tenant/:tenantId |
|
| GET | /billing/v1/invoices |
|
| POST | /billing/v1/invoices |
|
| GET | /billing/v1/invoices/:invoiceId |
|
| POST | /billing/v1/invoices/generate |
|
| GET | /billing/v1/marketplace/gcp/entitlement/:entitlementId |
Get entitlement details by GCP entitlement ID. GET /api/marketplace/gcp/entitlement/:entitlementId |
| POST | /billing/v1/marketplace/gcp/resolve |
Resolve a GCP Marketplace procurement token from the landing page. POST /api/marketplace/gcp/resolve |
| POST | /billing/v1/marketplace/gcp/webhook |
Receives subscription lifecycle events from GCP via Pub/Sub push. Must respond with HTTP 200 to acknowledge receipt (non-200 triggers retry). |
| POST | /billing/v1/marketplace/github/webhook |
|
| POST | /billing/v1/meters |
|
| GET | /billing/v1/operator/entitlements |
|
| GET | /billing/v1/operator/tiers |
|
| POST | /billing/v1/operator/tiers |
|
| POST | /billing/v1/operator/tiers/:operationId/reconcile |
|
| GET | /billing/v1/promotions |
List available promotions GET /billing/v1/promotions |
| POST | /billing/v1/promotions |
Create a promotion/coupon code POST /billing/v1/promotions |
| POST | /billing/v1/promotions/redeem |
Redeem a promotion code POST /billing/v1/promotions/redeem |
| POST | /billing/v1/sdk/activate |
|
| POST | /billing/v1/signup/init |
|
| POST | /billing/v1/signup/oauth |
|
| GET | /billing/v1/signup/status |
Get signup status by checkout session ID |
| POST | /billing/v1/stripe/checkout |
Create Stripe Checkout session for subscription POST /billing/v1/stripe/checkout |
| GET | /billing/v1/stripe/grace-period/:tenantId |
Get grace period status for a tenant GET /billing/v1/stripe/grace-period/:tenantId |
| GET | /billing/v1/stripe/payment-methods/:tenantId |
Get customer's payment methods GET /billing/v1/stripe/payment-methods/:tenantId |
| POST | /billing/v1/stripe/process-grace-periods |
to process accounts that have exceeded their 7-day grace period and downgrade them to the free tier. |
| GET | /billing/v1/stripe/subscriptions/:tenantId |
Get subscription status GET /billing/v1/stripe/subscriptions/:tenantId |
| POST | /billing/v1/stripe/subscriptions/:tenantId/cancel |
Cancel subscription POST /billing/v1/stripe/subscriptions/:tenantId/cancel |
| POST | /billing/v1/stripe/verification-unlock |
|
| GET | /billing/v1/stripe/verification-unlock/events/:tenantId |
|
| GET | /billing/v1/stripe/verification-unlock/status/:tenantId |
|
| POST | /billing/v1/stripe/webhooks |
Note: This endpoint requires raw body for signature verification. Configure Fastify to pass raw body for this route. |
| POST | /billing/v1/sync/verify-all |
This endpoint should be called by a scheduled job (e.g., every 15 minutes) to verify that all databases are in sync and automatically sync any that are out of sync. |
| POST | /billing/v1/sync/verify/:tenantId |
POST /billing/v1/sync/verify/:tenantId Useful for manual verification or testing. |
| GET | /billing/v1/tenant-usage/:tenantId |
Quotas/limits come from entitlement feature-flags. Dashboard and all consumers should call this endpoint exclusively. |
| GET | /billing/v1/tenants/:tenantId/access |
|
| POST | /billing/v1/tenants/:tenantId/access/activate |
- paidThroughDays: days from now for paid_through (default: 365, max: 3650) - note: optional audit note |
| POST | /billing/v1/tenants/:tenantId/access/block |
|
| POST | /billing/v1/tenants/:tenantId/access/unblock |
|
| POST | /billing/v1/tier-change/preview |
Returns which add-ons would become incompatible, which flags would be lost, and the billing delta. Use before confirming a downgrade. |
| GET | /billing/v1/tier/:tenantId |
Use this endpoint instead of /billing/v1/stripe/subscriptions/:tenantId when you need the tier regardless of how it was provisioned. |
| POST | /billing/v1/tiers/downgrade |
|
| GET | /billing/v1/usage/:tenantId |
|
| GET | /billing/v1/usage/:tenantId/daily |
|
| POST | /feature-flags/disable |
Disable a feature flag for a tenant (admin only) POST /feature-flags/disable |
| POST | /feature-flags/enable |
Enable a feature flag for a tenant (admin only) POST /feature-flags/enable |
| POST | /feature-flags/sync/:tenantId |
Sync feature flags from tenant features (migration helper) POST /feature-flags/sync/:tenantId |
| GET | /feature-flags/tenant/:tenantId |
Get all enabled feature flags for a tenant GET /feature-flags/tenant/:tenantId |
| GET | /feature-flags/tenant/:tenantId/:flagKey |
Get details of a specific feature flag for a tenant GET /feature-flags/tenant/:tenantId/:flagKey |
| GET | /infrastructure/v1/activations |
Get all infrastructure activations for a tenant GET /infrastructure/v1/activations |
| POST | /infrastructure/v1/activations/:activationId/deactivate |
Customer deactivates feature POST /infrastructure/v1/activations/:activationId/deactivate |
| GET | /infrastructure/v1/activations/:featureType |
Get activation for a specific feature GET /infrastructure/v1/activations/:featureType |
| PUT | /infrastructure/v1/activations/:featureType/configuration |
Save configuration (draft - no approval needed) PUT /infrastructure/v1/activations/:featureType/configuration |
| POST | /infrastructure/v1/activations/:featureType/request |
Customer requests activation (triggers 2-tier approval) POST /infrastructure/v1/activations/:featureType/request |
| GET | /infrastructure/v1/admin/activations/:activationId |
Read an exact activation after it leaves the pending queue. |
| POST | /infrastructure/v1/admin/activations/:activationId/activate |
|
| POST | /infrastructure/v1/admin/activations/:activationId/approve |
|
| POST | /infrastructure/v1/admin/activations/:activationId/provision |
|
| POST | /infrastructure/v1/admin/activations/:activationId/reject |
Ops rejects activation POST /infrastructure/v1/admin/activations/:activationId/reject |
| GET | /infrastructure/v1/admin/activations/:activationId/verify-audit |
|
| POST | /infrastructure/v1/admin/activations/:activationId/verify-payment |
|
| GET | /infrastructure/v1/admin/pending-approvals |
Get all pending ops approvals GET /infrastructure/v1/admin/pending-approvals |
| GET | /infrastructure/v1/status |
Get infrastructure status summary GET /infrastructure/v1/status |
Crypto Inventory
| Method | Path | Description |
|---|---|---|
| POST | /crypto/v1/agent-report-bundles |
|
| POST | /crypto/v1/agent-reports |
Uses a route-scoped preParsing hook to capture the raw body for HMAC signature verification without affecting other routes. |
| GET | /crypto/v1/agent-reports/status |
GET /crypto/v1/agent-reports/status Check the number of pending reports for the tenant. |
| GET | /crypto/v1/agents |
GET /crypto/v1/agents List all registered agents for the tenant. |
| POST | /crypto/v1/agents |
securely delivered to the agent. Requires tenant_admin role. |
| DELETE | /crypto/v1/agents/:id |
Delete an agent and all associated nonces. Requires tenant_admin role. |
| GET | /crypto/v1/agents/:id |
GET /crypto/v1/agents/:id Get a specific agent by ID. |
| POST | /crypto/v1/agents/:id/rotate |
Rotate the agent's HMAC secret. Returns the new one-time secret. Requires tenant_admin role. |
| PATCH | /crypto/v1/agents/:id/status |
or "revoked" to permanently revoke access. Requires tenant_admin role. |
| GET | /crypto/v1/agility/score |
actionable recommendations. Requires at least tenant_viewer role. |
| GET | /crypto/v1/assets |
|
| DELETE | /crypto/v1/assets/:id |
|
| GET | /crypto/v1/assets/:id |
|
| POST | /crypto/v1/assets/:id/rotate |
|
| POST | /crypto/v1/assets/discover |
|
| POST | /crypto/v1/assets/import |
|
| POST | /crypto/v1/assets/rotate-bulk |
|
| GET | /crypto/v1/assets/stats |
|
| GET | /crypto/v1/cbom |
KMS, Vault, Edge Gateway, external, host agents, etc. Requires at least tenant_viewer role. |
| GET | /crypto/v1/certificates/expiring |
|
| GET | /crypto/v1/certificates/expiry |
|
| POST | /crypto/v1/certificates/renew |
|
| POST | /crypto/v1/code-scan-reports |
|
| GET | /crypto/v1/code-scan-reports/status |
|
| GET | /crypto/v1/compliance/nist-report |
- periodStart (optional): ISO date string for report period start - periodEnd (optional): ISO date string for report period end |
| GET | /crypto/v1/connected-sources |
Returns a summary of all configured discovery connectors for the tenant, including last sync status, asset counts per source, and coverage gaps. |
| GET | /crypto/v1/connector-configs |
GET /crypto/v1/connector-configs List all connector configs for the tenant. Configs are redacted. |
| POST | /crypto/v1/connector-configs |
Create or upsert a connector config. Feature-gated by source type. Requires tenant_operator role. Audit-logged. |
| DELETE | /crypto/v1/connector-configs/:id |
Delete a connector config. Feature-gated by source type. Requires tenant_admin role. Audit-logged. |
| GET | /crypto/v1/connector-configs/:id |
GET /crypto/v1/connector-configs/:id Get a specific connector config. Config is redacted. |
| PUT | /crypto/v1/connector-configs/:id |
Update an existing connector config. Feature-gated by source type. Requires tenant_operator role. Audit-logged. |
| POST | /crypto/v1/connector-configs/:id/validate |
to the connector config record. Feature-gated by source type. Requires tenant_operator role. Audit-logged. |
| POST | /crypto/v1/connector-configs/test |
Use this to verify credentials before saving a connector config. Feature-gated by source type. Requires tenant_operator role. Audit-logged. |
| POST | /crypto/v1/deprecation/acknowledge |
|
| GET | /crypto/v1/deprecation/affected-assets |
|
| GET | /crypto/v1/deprecation/notifications |
|
| POST | /crypto/v1/deprecation/notifications |
|
| DELETE | /crypto/v1/deprecation/notifications/:notificationId |
|
| PATCH | /crypto/v1/deprecation/notifications/:notificationId |
|
| GET | /crypto/v1/deprecation/policies |
|
| POST | /crypto/v1/deprecation/policies |
|
| DELETE | /crypto/v1/deprecation/policies/:policyId |
|
| GET | /crypto/v1/deprecation/policies/:policyId |
|
| PATCH | /crypto/v1/deprecation/policies/:policyId |
|
| GET | /crypto/v1/deprecation/summary |
|
| GET | /crypto/v1/discovery/jobs |
|
| GET | /crypto/v1/discovery/jobs/:id |
|
| GET | /crypto/v1/discovery/policies |
|
| POST | /crypto/v1/discovery/policies |
|
| GET | /crypto/v1/discovery/policies/:id |
|
| PUT | /crypto/v1/discovery/policies/:id |
|
| POST | /crypto/v1/discovery/policies/:id/activate |
|
| GET | /crypto/v1/discovery/runs |
|
| GET | /crypto/v1/evidence/pack |
tenant_viewer role. The pack is generated on-demand and includes a manifest hash for integrity verification. |
| GET | /crypto/v1/hardware |
|
| POST | /crypto/v1/hardware |
|
| DELETE | /crypto/v1/hardware/:hardwareId |
|
| GET | /crypto/v1/hardware/:hardwareId |
|
| PATCH | /crypto/v1/hardware/:hardwareId |
|
| GET | /crypto/v1/hardware/:hardwareId/health |
|
| POST | /crypto/v1/hardware/:hardwareId/health |
|
| GET | /crypto/v1/hardware/summary |
|
| DELETE | /crypto/v1/internal/tenant/:tenantId |
route-coverage check can statically detect this registration. The const is still used for the JWT-hook exemption prefix in server.ts. |
| GET | /crypto/v1/migration-plan |
crypto assets. Returns deprecated algorithms, phased timeline, and effort breakdown. Requires authenticated tenant context (x-qnsp-tenant header or JWT tenantId). |
| POST | /crypto/v1/migration/asset-actions/:id/confirm-cutover |
|
| POST | /crypto/v1/migration/asset-actions/:id/reconcile |
|
| GET | /crypto/v1/migration/cutover-progress |
|
| POST | /crypto/v1/migration/dry-run |
passed to /execute as the confirmation gate. Gated by migration-execution feature flag. Requires tenant_admin role. |
| POST | /crypto/v1/migration/execute |
exactly what they previewed in the dry-run. Gated by migration-execution feature flag. Requires tenant_admin role. |
| GET | /crypto/v1/migration/executions |
List migration executions for the tenant, most recent first. Not gated - read-only access to execution history. |
| GET | /crypto/v1/migration/executions/:id |
Get a single migration execution by ID. Not gated - read-only. |
| POST | /crypto/v1/migration/executions/:id/approve |
|
| GET | /crypto/v1/migration/executions/:id/asset-actions |
|
| POST | /crypto/v1/migration/executions/:id/cancel |
Cancel a pending or in-progress migration execution. Gated by migration-execution feature flag. Requires tenant_admin role. |
| GET | /crypto/v1/migration/executions/:id/control-events |
|
| POST | /crypto/v1/migration/executions/:id/pause |
|
| GET | /crypto/v1/migration/executions/:id/reconciliation-events |
|
| POST | /crypto/v1/migration/executions/:id/resume |
|
| GET | /crypto/v1/migration/executions/:id/waves |
|
| GET | /crypto/v1/observations/tls/aggregates |
|
| POST | /crypto/v1/observations/tls/aggregates |
|
| GET | /crypto/v1/policies |
|
| POST | /crypto/v1/policies |
|
| DELETE | /crypto/v1/policies/:id |
|
| GET | /crypto/v1/policies/:id |
|
| PUT | /crypto/v1/policies/:id |
|
| POST | /crypto/v1/policies/:id/disable |
|
| POST | /crypto/v1/policies/:id/enable |
|
| POST | /crypto/v1/policies/evaluate |
Policy evaluation |
| DELETE | /crypto/v1/posture/reset |
Connector configs (external sources) ARE deleted. Requires tenant_admin role. Audit-logged. |
| GET | /crypto/v1/pqc-readiness/benchmark |
|
| POST | /crypto/v1/pqc-readiness/compare |
|
| GET | /crypto/v1/pqc-readiness/recommendations |
|
| GET | /crypto/v1/pqc-readiness/score |
|
| GET | /crypto/v1/pqc-readiness/score/category/:category |
|
| GET | /crypto/v1/pqc-readiness/score/history |
|
| GET | /crypto/v1/readiness |
|
| GET | /crypto/v1/readiness/timeline |
|
| GET | /crypto/v1/rotation-jobs |
|
| GET | /crypto/v1/rotation-jobs/:id |
|
| GET | /crypto/v1/scan-schedules |
|
| POST | /crypto/v1/scan-schedules |
|
| DELETE | /crypto/v1/scan-schedules/:id |
|
| PUT | /crypto/v1/scan-schedules/:id |
|
| GET | /crypto/v1/violations |
Violations |
| POST | /crypto/v1/violations/:id/acknowledge |
|
| POST | /crypto/v1/violations/:id/exception |
Edge Gateway
| Method | Path | Description |
|---|---|---|
| GET | /api/marketplace/aws/entitlement/:customerIdentifier |
GET /api/marketplace/aws/entitlement/:customerIdentifier Proxies AWS Marketplace entitlement verification to the internal billing service. |
| POST | /api/marketplace/aws/metering |
Proxies usage metering requests to the internal billing service. Used for reporting consumption-based usage to AWS Marketplace. |
| POST | /api/marketplace/aws/resolve-customer |
POST /api/marketplace/aws/resolve-customer Proxies customer resolution requests from the fulfillment page to billing service. |
| POST | /api/v1/admin/billing/tiers/:operationId/reconcile |
|
| GET | /api/v1/admin/infrastructure/activations/:activationId |
|
| POST | /api/v1/admin/infrastructure/activations/:activationId/:action |
|
| GET | /api/v1/admin/infrastructure/pending-approvals |
|
| GET | /api/v1/admin/users |
|
| PATCH | /api/v1/admin/users/:userId/status |
this route the mutation fell through the generic service proxy, where the enforcement hook answered FORBIDDEN and account governance was unusable. |
| GET | /api/v1/tenants/:tenantId/infrastructure/activations |
Get all infrastructure activations for a tenant GET /api/v1/tenants/:tenantId/infrastructure/activations |
| GET | /api/v1/tenants/:tenantId/infrastructure/status |
Get infrastructure status for a tenant GET /api/v1/tenants/:tenantId/infrastructure/status |
| POST | /edge/auth/federation/oidc/callback |
|
| GET | /edge/auth/federation/public/providers |
|
| POST | /edge/auth/federation/public/start |
|
| POST | /edge/auth/federation/saml/acs |
|
| POST | /edge/auth/forgot-account |
|
| POST | /edge/auth/forgot-password |
|
| POST | /edge/auth/login |
|
| POST | /edge/auth/login-identity |
portal's /api/auth/login got 404 from the gateway for every login that omits a workspace ID - i.e. the primary login path was dead. (2026-06-03) |
| POST | /edge/auth/login/select-tenant |
posts the selectionToken + chosen tenantId here; auth-service exchanges it for a tenant-scoped session. Was likewise unrouted (404) at the gateway. (2026-06-03) |
| POST | /edge/auth/logout |
|
| GET | /edge/auth/me/tenants |
at the edge -> 404 route-not-found -> the cloud BFF (/api/user/tenants) saw the user as having no workspaces. Authenticated (user JWT validated by auth-service). |
| GET | /edge/auth/oauth/identity |
OAuth-linked identities. The Authorization header carries the shared OAuth session secret (Bearer token), NOT a user JWT. |
| POST | /edge/auth/oauth/identity |
|
| POST | /edge/auth/oauth/session |
|
| GET | /edge/auth/oauth/user-by-email |
route the edge returned 404 (route-not-found) -> the BFF treated it as "no user" -> every existing-user OAuth login got "sign up first". |
| POST | /edge/auth/reset-password |
|
| POST | /edge/auth/revoke-all-sessions |
revokeAll path) silently failed to revoke other sessions - a security action that appeared to succeed. Authenticated (user JWT validated by auth-service). |
| POST | /edge/auth/switch-tenant |
policy-bundle-hash) and Tier B headers (entitlement-decision-id, audit-intent-id) are forwarded so auth-service can include them in its structured audit receipt. |
| POST | /edge/auth/token/refresh |
the 15-min access token expired mid-session and users were silently logged out (~10-12 min) with no warning. (2026-05-31) |
| POST | /edge/auth/webauthn/authenticate/complete |
|
| POST | /edge/auth/webauthn/authenticate/start |
WebAuthn authentication routes |
| DELETE | /edge/auth/webauthn/credentials/:credentialId |
|
| GET | /edge/auth/webauthn/credentials/:userId |
|
| POST | /edge/auth/webauthn/register/complete |
|
| POST | /edge/auth/webauthn/register/start |
WebAuthn registration routes |
| GET | /edge/v1/ai-security/policy |
|
| PUT | /edge/v1/ai-security/policy |
|
| GET | /edge/v1/ai-security/policy/tenants/:tenantId |
|
| PUT | /edge/v1/ai-security/policy/tenants/:tenantId |
|
| GET | /edge/v1/entitlements/health |
|
| GET | /edge/v1/integrations/providers |
GET /edge/v1/integrations/providers List all available integration providers with their configuration requirements |
| GET | /edge/v1/integrations/providers/:providerId |
GET /edge/v1/integrations/providers/:providerId Get details for a specific provider including required fields |
| POST | /edge/v1/integrations/test |
POST /edge/v1/integrations/test Test an integration connection without saving it |
| POST | /edge/v1/integrations/validate |
POST /edge/v1/integrations/validate Validate integration configuration without testing connection |
| GET | /edge/v1/observability/upstream |
|
| PUT | /edge/v1/observability/upstream |
|
| POST | /edge/v1/pqc-tls/rotate |
|
| POST | /edge/v1/requests |
|
| GET | /edge/v1/routes |
|
| POST | /edge/v1/routes |
|
| PUT | /edge/v1/routes/:routeId/ai-security/policy |
|
| GET | /evidence/ai-intelligence/dashboard-signing-key |
|
| GET | /evidence/audit-integrity |
|
| GET | /evidence/crypto-posture |
|
| GET | /evidence/key-policy |
|
| GET | /evidence/tls-mode |
|
| GET | /evidence/transport-security |
|
| GET | /oauth/vercel/callback |
|
| GET | /oauth/vercel/sso |
|
| POST | /platform/v1/conformance/sign-evidence-pack |
Response: signature block compatible with attaching as a W3C DataIntegrityProof. |
| GET | /platform/v1/crypto/algorithms |
GET /platform/v1/crypto/algorithms List all known algorithms with their metadata and lifecycle status. |
| GET | /platform/v1/crypto/algorithms/:algorithm |
GET /platform/v1/crypto/algorithms/:algorithm Get metadata for a specific algorithm. |
| GET | /platform/v1/crypto/attestation |
GET /platform/v1/crypto/attestation Generate a signed compliance attestation snapshot. |
| GET | /platform/v1/crypto/attestation/history |
GET /platform/v1/crypto/attestation/history Get attestation generation history. |
| GET | /platform/v1/crypto/cbom |
GET /platform/v1/crypto/cbom Generate and return the Cryptographic Bill of Materials. |
| GET | /platform/v1/crypto/cbom/diff |
GET /platform/v1/crypto/cbom/diff Compare two CBOM snapshots. |
| GET | /platform/v1/crypto/cbom/download |
GET /platform/v1/crypto/cbom/download Download CBOM as a file. |
| GET | /platform/v1/crypto/cbom/history |
GET /platform/v1/crypto/cbom/history Get CBOM generation history. |
| GET | /platform/v1/crypto/compliance |
GET /platform/v1/crypto/compliance Get compliance status summary. |
| GET | /platform/v1/crypto/migration-plan |
GET /platform/v1/crypto/migration-plan Generate a migration plan for deprecated algorithms. |
| GET | /platform/v1/crypto/policy |
GET /platform/v1/crypto/policy Returns the current crypto policy configuration. |
| GET | /platform/v1/crypto/policy/check |
GET /platform/v1/crypto/policy/check Check if an algorithm is allowed by policy. |
| GET | /platform/v1/crypto/policy/enforcement-log |
GET /platform/v1/crypto/policy/enforcement-log Get recent policy enforcement decisions for audit. |
| GET | /platform/v1/crypto/policy/presets |
GET /platform/v1/crypto/policy/presets List available policy presets. |
| GET | /platform/v1/crypto/posture |
|
| GET | /platform/v1/crypto/posture/public |
|
| GET | /platform/v1/crypto/tls/connection |
|
| GET | /platform/v1/crypto/tls/evidence |
|
| GET | /platform/v1/crypto/tls/evidence/public |
|
| GET | /proxy/auth/health |
|
| GET | /proxy/health |
health routing. A structured warn log captures which backends were degraded so the alerting signal is preserved. |
| POST | /public/join-requests |
|
| GET | /public/tenant-by-domain/:domain |
|
| GET | /public/tenant-by-slug/:slug |
This is used by the login flow to resolve tenant slugs to UUIDs |
| POST | /v1/ws/publish |
HTTP endpoint for internal services to publish WebSocket messages |
| GET | /v1/ws/stats |
WebSocket statistics are limited to the cryptographically verified tenant. |
| POST | /webhooks/aws-marketplace |
Proxies AWS Marketplace subscription events to the internal billing service. No authentication required - AWS Marketplace uses signature verification. |
| POST | /webhooks/azure-marketplace |
The raw body is forwarded verbatim so any downstream payload integrity checks remain valid. |
| POST | /webhooks/gcp-marketplace |
that depends on byte-for-byte content (signature, checksum, base64 of Pub/Sub message.data) continues to work. |
| POST | /webhooks/github-marketplace |
Proxies GitHub Marketplace marketplace_purchase events to billing-service. No authentication required - GitHub signs deliveries with X-Hub-Signature-256. |
| POST | /webhooks/stripe |
Proxies Stripe webhook events to the internal billing service. No authentication required - Stripe uses signature verification. |
| POST | /webhooks/vercel-marketplace |
KMS
| Method | Path | Description |
|---|---|---|
| GET | /health |
|
| GET | /kms/v1/analytics/alert-rules |
|
| POST | /kms/v1/analytics/alert-rules |
|
| DELETE | /kms/v1/analytics/alert-rules/:ruleId |
|
| PATCH | /kms/v1/analytics/alert-rules/:ruleId |
|
| POST | /kms/v1/analytics/alerts/:alertId/acknowledge |
|
| POST | /kms/v1/analytics/applications/record |
|
| GET | /kms/v1/analytics/keys/:keyId/summary |
|
| GET | /kms/v1/archived-keys |
|
| DELETE | /kms/v1/archived-keys/expired |
|
| GET | /kms/v1/byohsm/connections |
|
| POST | /kms/v1/byohsm/connections |
|
| DELETE | /kms/v1/byohsm/connections/:connectionId |
|
| GET | /kms/v1/byohsm/connections/:connectionId |
|
| PATCH | /kms/v1/byohsm/connections/:connectionId |
|
| GET | /kms/v1/byohsm/connections/:connectionId/operations |
|
| POST | /kms/v1/byohsm/connections/:connectionId/validate |
|
| GET | /kms/v1/byohsm/keys |
|
| POST | /kms/v1/byohsm/keys |
|
| POST | /kms/v1/byohsm/pqc/seal |
private key under a non-extractable HSM RSA-OAEP custody key (requires a customer-provisioned BYOHSM connection with an RSA encrypt/decrypt key). |
| POST | /kms/v1/byohsm/pqc/sign |
(RSA-OAEP-unwraps the content key) and sign, without the PQC key ever persisting in software. |
| POST | /kms/v1/byohsm/sign |
|
| POST | /kms/v1/byohsm/unwrap |
|
| POST | /kms/v1/byohsm/verify |
|
| POST | /kms/v1/byohsm/wrap |
|
| GET | /kms/v1/byok/:keyId |
Get BYOK key |
| POST | /kms/v1/byok/import |
Import BYOK |
| GET | /kms/v1/crypto-agility/migration-plans |
|
| POST | /kms/v1/crypto-agility/migration-plans |
|
| GET | /kms/v1/crypto-agility/migration-plans/:planId |
|
| PATCH | /kms/v1/crypto-agility/migration-plans/:planId |
|
| POST | /kms/v1/designated-grants/enrollments |
|
| POST | /kms/v1/designated-grants/keys |
|
| POST | /kms/v1/escrow/keys |
|
| GET | /kms/v1/escrow/policies |
|
| POST | /kms/v1/escrow/policies |
|
| GET | /kms/v1/escrow/policies/:policyId |
|
| PATCH | /kms/v1/escrow/policies/:policyId |
|
| GET | /kms/v1/escrow/recovery/:requestId |
|
| POST | /kms/v1/escrow/recovery/approve |
|
| POST | /kms/v1/escrow/recovery/execute |
|
| POST | /kms/v1/escrow/recovery/initiate |
|
| POST | /kms/v1/escrow/recovery/submit-share |
|
| GET | /kms/v1/health |
|
| DELETE | /kms/v1/internal/tenant/:tenantId |
|
| GET | /kms/v1/keys |
List keys |
| POST | /kms/v1/keys |
Create key |
| DELETE | /kms/v1/keys/:keyId |
for those, a non-delegated caller gets 202 + a dual-control approval request; a second distinct principal must approve (below) before the revoke executes. |
| GET | /kms/v1/keys/:keyId |
|
| GET | /kms/v1/keys/:keyId/approvals/:approvalId |
|
| POST | /kms/v1/keys/:keyId/approvals/:approvalId/approve |
Checker approves. On quorum the gated operation executes exactly once, dispatched by resourceType (maker != checker enforced by the gate). |
| POST | /kms/v1/keys/:keyId/approvals/:approvalId/reject |
|
| GET | /kms/v1/keys/:keyId/approvals/pending |
the approve path dispatches the side effect by the request's resourceType so future gated KMS operations (e.g. escrow release) can reuse it. |
| POST | /kms/v1/keys/:keyId/export |
Get key by ID |
| DELETE | /kms/v1/keys/:keyId/policy |
|
| GET | /kms/v1/keys/:keyId/policy |
|
| PUT | /kms/v1/keys/:keyId/policy |
|
| GET | /kms/v1/keys/:keyId/public-key |
hardware non-exportability not verified) and is never returned. Enables publishing/verifying signatures made by KMS-held signing keys (e.g. the PQ coverage register online-downgrade signer). |
| POST | /kms/v1/keys/:keyId/retire |
|
| POST | /kms/v1/keys/:keyId/rotate |
Rotate key |
| POST | /kms/v1/keys/:keyId/sign |
Sign data with a PQC signature key (ML-DSA / FN-DSA / SLH-DSA) Billable operation: kms.code.sign - gated by pqc-code-signing addon |
| POST | /kms/v1/keys/:keyId/unwrap |
Unwrap key |
| POST | /kms/v1/keys/:keyId/upgrade |
Upgrade key algorithm to tenant's PQC default |
| POST | /kms/v1/keys/:keyId/verify |
Verify a PQC signature |
| POST | /kms/v1/keys/:keyId/wrap |
Wrap key |
| GET | /kms/v1/keys/stats |
Key stats (includes keys count and ops this month) |
| GET | /kms/v1/recovery-requests |
|
| POST | /kms/v1/recovery-requests/:requestId/execute |
|
| POST | /kms/v1/recovery-requests/:requestId/reject |
|
| GET | /kms/v1/rotation-schedules |
|
| DELETE | /kms/v1/rotation-schedules/:scheduleId |
|
| GET | /kms/v1/rotation-schedules/:scheduleId |
|
| GET | /kms/v1/rotation-schedules/upcoming |
|
| POST | /kms/v2/custody/legacy-archives/:archivedKeyId/import |
|
| GET | /kms/v2/custody/legacy-classifications |
|
| POST | /kms/v2/custody/records |
|
| GET | /kms/v2/custody/recovery-requests |
|
| POST | /kms/v2/custody/recovery-requests |
|
| GET | /kms/v2/custody/recovery-requests/:requestId |
|
| POST | /kms/v2/custody/recovery-requests/:requestId/approve |
|
| POST | /kms/v2/custody/recovery-requests/:requestId/execute |
|
| POST | /kms/v2/custody/recovery-requests/:requestId/reject |
Observability
| Method | Path | Description |
|---|---|---|
| GET | /observability/v1/anomaly-detection/anomalies/:anomalyId |
Get specific anomaly |
| POST | /observability/v1/anomaly-detection/anomalies/:anomalyId/acknowledge |
Acknowledge anomaly |
| POST | /observability/v1/anomaly-detection/anomalies/:anomalyId/resolve |
Resolve anomaly |
| POST | /observability/v1/anomaly-detection/detect |
Detect anomalies (ad-hoc detection) |
| GET | /observability/v1/anomaly-detection/rules |
List anomaly detection rules |
| POST | /observability/v1/anomaly-detection/rules |
Create anomaly detection rule |
| DELETE | /observability/v1/anomaly-detection/rules/:ruleId |
Delete rule |
| GET | /observability/v1/anomaly-detection/rules/:ruleId |
Get specific rule |
| PATCH | /observability/v1/anomaly-detection/rules/:ruleId |
Update rule |
| GET | /observability/v1/anomaly-detection/rules/:ruleId/baselines |
Get baselines for a rule |
| POST | /observability/v1/anomaly-detection/rules/:ruleId/baselines |
Submit baseline for a rule |
| GET | /observability/v1/anomaly-detection/summary |
Get anomaly summary |
| GET | /observability/v1/costs/allocations |
Query cost allocations with aggregation |
| POST | /observability/v1/costs/allocations |
Record cost allocation |
| POST | /observability/v1/costs/allocations/batch |
Batch record cost allocations |
| GET | /observability/v1/costs/budgets |
List cost budgets |
| POST | /observability/v1/costs/budgets |
Create cost budget |
| DELETE | /observability/v1/costs/budgets/:budgetId |
Delete budget |
| GET | /observability/v1/costs/budgets/:budgetId |
Get budget with current spend |
| PATCH | /observability/v1/costs/budgets/:budgetId |
Update budget |
| GET | /observability/v1/costs/reports |
List generated cost reports |
| POST | /observability/v1/costs/reports |
Generate cost report |
| GET | /observability/v1/costs/summary |
Get cost summary (quick overview) |
| POST | /observability/v1/dashboards |
Create dashboard |
| DELETE | /observability/v1/dashboards/:dashboardId |
Delete dashboard |
| GET | /observability/v1/dashboards/:dashboardId |
Get dashboard with panels |
| PATCH | /observability/v1/dashboards/:dashboardId |
Update dashboard metadata |
| POST | /observability/v1/dashboards/:dashboardId/panels |
Add panel to dashboard |
| DELETE | /observability/v1/dashboards/:dashboardId/panels/:panelId |
Delete panel |
| PATCH | /observability/v1/dashboards/:dashboardId/panels/:panelId |
Update panel |
| GET | /observability/v1/dashboards/:dashboardId/shares |
List shares |
| POST | /observability/v1/dashboards/:dashboardId/shares |
Share dashboard |
| DELETE | /observability/v1/dashboards/:dashboardId/shares/:shareId |
Remove share |
| GET | /observability/v1/dashboards/:dashboardId/snapshots |
List snapshots |
| POST | /observability/v1/dashboards/:dashboardId/snapshots |
Create snapshot |
| GET | /observability/v1/dashboards/:dashboardId/snapshots/:snapshotId |
Get snapshot |
| POST | /observability/v1/dashboards/:dashboardId/star |
Star/unstar dashboard |
| POST | /observability/v1/dashboards/clone |
Clone dashboard from template |
| GET | /observability/v1/slo-definitions |
List SLO definitions |
| POST | /observability/v1/slo-definitions |
Database-backed SLO management endpoints (if pool is available) Create SLO definition |
| DELETE | /observability/v1/slo-definitions/:sloId |
Delete SLO definition |
| GET | /observability/v1/slo-definitions/:sloId |
Get specific SLO definition |
| PATCH | /observability/v1/slo-definitions/:sloId |
Update SLO definition |
| GET | /observability/v1/slo-definitions/:sloId/measurements |
Get SLO measurements |
| GET | /observability/v1/slos |
Get all SLOs or filter by service |
| POST | /observability/v1/slos/calculate |
Calculate SLO compliance from metric data |
| GET | /observability/v1/slos/summary |
Get SLO compliance summary |
Search
| Method | Path | Description |
|---|---|---|
| POST | /search/v1/analytics/feedback |
|
| GET | /search/v1/analytics/metrics |
|
| GET | /search/v1/analytics/quality |
|
| GET | /search/v1/analytics/queries |
|
| POST | /search/v1/analytics/queries |
|
| GET | /search/v1/analytics/queries/:queryId |
|
| GET | /search/v1/analytics/queries/:queryId/feedback |
|
| GET | /search/v1/analytics/summary |
|
| GET | /search/v1/documents |
|
| POST | /search/v1/documents/index |
both redundant and wrong for api-key callers - their tenant is in x-qnsp-api-key-* headers, not a JWT - sweep 2026-06-13 F40.) |
| GET | /search/v1/indexes |
|
| POST | /search/v1/indexes |
|
| DELETE | /search/v1/indexes/:indexName |
|
| POST | /search/v1/indexes/:indexName/query |
|
| POST | /search/v1/indexes/:indexName/vectors |
|
| DELETE | /search/v1/internal/tenant/:tenantId |
|
| GET | /search/v1/isolation/audit |
|
| POST | /search/v1/isolation/audit |
|
| GET | /search/v1/isolation/policies |
|
| POST | /search/v1/isolation/policies |
|
| DELETE | /search/v1/isolation/policies/:policyId |
|
| GET | /search/v1/isolation/policies/:policyId |
|
| PATCH | /search/v1/isolation/policies/:policyId |
|
| GET | /search/v1/isolation/summary |
|
| GET | /search/v1/isolation/verifications |
|
| POST | /search/v1/isolation/verify |
|
| GET | /search/v1/isolation/violations |
|
| POST | /search/v1/isolation/violations |
|
| POST | /search/v1/isolation/violations/:violationId/investigate |
|
| POST | /search/v1/isolation/violations/:violationId/resolve |
|
| GET | /search/v1/optimization/analyze |
Analyze index statistics for a tenant. GET /search/v1/optimization/analyze?tenantId=... |
| POST | /search/v1/optimization/rebuild |
Rebuild search indices for better performance. POST /search/v1/optimization/rebuild |
| POST | /search/v1/optimization/vacuum |
Vacuum and analyze the index. POST /search/v1/optimization/vacuum |
| GET | /search/v1/synonyms |
|
| POST | /search/v1/synonyms |
|
| DELETE | /search/v1/synonyms/:groupId |
|
| GET | /search/v1/synonyms/:groupId |
|
| PATCH | /search/v1/synonyms/:groupId |
|
| DELETE | /search/v1/synonyms/:groupId/terms |
|
| POST | /search/v1/synonyms/:groupId/terms |
|
| POST | /search/v1/synonyms/expand |
|
| GET | /search/v1/synonyms/export |
|
| POST | /search/v1/synonyms/import |
|
| GET | /search/v1/synonyms/statistics |
|
| GET | /search/v2/health/alerts |
|
| POST | /search/v2/health/alerts |
|
| POST | /search/v2/health/alerts/:alertId/acknowledge |
|
| POST | /search/v2/health/alerts/:alertId/resolve |
|
| GET | /search/v2/health/current |
|
| GET | /search/v2/health/indices/:indexName/trends |
|
| GET | /search/v2/health/maintenance |
|
| POST | /search/v2/health/maintenance |
|
| DELETE | /search/v2/health/maintenance/:windowId |
|
| GET | /search/v2/health/snapshots |
|
| POST | /search/v2/health/snapshots |
|
| GET | /search/v2/health/summary |
Security Monitoring
| Method | Path | Description |
|---|---|---|
| GET | /security/v1/admin/alerts |
|
| GET | /security/v1/alerts |
- Avoid verbs like /resolve, /ack, /mute in path names - Remain read-only for observability purposes |
| POST | /security/v1/attack-surface/analyze |
|
| POST | /security/v1/attack-surface/assets |
|
| DELETE | /security/v1/attack-surface/assets/:assetId |
|
| GET | /security/v1/attack-surface/assets/:assetId |
|
| PATCH | /security/v1/attack-surface/assets/:assetId |
|
| GET | /security/v1/attack-surface/connections |
|
| POST | /security/v1/attack-surface/connections |
|
| DELETE | /security/v1/attack-surface/connections/:connectionId |
|
| POST | /security/v1/attack-surface/simulate |
|
| GET | /security/v1/attack-surface/summary |
|
| POST | /security/v1/breaches |
Detect a breach POST /security/v1/breaches |
| GET | /security/v1/breaches/:id/notification-requirements |
Check notification requirements GET /security/v1/breaches/:id/notification-requirements |
| POST | /security/v1/breaches/:id/notify |
Create breach notification POST /security/v1/breaches/:id/notify |
| POST | /security/v1/compliance/assess |
|
| GET | /security/v1/compliance/assessments |
|
| POST | /security/v1/compliance/controls |
|
| DELETE | /security/v1/compliance/controls/:controlUuid |
|
| GET | /security/v1/compliance/controls/:controlUuid |
|
| PATCH | /security/v1/compliance/controls/:controlUuid |
|
| GET | /security/v1/compliance/controls/:controlUuid/evidence |
|
| POST | /security/v1/compliance/controls/:controlUuid/evidence |
|
| DELETE | /security/v1/compliance/controls/:controlUuid/evidence/:evidenceId |
|
| GET | /security/v1/compliance/mappings |
|
| POST | /security/v1/compliance/mappings |
|
| GET | /security/v1/compliance/summary |
|
| GET | /security/v1/crypto-monitoring/alerts |
GET /security/v1/crypto-monitoring/alerts - the tenant's recent detections, mapped to the cloud portal's CryptoAlert shape. Real rows only. |
| GET | /security/v1/crypto-monitoring/stats |
GET /security/v1/crypto-monitoring/stats - real aggregations over security_alerts. |
| POST | /security/v1/detections |
|
| POST | /security/v1/key-compromise |
POST /security/v1/key-compromise Report a key compromise incident and trigger automated remediation. |
| GET | /security/v1/key-compromise/:incidentId |
GET /security/v1/key-compromise/:incidentId Get the status of a key compromise incident. |
| GET | /security/v1/playbooks |
|
| POST | /security/v1/playbooks |
|
| DELETE | /security/v1/playbooks/:playbookId |
|
| GET | /security/v1/playbooks/:playbookId |
|
| PATCH | /security/v1/playbooks/:playbookId |
|
| POST | /security/v1/playbooks/execute |
|
| GET | /security/v1/playbooks/executions |
|
| GET | /security/v1/playbooks/executions/:executionId |
Execution detail incl. per-action dispositions + results (the portal shows WHY each containment action completed/failed/awaits approval; also the audit record of what ran). |
| GET | /security/v1/playbooks/executions/:executionId/actions |
|
| POST | /security/v1/playbooks/executions/:executionId/approve |
|
| GET | /security/v1/remediation/executions |
Get remediation execution history for an alert. GET /security/v1/remediation/executions?alertId=... |
| GET | /security/v1/remediation/rules |
List remediation rules for a tenant. GET /security/v1/remediation/rules?tenantId=... |
| POST | /security/v1/remediation/rules |
Create a remediation rule. POST /security/v1/remediation/rules |
| GET | /security/v1/siem/destinations |
|
| POST | /security/v1/siem/destinations |
|
| DELETE | /security/v1/siem/destinations/:destinationId |
|
| PATCH | /security/v1/siem/destinations/:destinationId |
|
| POST | /security/v1/siem/dispatch |
|
| POST | /security/v1/siem/format |
|
| GET | /security/v1/siem/stats |
|
| POST | /security/v1/threat-intel/bulk-check |
Bulk check indicators |
| POST | /security/v1/threat-intel/check |
Check if an indicator is malicious |
| GET | /security/v1/threat-intel/feeds |
List threat feeds |
| POST | /security/v1/threat-intel/feeds |
Create a threat feed configuration |
| POST | /security/v1/threat-intel/feeds/:feedId/refresh |
Trigger feed refresh |
| POST | /security/v1/threat-intel/indicators |
Report a new indicator |
| GET | /security/v1/threat-intel/stats |
Get threat intelligence statistics |
Storage
| Method | Path | Description |
|---|---|---|
| DELETE | /storage/internal/byok/keys/:tenantId |
|
| GET | /storage/internal/byok/keys/:tenantId |
|
| PUT | /storage/internal/byok/keys/:tenantId |
|
| POST | /storage/internal/rotations |
|
| GET | /storage/v1/admin/health |
Health check endpoint for admin operations (platform-admin only; the unauthenticated liveness probe is the top-level /storage/health, registered separately). |
| POST | /storage/v1/admin/migrate-pqc |
Migration endpoint to update existing documents with PQC metadata. |
| GET | /storage/v1/admin/test |
Diagnostic endpoint to verify admin routes are mounted (platform-admin only). |
| GET | /storage/v1/buckets |
|
| GET | /storage/v1/buckets/:bucket/objects |
|
| DELETE | /storage/v1/buckets/:bucket/objects/:key |
|
| GET | /storage/v1/buckets/:bucket/objects/:key |
|
| PUT | /storage/v1/buckets/:bucket/objects/:key |
|
| POST | /storage/v1/classification/detect-pii |
Detect PII in content (preview without storing) |
| POST | /storage/v1/classification/objects |
Classify an object |
| GET | /storage/v1/classification/objects/:objectId |
Get object classification |
| GET | /storage/v1/classification/policies |
List classification policies |
| POST | /storage/v1/classification/policies |
Create classification policy |
| DELETE | /storage/v1/classification/policies/:policyId |
Delete classification policy |
| GET | /storage/v1/classification/policies/:policyId |
Get classification policy |
| PATCH | /storage/v1/classification/policies/:policyId |
Update classification policy |
| GET | /storage/v1/classification/scans |
List scans |
| POST | /storage/v1/classification/scans |
Start classification scan |
| GET | /storage/v1/classification/scans/:scanId |
Get scan status |
| GET | /storage/v1/classification/stats |
Get classification statistics |
| GET | /storage/v1/compliance/residency/:documentId |
Get all residency proofs for a document. GET /storage/v1/compliance/residency/:documentId |
| POST | /storage/v1/compliance/residency/:documentId/verify |
Verify a residency proof. POST /storage/v1/compliance/residency/:documentId/verify |
| GET | /storage/v1/compliance/residency/region/:region |
Get residency proofs for a specific region. GET /storage/v1/compliance/residency/region/:region |
| POST | /storage/v1/compliance/residency/verify |
Batch verify multiple residency proofs. POST /storage/v1/compliance/residency/verify |
| GET | /storage/v1/documents |
|
| POST | /storage/v1/documents |
|
| DELETE | /storage/v1/documents/:documentId |
|
| GET | /storage/v1/documents/:documentId |
|
| PATCH | /storage/v1/documents/:documentId |
PATCH - Move document to a different folder |
| POST | /storage/v1/documents/:documentId/collaboration/annotations |
Create an annotation on a document. POST /storage/v1/documents/:documentId/collaboration/annotations |
| POST | /storage/v1/documents/:documentId/collaboration/comments |
Create a comment on a document. POST /storage/v1/documents/:documentId/collaboration/comments |
| POST | /storage/v1/documents/:documentId/collaboration/conflicts/resolve |
Resolve a conflict between operations. POST /storage/v1/documents/:documentId/collaboration/conflicts/resolve |
| POST | /storage/v1/documents/:documentId/collaboration/operations |
Apply an OT operation to a document. POST /storage/v1/documents/:documentId/collaboration/operations |
| POST | /storage/v1/documents/:documentId/legal-holds |
|
| DELETE | /storage/v1/documents/:documentId/legal-holds/:holdId |
|
| POST | /storage/v1/documents/:documentId/lifecycle/transitions |
|
| GET | /storage/v1/documents/:documentId/policies |
|
| PATCH | /storage/v1/documents/:documentId/policies |
|
| GET | /storage/v1/documents/:documentId/versions |
|
| GET | /storage/v1/documents/:documentId/versions/:version/annotations |
List annotations for a document version. GET /storage/v1/documents/:documentId/versions/:version/annotations |
| GET | /storage/v1/documents/:documentId/versions/:version/comments |
List comments for a document version. GET /storage/v1/documents/:documentId/versions/:version/comments |
| GET | /storage/v1/documents/:documentId/versions/:version/content |
|
| GET | /storage/v1/documents/:documentId/versions/:version/download |
|
| GET | /storage/v1/folders |
|
| POST | /storage/v1/folders |
|
| DELETE | /storage/v1/folders/:folderId |
|
| GET | /storage/v1/folders/:folderId |
|
| PATCH | /storage/v1/folders/:folderId |
|
| POST | /storage/v1/gdpr/export |
Create a GDPR export request POST /storage/v1/gdpr/export |
| GET | /storage/v1/gdpr/export/:id |
Get export status GET /storage/v1/gdpr/export/:id |
| GET | /storage/v1/gdpr/export/:id/download |
Download export GET /storage/v1/gdpr/export/:id/download |
| POST | /storage/v1/gdpr/export/:id/process |
Process export (generate export data) POST /storage/v1/gdpr/export/:id/process |
| DELETE | /storage/v1/internal/tenant/:tenantId |
|
| GET | /storage/v1/replication/configurations |
List replication configurations |
| POST | /storage/v1/replication/configurations |
Create replication configuration |
| DELETE | /storage/v1/replication/configurations/:configId |
Delete replication configuration |
| GET | /storage/v1/replication/configurations/:configId |
Get replication configuration |
| PATCH | /storage/v1/replication/configurations/:configId |
Update replication configuration |
| GET | /storage/v1/replication/health |
Health check for replication across regions |
| POST | /storage/v1/replication/objects |
Initiate object replication |
| GET | /storage/v1/replication/objects/:objectId/status |
Get object replication status |
| GET | /storage/v1/replication/stats |
Get replication statistics |
| POST | /storage/v1/replication/status/:replicationId/retry |
Retry failed replication |
| POST | /storage/v1/replication/verify |
Verify replication |
| GET | /storage/v1/retention/deletions |
List scheduled deletions |
| POST | /storage/v1/retention/deletions |
Schedule deletion |
| POST | /storage/v1/retention/deletions/:deletionId/approve |
Approve/deny deletion |
| POST | /storage/v1/retention/deletions/:deletionId/cancel |
Cancel scheduled deletion |
| POST | /storage/v1/retention/evaluate |
Read-only evaluation of a tenant-owned stored document, not caller-supplied metadata. |
| GET | /storage/v1/retention/holds |
List legal holds |
| POST | /storage/v1/retention/holds |
Create legal hold |
| POST | /storage/v1/retention/holds/:holdId/release |
Release legal hold |
| GET | /storage/v1/retention/policies |
List retention policies |
| POST | /storage/v1/retention/policies |
Create retention policy |
| DELETE | /storage/v1/retention/policies/:policyId |
Delete retention policy |
| GET | /storage/v1/retention/policies/:policyId |
Get retention policy |
| PATCH | /storage/v1/retention/policies/:policyId |
Update retention policy |
| GET | /storage/v1/retention/stats |
Get retention statistics |
| GET | /storage/v1/tiering/policies |
List tiering policies |
| POST | /storage/v1/tiering/policies |
Create a tiering policy |
| DELETE | /storage/v1/tiering/policies/:policyId |
Delete tiering policy |
| GET | /storage/v1/tiering/policies/:policyId |
Get tiering policy |
| PATCH | /storage/v1/tiering/policies/:policyId |
Update tiering policy |
| POST | /storage/v1/tiering/policies/:policyId/evaluate |
Trigger tiering evaluation (manual run) |
| GET | /storage/v1/tiering/recommendations |
Get tiering recommendations |
| GET | /storage/v1/tiering/stats |
Get tiering statistics |
| GET | /storage/v1/uploads/:uploadId |
|
| POST | /storage/v1/uploads/:uploadId/complete |
|
| PUT | /storage/v1/uploads/:uploadId/parts/:partId |
|
| GET | /storage/v1/usage |
Tenant
| Method | Path | Description |
|---|---|---|
| POST | /tenant/v1/health/alerts |
|
| POST | /tenant/v1/health/alerts/:alertId/acknowledge |
|
| POST | /tenant/v1/health/alerts/:alertId/resolve |
|
| GET | /tenant/v1/health/current |
|
| POST | /tenant/v1/health/snapshots |
|
| GET | /tenant/v1/health/snapshots/:snapshotId |
|
| GET | /tenant/v1/health/summary |
|
| GET | /tenant/v1/internal/entitlements/:tenantId |
|
| POST | /tenant/v1/internal/entitlements/:tenantId/apply |
|
| POST | /tenant/v1/invitations/accept |
Accept an invitation by its one-time token (used by the signup/onboarding flow). |
| POST | /tenant/v1/isolation/audits |
|
| GET | /tenant/v1/isolation/audits/:auditId |
|
| POST | /tenant/v1/isolation/audits/:auditId/checks/:checkId/result |
|
| GET | /tenant/v1/isolation/current-status |
|
| POST | /tenant/v1/isolation/findings/:findingId/remediate |
|
| GET | /tenant/v1/isolation/policies |
|
| POST | /tenant/v1/isolation/policies |
|
| DELETE | /tenant/v1/isolation/policies/:policyId |
|
| GET | /tenant/v1/isolation/policies/:policyId |
|
| GET | /tenant/v1/isolation/stats |
|
| GET | /tenant/v1/onboarding/stats |
|
| GET | /tenant/v1/onboarding/templates |
|
| POST | /tenant/v1/onboarding/templates |
|
| DELETE | /tenant/v1/onboarding/templates/:templateId |
|
| GET | /tenant/v1/onboarding/templates/:templateId |
|
| POST | /tenant/v1/onboarding/workflows |
|
| GET | /tenant/v1/onboarding/workflows/:workflowId |
|
| POST | /tenant/v1/onboarding/workflows/:workflowId/action |
|
| POST | /tenant/v1/onboarding/workflows/:workflowId/steps/:stepId/result |
|
| GET | /tenant/v1/public/by-domain/:domain |
|
| GET | /tenant/v1/public/by-id/:id |
Public UUID->tenant resolver. Used by the forgot-account flow (unauthenticated) to turn a tenant UUID into the human-readable slug/name for the reminder email. |
| GET | /tenant/v1/public/by-slug/:slug |
Public endpoint: Lookup tenant by slug (no auth required) Used by login flow to resolve tenant slugs to UUIDs |
| GET | /tenant/v1/quotas/current |
|
| GET | /tenant/v1/quotas/decisions |
|
| POST | /tenant/v1/quotas/forecast |
|
| GET | /tenant/v1/quotas/suggestions |
|
| POST | /tenant/v1/quotas/suggestions/:suggestionId/decide |
|
| GET | /tenant/v1/quotas/thresholds |
|
| PUT | /tenant/v1/quotas/thresholds/:quotaType/:quotaName |
|
| POST | /tenant/v1/quotas/usage |
|
| GET | /tenant/v1/records/entities |
|
| POST | /tenant/v1/records/entities |
|
| GET | /tenant/v1/records/entities/:id |
|
| PATCH | /tenant/v1/records/entities/:id |
|
| GET | /tenant/v1/records/listings |
|
| POST | /tenant/v1/records/listings |
|
| PATCH | /tenant/v1/records/listings/:id |
|
| GET | /tenant/v1/records/relationship-types |
|
| GET | /tenant/v1/records/relationships |
|
| POST | /tenant/v1/records/relationships |
|
| PATCH | /tenant/v1/records/relationships/:id |
|
| GET | /tenant/v1/records/summary |
|
| GET | /tenant/v1/tenants |
|
| POST | /tenant/v1/tenants |
|
| DELETE | /tenant/v1/tenants/:id |
primitive - used by the purge worker (after cross-service purge) and by billing orphan-tenant cleanup. Irreversible. |
| GET | /tenant/v1/tenants/:id |
|
| PATCH | /tenant/v1/tenants/:id |
|
| GET | /tenant/v1/tenants/:id/add-ons |
|
| POST | /tenant/v1/tenants/:id/add-ons |
Declarative entropy-source contract. See /trust/entropy. |
| GET | /tenant/v1/tenants/:id/approvals/:approvalId |
type (crypto-policy-change, tenant-delete, …). The approve path dispatches the side effect by the request's resourceType so new gated operations reuse this. |
| POST | /tenant/v1/tenants/:id/approvals/:approvalId/approve |
Checker approves. On quorum the gated change is applied exactly once, dispatched by resourceType (maker != checker enforced by the gate). |
| POST | /tenant/v1/tenants/:id/approvals/:approvalId/reject |
|
| POST | /tenant/v1/tenants/:id/cancel-deletion |
Cancel a pending deletion during the grace window - restores the workspace. |
| GET | /tenant/v1/tenants/:id/crypto-policy |
|
| PUT | /tenant/v1/tenants/:id/crypto-policy |
|
| GET | /tenant/v1/tenants/:id/crypto-policy-v1 |
|
| PUT | /tenant/v1/tenants/:id/crypto-policy-v1 |
|
| GET | /tenant/v1/tenants/:id/crypto-policy-v1/history |
|
| POST | /tenant/v1/tenants/:id/crypto-policy-v1/rollback |
|
| POST | /tenant/v1/tenants/:id/crypto-policy-v1/tier0/disable |
|
| POST | /tenant/v1/tenants/:id/crypto-policy-v1/tier0/enable |
|
| POST | /tenant/v1/tenants/:id/crypto-policy-v1/tier4/enable |
|
| GET | /tenant/v1/tenants/:id/domains |
|
| POST | /tenant/v1/tenants/:id/domains/verification/start |
|
| POST | /tenant/v1/tenants/:id/domains/verification/verify |
|
| GET | /tenant/v1/tenants/:id/integrations |
|
| POST | /tenant/v1/tenants/:id/integrations |
|
| PATCH | /tenant/v1/tenants/:id/integrations/:integrationId |
|
| GET | /tenant/v1/tenants/:id/invitations |
List invitations - the cloud BFF (app/api/team/management) already calls this and expects { invitations }; it previously 404'd because only POST existed. |
| POST | /tenant/v1/tenants/:id/invitations |
accepted for wire compatibility but are no longer needed - invitations no longer mutate the signed tenant record. |
| DELETE | /tenant/v1/tenants/:id/invitations/:invitationId |
Revoke a pending invitation. |
| GET | /tenant/v1/tenants/:id/join-requests |
|
| POST | /tenant/v1/tenants/:id/join-requests |
|
| POST | /tenant/v1/tenants/:id/join-requests/:requestId/review |
|
| POST | /tenant/v1/tenants/:id/schedule-deletion |
crypto-erase purge). Owner-only is enforced at the cloud BFF; the JWT/edge scope the caller to their own tenant. Status flips to pending_deletion (suspends access). |
| GET | /tenant/v1/tenants/:id/session-settings |
Get session security settings for a tenant. Returns default settings if none are configured. |
| PUT | /tenant/v1/tenants/:id/session-settings |
Update session security settings for a tenant. Allows configuring session timeout, idle warnings, tenant switch behavior, etc. |
Vault
| Method | Path | Description |
|---|---|---|
| GET | /vault/v1/dynamic-secrets/configs |
List dynamic secret configurations |
| POST | /vault/v1/dynamic-secrets/configs |
Create a dynamic secret configuration |
| POST | /vault/v1/dynamic-secrets/configs/:configId/credentials |
Request dynamic credentials - REAL provisioning via engine driver |
| GET | /vault/v1/dynamic-secrets/configs/:configId/leases |
List active credentials for a config |
| GET | /vault/v1/dynamic-secrets/engines |
Catalog endpoint - what engines are live + what's planned. Useful for portal UI to render the engine selector with implemented/planned hints. |
| POST | /vault/v1/dynamic-secrets/leases/:leaseId/renew |
Renew a credential lease |
| POST | /vault/v1/dynamic-secrets/leases/:leaseId/revoke |
Revoke a credential lease - queues for the lease-maintenance-worker. The worker will call driver.revoke and transition active → revoking → revoked. |
| GET | /vault/v1/dynamic-secrets/stats |
Get dynamic secrets statistics |
| DELETE | /vault/v1/internal/tenant/:tenantId |
|
| POST | /vault/v1/leakage-detection/incidents |
|
| GET | /vault/v1/leakage-detection/incidents/:incidentId |
|
| PATCH | /vault/v1/leakage-detection/incidents/:incidentId |
|
| GET | /vault/v1/leakage-detection/policies |
|
| POST | /vault/v1/leakage-detection/policies |
|
| DELETE | /vault/v1/leakage-detection/policies/:policyId |
|
| GET | /vault/v1/leakage-detection/policies/:policyId |
|
| POST | /vault/v1/leakage-detection/scan |
|
| GET | /vault/v1/leakage-detection/scans/:scanId |
|
| POST | /vault/v1/leakage-detection/secrets/:secretId/check |
|
| GET | /vault/v1/leakage-detection/stats |
|
| GET | /vault/v1/versioned-secrets |
── List versioned secrets (one row per secret_id; latest version's fields) ── |
| POST | /vault/v1/versioned-secrets |
|
| GET | /vault/v1/versioned-secrets/:secretId/audit |
|
| POST | /vault/v1/versioned-secrets/:secretId/compare |
|
| GET | /vault/v1/versioned-secrets/:secretId/history |
|
| POST | /vault/v1/versioned-secrets/:secretId/rollback |
|
| GET | /vault/v1/versioned-secrets/:secretId/versions/:version |
|
| PATCH | /vault/v1/versioned-secrets/:secretId/versions/:version/state |
|
| GET | /vault/v1/versioned-secrets/retention-policies |
── Named retention policies: list (with appliedSecretCount) ── |
| POST | /vault/v1/versioned-secrets/retention-policies |
── Named retention policies: create ── |
| DELETE | /vault/v1/versioned-secrets/retention-policies/:policyId |
── Named retention policies: delete (clears the link from referencing secrets) ── |
| GET | /vault/v1/versioned-secrets/stats |