{"openapi":"3.1.0","info":{"title":"Planisphere Evidence API","description":"Gate proposed AI actions against your workspace policy, record completed work, and seal each decision into a signed receipt that anyone can verify offline.","version":"0.1.0"},"servers":[{"url":"https://api.planisphere.ooo","description":"Production"}],"paths":{"/api/receipts/resolve":{"get":{"tags":["receipts"],"summary":"Resolve","operationId":"resolve_api_receipts_resolve_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"query","required":true,"schema":{"type":"string","title":"Action Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/api/receipts/{receipt_id}":{"get":{"tags":["receipts"],"summary":"Owner Read","operationId":"owner_read_api_receipts__receipt_id__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","default":"","title":"After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/api/receipts/{receipt_id}/downloads/{name}":{"get":{"tags":["receipts"],"summary":"Owner Download","operationId":"owner_download_api_receipts__receipt_id__downloads__name__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/api/receipts/{receipt_id}/preview":{"post":{"tags":["receipts"],"summary":"Preview","operationId":"preview_api_receipts__receipt_id__preview_post","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisclosureRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/api/receipts/{receipt_id}/shares":{"post":{"tags":["receipts"],"summary":"Create Share","operationId":"create_share_api_receipts__receipt_id__shares_post","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisclosureRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"get":{"tags":["receipts"],"summary":"List Shares","operationId":"list_shares_api_receipts__receipt_id__shares_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","default":"","title":"After"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/api/receipts/{receipt_id}/shares/{share_id}":{"delete":{"tags":["receipts"],"summary":"Revoke Share","operationId":"revoke_share_api_receipts__receipt_id__shares__share_id__delete","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}},{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"get":{"tags":["receipts"],"summary":"Inspect Share","operationId":"inspect_share_api_receipts__receipt_id__shares__share_id__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}},{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/api/recipient/{receipt_id}":{"get":{"tags":["receipts"],"summary":"Recipient Read","operationId":"recipient_read_api_recipient__receipt_id__get","parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Id"}},{"name":"x-receipt-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Receipt-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/api/recipient":{"get":{"tags":["receipts"],"summary":"Recipient Read","operationId":"recipient_read_api_recipient_get","parameters":[{"name":"receipt_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Id"}},{"name":"x-receipt-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Receipt-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/api/recipient/{receipt_id}/downloads/{name}":{"get":{"tags":["receipts"],"summary":"Recipient Download","operationId":"recipient_download_api_recipient__receipt_id__downloads__name__get","parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"x-receipt-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Receipt-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/account/me":{"get":{"tags":["account"],"summary":"Account Me","operationId":"account_me_account_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountMeResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"PlanisphereAccountSession":[]}]},"patch":{"tags":["account"],"summary":"Update Account Me","description":"Update signed-in organization settings and the person's own name.\n\nTwo organization fields, each behind its own capability: the display name\n(the tenant id and isolation boundary never change), and whether declared\nstatutory metadata values are retained. The person's display_name needs no\ncapability: everyone signed in may name themselves, and only themselves.\nSupplying none of them is rejected.","operationId":"update_account_me_account_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountMeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"PlanisphereAccountSession":[]}]}},"/account/logout":{"post":{"tags":["account"],"summary":"Account Logout","operationId":"account_logout_account_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountLogoutResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"PlanisphereAccountSession":[]}]}},"/account/recovery/use-standard-policy":{"post":{"tags":["account"],"summary":"Recover Standard Policy","operationId":"recover_standard_policy_account_recovery_use_standard_policy_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecoveryStandardPolicyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountMeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"PlanisphereAccountSession":[]}]}},"/account/alerts/{alert_id}/dismiss":{"post":{"tags":["account"],"summary":"Dismiss Alert","description":"Hide a refused-records alert until the next refusal (owners and admins).","operationId":"dismiss_alert_account_alerts__alert_id__dismiss_post","security":[{"PlanisphereAccountSession":[]}],"parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","title":"Alert Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountMeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/account/recovery/policy":{"get":{"tags":["account"],"summary":"Recovery Policy","operationId":"recovery_policy_account_recovery_policy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecoveryPolicySnapshot"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"PlanisphereAccountSession":[]}]}},"/account/billing/upgrade-checkout":{"post":{"tags":["account"],"summary":"Account Upgrade Checkout","description":"One-click upgrade for a signed-in sandbox tenant.\n\nThe session already names the person and the tenant, so no form: email\ncomes from the account's person row, the organization from the tenant, and\nthe tenant id is pinned from the session — a typo can never upgrade a\ndifferent tenant. Older sessions without verified identity must sign in again.","operationId":"account_upgrade_checkout_account_billing_upgrade_checkout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupCheckoutResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"PlanisphereAccountSession":[]}]}},"/account/billing/complete-upgrade":{"post":{"tags":["account"],"summary":"Account Complete Upgrade","description":"Finish a verified upgrade from the console — no signup cookies needed.\n\nA verified owner with billing:manage can finish only their own workspace's\nconfirmed checkout. The compatibility return page additionally checks its\nbrowser-bound signup cookies. Built because a real customer lost the return tab (2026-07-30)\nand the raw key would otherwise have been unreachable.","operationId":"account_complete_upgrade_account_billing_complete_upgrade_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupCompleteResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"PlanisphereAccountSession":[]}]}},"/account/billing-portal":{"post":{"tags":["account"],"summary":"Account Billing Portal","description":"Hand a signed-in production tenant to the Stripe Customer Portal.\n\nCard and invoice management live on Stripe's hosted page, so Planisphere\nnever touches payment data. Sandbox tenants, tenants without a Stripe\ncustomer, or an unconfigured Stripe return an unavailable reason (never a\n500) so the console can explain instead of dead-linking.","operationId":"account_billing_portal_account_billing_portal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountBillingPortalResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"PlanisphereAccountSession":[]}]}},"/account/records/{action_key}/data/export":{"get":{"tags":["customer data"],"summary":"Export","operationId":"export_account_records__action_key__data_export_get","security":[{"PlanisphereAccountSession":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/account/records/{action_key}/data/preview":{"post":{"tags":["customer data"],"summary":"Preview","operationId":"preview_account_records__action_key__data_preview_post","security":[{"PlanisphereAccountSession":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataScope"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/account/records/{action_key}/data/removals":{"post":{"tags":["customer data"],"summary":"Remove","operationId":"remove_account_records__action_key__data_removals_post","security":[{"PlanisphereAccountSession":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemovalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"get":{"tags":["customer data"],"summary":"History","operationId":"history_account_records__action_key__data_removals_get","security":[{"PlanisphereAccountSession":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","maxLength":180,"default":"","title":"After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/active-manifest":{"get":{"tags":["active-manifest"],"summary":"Active Manifest","operationId":"active_manifest_active_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActiveManifestResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/product-map":{"get":{"tags":["control-plane"],"summary":"Product Map","operationId":"product_map_product_map_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductMapResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/vertical-packs":{"get":{"tags":["control-plane"],"summary":"Vertical Packs","operationId":"vertical_packs_vertical_packs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerticalPackResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/pack-registry":{"get":{"tags":["control-plane"],"summary":"Pack Registry","operationId":"pack_registry_pack_registry_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackRegistryResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/catalog-map":{"get":{"tags":["control-plane"],"summary":"Catalog Map","operationId":"catalog_map_catalog_map_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogMapResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/corpus-map":{"get":{"tags":["control-plane"],"summary":"Corpus Map","operationId":"corpus_map_corpus_map_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CorpusMapResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/integration-recipes":{"get":{"tags":["control-plane"],"summary":"Integration Recipes","operationId":"integration_recipes_integration_recipes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationRecipesResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/workflow-map":{"get":{"tags":["control-plane"],"summary":"Workflow Map","operationId":"workflow_map_workflow_map_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowMapResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/evidence-packets/proof-kit":{"get":{"tags":["evidence-packets"],"summary":"Proof Kit","operationId":"proof_kit_evidence_packets_proof_kit_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidenceProofKitResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/evidence-packets/verify-seal":{"post":{"tags":["evidence-packets"],"summary":"Verify Seal","operationId":"verify_seal_evidence_packets_verify_seal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidencePacketSealVerificationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidencePacketSealVerificationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/evidence-packets/seal-bundle":{"post":{"tags":["evidence-packets"],"summary":"Seal Bundle","description":"Package a tenant's evidence packet into the offline-verifiable 4-file\nPLANIVERSE-SEAL bundle (payload + ATTESTATION.json + attestation_signature\nsidecar). Stateless and raw-safe: the posted packet is canonicalized and\nPlanisphere-signed, nothing is stored.","operationId":"seal_bundle_evidence_packets_seal_bundle_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SealBundleRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SealBundleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/evidence-packets/seal-bundle/batch":{"post":{"tags":["evidence-packets"],"summary":"Seal Bundle Batch","description":"Package many sealed records into one offline-verifiable evidence package.\n\nBody shape: a wrapped object — ``{\"action_keys\": [\"law:...\", \"...\"]}`` —\nNOT a bare array. (By contrast, POST /v1/record/batch takes a bare JSON\narray of record objects.)\n\nThe batch companion to POST /evidence-packets/seal-bundle: pass the\naction_keys from a time-range export (GET /tenant/exports/records) and get\none archive-style response — per record the same 4-file PLANIVERSE-SEAL\nbundle the single endpoint emits (byte-identical packet canonicalization),\nplus a package MANIFEST.json. Write each record's ``files`` into its\n``path`` and the manifest at the root; every bundle verifies offline\nindependently. Raw-safe and stateless: packets are re-derived from stored\nreceipt metadata, nothing new is stored or metered.\n\nAll-or-nothing: an unknown action_key fails the whole call (404 listing the\nmissing keys) — a period evidence package must never be silently partial.","operationId":"seal_bundle_batch_evidence_packets_seal_bundle_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SealBundleBatchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SealBundleBatchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/records/connections":{"get":{"tags":["tenant-exports"],"summary":"Records Connections","description":"Observed systems, with exact counts in a half-open server-time window.","operationId":"records_connections_tenant_exports_records_connections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionActivityResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/oscal":{"get":{"tags":["tenant-exports"],"summary":"Oscal Export","operationId":"oscal_export_tenant_exports_oscal_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalOscalExportResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/data-catalog":{"get":{"tags":["tenant-exports"],"summary":"Data Catalog Export","operationId":"data_catalog_export_tenant_exports_data_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalDataCatalogExportResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/ai-acquisition":{"get":{"tags":["tenant-exports"],"summary":"Ai Acquisition Export","operationId":"ai_acquisition_export_tenant_exports_ai_acquisition_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalAcquisitionExportResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/validation-report":{"get":{"tags":["tenant-exports"],"summary":"Validation Report","operationId":"validation_report_tenant_exports_validation_report_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalValidationReportResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/validation-schema-profiles":{"get":{"tags":["tenant-exports"],"summary":"Validation Schema Profiles","operationId":"validation_schema_profiles_tenant_exports_validation_schema_profiles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalValidationSchemaProfilesResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/validation-schema-manifest":{"get":{"tags":["tenant-exports"],"summary":"Validation Schema Manifest Route","operationId":"validation_schema_manifest_route_tenant_exports_validation_schema_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalValidationSchemaManifestResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/validation-schema-bindings/preview":{"post":{"tags":["tenant-exports"],"summary":"Preview Validation Schema Binding","operationId":"preview_validation_schema_binding_tenant_exports_validation_schema_bindings_preview_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalSchemaBindingRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalSchemaBindingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/validation-schema-bindings":{"post":{"tags":["tenant-exports"],"summary":"Record Validation Schema Binding","operationId":"record_validation_schema_binding_tenant_exports_validation_schema_bindings_post","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalSchemaBindingRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalSchemaBindingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"get":{"tags":["tenant-exports"],"summary":"List Validation Schema Bindings","operationId":"list_validation_schema_bindings_tenant_exports_validation_schema_bindings_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"export_kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Export Kind"}},{"name":"adapter_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adapter Key"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Active Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalSchemaBindingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/exports/validation-schema-profiles/{schema_profile_key}":{"get":{"tags":["tenant-exports"],"summary":"Validation Schema Profile","operationId":"validation_schema_profile_tenant_exports_validation_schema_profiles__schema_profile_key__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"schema_profile_key","in":"path","required":true,"schema":{"type":"string","title":"Schema Profile Key"}},{"name":"include_schema","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Schema"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalValidationSchemaProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/exports/validation-runs":{"post":{"tags":["tenant-exports"],"summary":"Validation Run","operationId":"validation_run_tenant_exports_validation_runs_post","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalValidationRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalValidationRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"get":{"tags":["tenant-exports"],"summary":"List Validation Runs","operationId":"list_validation_runs_tenant_exports_validation_runs_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"export_kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Export Kind"}},{"name":"adapter_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adapter Key"}},{"name":"binding_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Binding Key"}},{"name":"validation_status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validation Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalValidationRunsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/exports/validation-runs/overview":{"get":{"tags":["tenant-exports"],"summary":"Validation Runs Overview","operationId":"validation_runs_overview_tenant_exports_validation_runs_overview_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"export_kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Export Kind"}},{"name":"adapter_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adapter Key"}},{"name":"binding_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Binding Key"}},{"name":"validation_status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validation Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalValidationRunsOverviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/exports/validation-runs/{run_key}":{"get":{"tags":["tenant-exports"],"summary":"Get Validation Run","operationId":"get_validation_run_tenant_exports_validation_runs__run_key__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"run_key","in":"path","required":true,"schema":{"type":"string","title":"Run Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFederalValidationRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/exports/records":{"get":{"tags":["tenant-exports"],"summary":"Records Export","description":"Cursor-paginated sealed-record export for a time range.\n\nFilters and orders on the seal's signed ``recorded_at`` (server clock at\nseal time, committed into the v2 attestation content). Half-open range:\n``from <= recorded_at < to``, so adjacent period exports never overlap.\nStreaming-friendly: records arrive in stable chronological order and every\nrecord is self-contained (its own seal + ready-to-POST verify request), so\npages can be written to disk as they arrive and verified independently.\nAfter the export, POST the action_keys to /evidence-packets/seal-bundle/batch\nfor one offline-verifiable evidence package.","operationId":"records_export_tenant_exports_records_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Inclusive lower bound on the signed recorded_at (RFC 3339 with explicit UTC offset).","title":"From"},"description":"Inclusive lower bound on the signed recorded_at (RFC 3339 with explicit UTC offset)."},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Exclusive upper bound on the signed recorded_at (RFC 3339 with explicit UTC offset).","title":"To"},"description":"Exclusive upper bound on the signed recorded_at (RFC 3339 with explicit UTC offset)."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque continuation cursor from a previous page.","title":"Cursor"},"description":"Opaque continuation cursor from a previous page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","description":"Page direction. `asc` (default, the archival contract) pages oldest-first; `desc` pages newest-first — same keyset cursor, walked backward.","default":"asc","title":"Order"},"description":"Page direction. `asc` (default, the archival contract) pages oldest-first; `desc` pages newest-first — same keyset cursor, walked backward."},{"name":"pack","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"description":"Only records in this pack (action_key namespace).","title":"Pack"},"description":"Only records in this pack (action_key namespace)."},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Only records of this event/action type.","title":"Event Type"},"description":"Only records of this event/action type."},{"name":"decision","in":"query","required":false,"schema":{"anyOf":[{"enum":["allow","needs_review","block","recorded"],"type":"string"},{"type":"null"}],"description":"Only records sealed with this decision.","title":"Decision"},"description":"Only records sealed with this decision."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRecordsExportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/exports/corpus":{"get":{"tags":["tenant-exports"],"summary":"Tenant Corpus","description":"The tenant's own dictionary, and where it meets the shared corpus.\n\nTwo vocabularies, one join. The SHARED corpus is Planisphere's public\nregister of atoms — the words the product itself is built from, each with\nan audit state. The LOCAL dictionary is not authored anywhere: it is\nderived from what this tenant actually sealed — the packs, event types,\ntool classes, review routes, and declared metadata keys their own records\ncontain. Terms with no shared anchor are not errors; they are the\ntenant's own coinage, and naming them is the first honest step toward\ndefining them.","operationId":"getTenantCorpus","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Gettenantcorpus"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/records/tool-coverage":{"get":{"tags":["tenant-exports"],"summary":"Records Tool Coverage","description":"Declared toolset vs observed tool use, per system — the drift join.\n\nMirrors the sequence-coverage shape: the declared side comes from the\nmanifest (a sealed, supersedable fact), the observed side from tool_used\nrecords Planisphere itself sealed, so neither side is the operator's\nunverifiable word. undeclared_tools — observed outside the declaration —\nis the alarm; unexercised_tools is the dust. Counts, never percentages.","operationId":"getTenantToolCoverage","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Gettenanttoolcoverage"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/records/by-key":{"get":{"tags":["tenant-exports"],"summary":"Records By Key","description":"Which signing key minted which records — the rotation-day question.\n\nA key rotates and the first thing an operator needs is the blast radius:\nhow many receipts carry the outgoing key, and over what period. That is\nanswerable only from the seal stored at mint, because re-derivation signs\nwith the live signer and cannot report what signed the original.\n\nEach row is joined against the published key set, so a key that has been\nretired says so and carries the notice explaining that its receipts remain\nauthentic. A key absent from the published set reports `unknown` — the same\nstatus a forgery gets, which is exactly why retired keys are published\nforever rather than deleted.\n\nAttribution, not verification. Nothing here re-checks a signature; verify an\nindividual receipt with POST /v1/verify.","operationId":"getTenantRecordsByKey","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRecordsByKeyResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/records/coverage":{"get":{"tags":["tenant-exports"],"summary":"Records Coverage","description":"Gaps in each system's record sequence, and what that does not prove.\n\nSealed records prove that specific acts happened; they say nothing about\nacts never sent. This report does not close that gap — nothing outside the\ngeneration path can. What it does is make omission arithmetic: over the\ninterior of an observed sequence range the implied population is\n``last - first + 1``, so 900,000 records spanning 1..1,000,000 exposes\n100,000 gaps without trusting any count.\n\nThe observed side is computed here, from Planisphere's own rows, so an\noperator cannot hand in a favourable reconciliation. Every figure is a\ncount or a range — never a percentage, because one number reads as proof\nof a thing Planisphere does not observe.","operationId":"records_coverage_tenant_exports_records_coverage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRecordsCoverageResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/records/fleet":{"get":{"tags":["tenant-exports"],"summary":"Records Fleet","description":"The tenant's fleet mirrored from its receipts: records grouped by\ndeclared system_id, with the rig each one declared (model, app, lane).\nSessions stay hash-only by pack contract — never the person, only the\nmachine. Identity here is attested, not\nverified — the gap arithmetic in /records/coverage is the proof-layer\nsibling that makes a lane's completeness countable.","operationId":"records_fleet_tenant_exports_records_fleet_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantFleetResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/exports/records/attestations":{"get":{"tags":["tenant-exports"],"summary":"Records Attestations","description":"The DECLARED layer, rolled up per pack: which metadata keys the tenant\nattested (retained and readable vs committed-only), and disposals with\ntheir retained reasons. Bound testimony — timestamped and tamper-evident,\nnever verified by Planisphere. The proof layer lives in /records/summary\nand /records/coverage; keeping the two apart is the point.","operationId":"records_attestations_tenant_exports_records_attestations_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Inclusive lower bound on recorded_at.","title":"From"},"description":"Inclusive lower bound on recorded_at."},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Exclusive upper bound on recorded_at.","title":"To"},"description":"Exclusive upper bound on recorded_at."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRecordsAttestationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/exports/records/summary":{"get":{"tags":["tenant-exports"],"summary":"Records Summary","description":"Coverage counts over sealed records for a time range.\n\nGroups the same rows GET /tenant/exports/records enumerates — same signed\n``recorded_at`` filter, same half-open range (``from <= recorded_at < to``)\n— by pack and event type, with counts per decision and status. The pack is\nderived from the action_key prefix over the closed pack vocabulary\n(anything else buckets to ``other``); nothing is re-sealed.\n\nHONESTY NOTE: ``by_status`` maps each stored decision through\n``evidence_status_for_decision`` WITHOUT review resolution — a\n``needs_review`` row a reviewer has since resolved still counts as\n``pending_review`` here. The per-record surfaces (this export's sibling\n``/tenant/exports/records`` and the packet fetch paths) are review-aware;\nuse them for record-accurate statuses.\n\nEach pack's ``event_types`` list is capped at 200 distinct event types\n(``truncated: true`` when the cap hits); pack and status totals always\ncount every sealed row in the range regardless.","operationId":"records_summary_tenant_exports_records_summary_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Inclusive lower bound on the signed recorded_at (RFC 3339 with explicit UTC offset).","title":"From"},"description":"Inclusive lower bound on the signed recorded_at (RFC 3339 with explicit UTC offset)."},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Exclusive upper bound on the signed recorded_at (RFC 3339 with explicit UTC offset).","title":"To"},"description":"Exclusive upper bound on the signed recorded_at (RFC 3339 with explicit UTC offset)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRecordsSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/boundaries/crossings":{"get":{"tags":["boundaries"],"summary":"Crossings","description":"Crossings whose occurred_at falls in the window, newest first.\n\nReadable facts appear only for records sealed while the workspace retained\nmetadata; others are counted as sealed but unreadable.","operationId":"crossings_tenant_boundaries_crossings_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Window start (ISO 8601). Default: 7 days ago.","title":"Since"},"description":"Window start (ISO 8601). Default: 7 days ago."},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Window end (ISO 8601). Default: now.","title":"Until"},"description":"Window end (ISO 8601). Default: now."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrossingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/boundaries/policies":{"get":{"tags":["boundaries"],"summary":"Policies","description":"The workspace's saved boundary policies, the starters it hasn't saved, and who can guard.","operationId":"policies_tenant_boundaries_policies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoundaryPoliciesResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/boundaries/policies/{policy_id}":{"put":{"tags":["boundaries"],"summary":"Save Policy","description":"Save the next version of a boundary policy (or the first, from a starter or from scratch).","operationId":"save_policy_tenant_boundaries_policies__policy_id__put","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":48,"pattern":"^[a-z0-9][a-z0-9-]{0,47}$","title":"Policy Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoundaryPolicyWrite"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoundaryPolicy"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"delete":{"tags":["boundaries"],"summary":"Remove Policy","description":"Remove a saved policy: nothing is enforced for it any more. Its versions stay, and so do its sealed crossings.\nA starter returns to its unsaved form.","operationId":"remove_policy_tenant_boundaries_policies__policy_id__delete","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":48,"pattern":"^[a-z0-9][a-z0-9-]{0,47}$","title":"Policy Id"}},{"name":"expected_version","in":"query","required":true,"schema":{"type":"integer","minimum":1,"title":"Expected Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoundaryPolicy"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/health":{"get":{"tags":["health"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/readyz":{"get":{"tags":["health"],"summary":"Readyz","operationId":"readyz_readyz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/livez":{"get":{"tags":["health"],"summary":"Livez","operationId":"livez_livez_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LivenessResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/signin":{"post":{"tags":["signin"],"summary":"Request Signin Link","operationId":"request_signin_link_signin_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SigninRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SigninResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/signin/verify":{"post":{"tags":["signin"],"summary":"Verify Signin Link","description":"Consume a sign-in token exactly once and bind the account session.","operationId":"verify_signin_link_signin_verify_post","responses":{"303":{"description":"Successful Response"},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/setup-references":{"post":{"tags":["agent-connections"],"summary":"Setup Reference","operationId":"setup_reference_agent_setup_references_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/oauth/register":{"post":{"tags":["agent-connections"],"summary":"Register","operationId":"register_agent_oauth_register_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/oauth/authorize":{"get":{"tags":["agent-connections"],"summary":"Authorize","operationId":"authorize_agent_oauth_authorize_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/connection-attempts/{attempt_id}":{"get":{"tags":["agent-connections"],"summary":"Review","operationId":"review_agent_connection_attempts__attempt_id__get","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/connection-attempts/{attempt_id}/approve":{"post":{"tags":["agent-connections"],"summary":"Approve","operationId":"approve_agent_connection_attempts__attempt_id__approve_post","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/connection-keys/sources":{"get":{"tags":["agent-connections"],"summary":"Connection Key Sources","description":"What a new key may be allowed to read: the same list the consent screen offers.","operationId":"connection_key_sources_agent_connection_keys_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/connection-keys":{"post":{"tags":["agent-connections"],"summary":"Create Connection Key","description":"A read-only connection for a host that can only send a fixed Authorization header.\n\nMade by a signed-in person in the console; the key is shown once and stored only as a hash. Every\ncall checks the same grant as a signed-in connection: workspace membership, role, revocation, expiry.","operationId":"create_connection_key_agent_connection_keys_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/connection-attempts/{attempt_id}/deny":{"post":{"tags":["agent-connections"],"summary":"Deny","operationId":"deny_agent_connection_attempts__attempt_id__deny_post","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/oauth/token":{"post":{"tags":["agent-connections"],"summary":"Token","operationId":"token_agent_oauth_token_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/oauth/revoke":{"post":{"tags":["agent-connections"],"summary":"Revoke","operationId":"revoke_agent_oauth_revoke_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/connections":{"get":{"tags":["agent-connections"],"summary":"List Connections","operationId":"list_connections_agent_connections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/connections/{connection_id}":{"delete":{"tags":["agent-connections"],"summary":"Delete Connection","operationId":"delete_connection_agent_connections__connection_id__delete","parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","title":"Connection Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/connection":{"get":{"tags":["agent-connections"],"summary":"Own Connection","operationId":"own_connection_agent_connection_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"delete":{"tags":["agent-connections"],"summary":"Revoke Own Connection","operationId":"revoke_own_connection_agent_connection_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/import-attempts":{"post":{"tags":["agent-imports"],"summary":"Create","operationId":"create_agent_import_attempts_post","responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/import-attempts/{attempt_id}":{"get":{"tags":["agent-imports"],"summary":"Review","operationId":"review_agent_import_attempts__attempt_id__get","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/import-attempts/{attempt_id}/status":{"get":{"tags":["agent-imports"],"summary":"Status","operationId":"status_agent_import_attempts__attempt_id__status_get","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/import-attempts/{attempt_id}/approve":{"post":{"tags":["agent-imports"],"summary":"Approve","operationId":"approve_agent_import_attempts__attempt_id__approve_post","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/import-attempts/{attempt_id}/deny":{"post":{"tags":["agent-imports"],"summary":"Deny","operationId":"deny_agent_import_attempts__attempt_id__deny_post","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/agent/import-attempts/{attempt_id}/content":{"put":{"tags":["agent-imports"],"summary":"Save","operationId":"save_agent_import_attempts__attempt_id__content_put","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"get":{"tags":["agent-imports"],"summary":"Read","operationId":"read_agent_import_attempts__attempt_id__content_get","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/account/imports":{"get":{"tags":["agent-imports"],"summary":"Listing","operationId":"listing_account_imports_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/account/imports/{attempt_id}":{"get":{"tags":["agent-imports"],"summary":"Account Read","operationId":"account_read_account_imports__attempt_id__get","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"delete":{"tags":["agent-imports"],"summary":"Delete","operationId":"delete_account_imports__attempt_id__delete","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"put":{"tags":["agent-imports"],"summary":"Replace","operationId":"replace_account_imports__attempt_id__put","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/account/imports/{attempt_id}/export":{"get":{"tags":["agent-imports"],"summary":"Export","operationId":"export_account_imports__attempt_id__export_get","parameters":[{"name":"attempt_id","in":"path","required":true,"schema":{"type":"string","title":"Attempt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/signup/readiness":{"get":{"tags":["signup"],"summary":"Signup Readiness","operationId":"signup_readiness_signup_readiness_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupReadinessResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/signup/checkout":{"post":{"tags":["signup"],"summary":"Create Checkout","operationId":"create_checkout_signup_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupCheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupCheckoutResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"PlanisphereAccountSession":[]}]}},"/signup/test-key":{"post":{"tags":["signup"],"summary":"Issue Sandbox Key","description":"Compatibility key endpoint, scoped to an email-verified sandbox account.","operationId":"issue_sandbox_key_signup_test_key_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SandboxKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SandboxKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"PlanisphereAccountSession":[]}]}},"/signup/claim-key":{"post":{"tags":["signup"],"summary":"Claim Signup Key","operationId":"claim_signup_key_signup_claim_key_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupClaimKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupCompleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"PlanisphereAccountSession":[]}]}},"/signup/status":{"post":{"tags":["signup"],"summary":"Signup Status","operationId":"signup_status_signup_status_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupStatusRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/.well-known/planisphere-keys.json":{"get":{"tags":["trust-anchor"],"summary":"Published verifying keys (trust anchor for seal verification)","operationId":"getVerifyingKeys","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanisphereVerifyingKeysResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/trust/epochs":{"get":{"tags":["trust-anchor"],"summary":"The public pin ledger: SHA-chained roll-up epochs","description":"The continuity root beside the verifying keys' authenticity root.\nAnyone can refold the chain: each epoch_digest commits to its content and\nprev_epoch_digest, back to genesis. Pins only — no member identities.","operationId":"listTrustEpochs","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Before"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrustEpochsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/trust/records/{action_key}":{"get":{"tags":["trust-anchor"],"summary":"Public record answer: existence, standing, and the anchoring pin","description":"The burn-chain answer for anyone holding an action_key. Default is\npin-only: existence, standing (a burned record shouts AUTHENTIC BUT\nEXPIRED), and the epoch pin that anchors it. The tenant is named only\nwhen that operator opted into public proof disclosure.","operationId":"getTrustRecord","parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrustRecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/me":{"get":{"tags":["tenant"],"summary":"Get Me","operationId":"get_me_tenant_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantMeResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/content-keys":{"get":{"tags":["tenant"],"summary":"Tenant Content Keys","description":"Content-key fingerprints in use: which keys open this tenant's sealed\ncontent, as attribution — never key material, which never reaches us.","operationId":"getTenantContentKeys","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantContentKeysResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/usage":{"get":{"tags":["tenant"],"summary":"Tenant Usage","description":"Credits used vs the free plan's monthly allowance, so the limit never lands as a cold 402.","operationId":"tenant_usage_tenant_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantUsageResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/billing/spend":{"get":{"tags":["tenant"],"summary":"Tenant Billing Spend","description":"This month's credits by kind and delivery status, priced at the published rate, plus the keep\ncharge the held records will accrue at the start of next month and how many each lifespan expires.\n\nEstimates from Planisphere's own meter: the Stripe invoice is authoritative.","operationId":"tenant_billing_spend_tenant_billing_spend_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantBillingSpendResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/sample-record":{"post":{"tags":["tenant"],"summary":"Seal Sample Record","description":"Seal one real sample receipt as the signed-in tenant — the in-console\n'aha' so a new user sees a verifiable receipt without wiring an agent or\nminting a key. It is a genuine seal (counts against the free credits and\nmeters like any record): the whole point is that it truly verifies. The\nsession principal seals as itself, exactly as the burn/bundle surfaces do.","operationId":"seal_sample_record_tenant_sample_record_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantSampleRecordResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/policy":{"get":{"tags":["tenant"],"summary":"Get Policy","operationId":"get_policy_tenant_policy_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"policy_pack","in":"query","required":false,"schema":{"type":"string","default":"law/default-us-legal-ai-supervision","title":"Policy Pack"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantPolicyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"put":{"tags":["tenant"],"summary":"Update Policy","operationId":"update_policy_tenant_policy_put","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"policy_pack","in":"query","required":false,"schema":{"type":"string","default":"law/default-us-legal-ai-supervision","title":"Policy Pack"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantPolicyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantPolicyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/policy/options":{"get":{"tags":["tenant"],"summary":"Get Policy Options","operationId":"get_policy_options_tenant_policy_options_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"policy_pack","in":"query","required":false,"schema":{"type":"string","default":"law/default-us-legal-ai-supervision","title":"Policy Pack"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantPolicyOptionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/policy/preview":{"post":{"tags":["tenant"],"summary":"Preview Policy","operationId":"preview_policy_tenant_policy_preview_post","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"policy_pack","in":"query","required":false,"schema":{"type":"string","default":"law/default-us-legal-ai-supervision","title":"Policy Pack"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantPolicyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantPolicyPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/policy/receipts":{"get":{"tags":["tenant"],"summary":"List Policy Receipts","operationId":"list_policy_receipts_tenant_policy_receipts_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"policy_pack","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy Pack"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantPolicyReceiptsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/audit-export":{"get":{"tags":["tenant"],"summary":"Audit Export","operationId":"audit_export_tenant_audit_export_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantAuditExportResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/api-keys":{"get":{"tags":["tenant"],"summary":"List Api Keys","operationId":"list_api_keys_tenant_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantApiKeysResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]},"post":{"tags":["tenant"],"summary":"Issue Api Key","operationId":"issue_api_key_tenant_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantApiKeyIssueRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantApiKeyIssueResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/api-keys/{key_id}":{"delete":{"tags":["tenant"],"summary":"Revoke Api Key","operationId":"revoke_api_key_tenant_api_keys__key_id__delete","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantApiKeyRevokeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/integrations":{"get":{"tags":["tenant"],"summary":"List Integrations","operationId":"list_integrations_tenant_integrations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIntegrationsResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/integrations/options":{"get":{"tags":["tenant"],"summary":"Integration Options","operationId":"integration_options_tenant_integrations_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIntegrationOptionsResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/integrations/install-manifest":{"get":{"tags":["tenant"],"summary":"Integration Install Manifest","operationId":"integration_install_manifest_tenant_integrations_install_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIntegrationInstallManifestResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/integrations/security-policy":{"get":{"tags":["tenant"],"summary":"Integration Security Policy","operationId":"integration_security_policy_tenant_integrations_security_policy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIntegrationSecurityPolicyResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/integrations/readiness":{"get":{"tags":["tenant"],"summary":"Integration Readiness","operationId":"integration_readiness_tenant_integrations_readiness_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIntegrationsReadinessResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/integrations/setup-plan":{"get":{"tags":["tenant"],"summary":"Integration Setup Plan","operationId":"integration_setup_plan_tenant_integrations_setup_plan_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIntegrationsSetupPlanResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/integrations/docs-package":{"get":{"tags":["tenant"],"summary":"Integration Docs Package","operationId":"integration_docs_package_tenant_integrations_docs_package_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIntegrationDocsPackageResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/integrations/provider-walkthrough":{"get":{"tags":["tenant"],"summary":"Integration Provider Walkthrough","operationId":"integration_provider_walkthrough_tenant_integrations_provider_walkthrough_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIntegrationProviderWalkthroughResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/integrations/{channel}/{target}":{"put":{"tags":["tenant"],"summary":"Upsert Integration","operationId":"upsert_integration_tenant_integrations__channel___target__put","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"channel","in":"path","required":true,"schema":{"type":"string","title":"Channel"}},{"name":"target","in":"path","required":true,"schema":{"type":"string","title":"Target"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIntegrationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIntegrationUpsertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"get":{"tags":["tenant"],"summary":"Get Integration","operationId":"get_integration_tenant_integrations__channel___target__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"channel","in":"path","required":true,"schema":{"type":"string","title":"Channel"}},{"name":"target","in":"path","required":true,"schema":{"type":"string","title":"Target"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIntegrationItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"delete":{"tags":["tenant"],"summary":"Delete Integration","operationId":"delete_integration_tenant_integrations__channel___target__delete","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"channel","in":"path","required":true,"schema":{"type":"string","title":"Channel"}},{"name":"target","in":"path","required":true,"schema":{"type":"string","title":"Target"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantIntegrationDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/integrations/webhook/{target}/deliveries":{"get":{"tags":["tenant"],"summary":"List Webhook Deliveries","description":"Per-delivery status for a tenant's event-webhook target, newest first.","operationId":"list_webhook_deliveries_tenant_integrations_webhook__target__deliveries_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"target","in":"path","required":true,"schema":{"type":"string","title":"Target"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"enum":["pending","delivered","failed"],"type":"string"},{"type":"null"}],"description":"Filter deliveries by outcome.","title":"Status"},"description":"Filter deliveries by outcome."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantWebhookDeliveriesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/tenant/anchor-status":{"get":{"tags":["tenant"],"summary":"Tenant Anchor Status","description":"Where this tenant's chain head stands against the mirror chain: the\nhead itself, the newest epoch that anchors it, and how many links await\nthe next hourly roll-up.","operationId":"tenant_anchor_status_tenant_anchor_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantAnchorStatusResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/anchor-disclosure":{"put":{"tags":["tenant"],"summary":"Put Anchor Disclosure","description":"The operator's disclosure switch: opt in (or back out) of the mirror\nchain serving this tenant's full, tenant-naming proofs publicly. Owner-\ngrade: disclosure is chosen, never inherited.","operationId":"put_anchor_disclosure_tenant_anchor_disclosure_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantAnchorDisclosureUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantAnchorStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/records/retention":{"get":{"tags":["tenant"],"summary":"List Retention Rules","description":"The tenant's lifespan rules. Empty list = nothing ever auto-expires.","operationId":"list_retention_rules_tenant_records_retention_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRetentionRulesResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]},"put":{"tags":["tenant"],"summary":"Put Retention Rule","description":"Set (or clear, with lifespan_days=null) one lifespan rule.\n\nA lifespan is a standing disposal authorization: once a covered record\noutlives it, the scheduler sweep expires it exactly like a manual burn —\na sealed, metered records_expired disposal, reason \"retention_policy\" —\nwithin a day, so stragglers share one disposal.\nHence the records:dispose capability.","operationId":"put_retention_rule_tenant_records_retention_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRetentionRuleUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRetentionRulesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/tenant/records/expire":{"post":{"tags":["tenant"],"summary":"Expire Records","description":"Burn: seal an expiry record, then revoke the targets' standing.\n\nNothing is deleted. The targets stay in the chain and their signatures\nstill verify; Planisphere stops endorsing them as usable evidence, and the\ndisposal itself is a sealed, metered records_expired receipt per pack —\nthe chain of what gets thrown away. Idempotent per record: an expired\nrecord cannot be re-expired.","operationId":"expire_records_tenant_records_expire_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRecordsExpireRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantRecordsExpireResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/integrations/callbacks/{tenant_id}/slack/{target}/open-review-modal":{"post":{"tags":["integrations"],"summary":"Slack Open Review Modal","operationId":"slack_open_review_modal_integrations_callbacks__tenant_id__slack__target__open_review_modal_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","title":"Tenant Id"}},{"name":"target","in":"path","required":true,"schema":{"type":"string","title":"Target"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackModalOpenHandoffResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/integrations/callbacks/{tenant_id}/{channel}/{target}/review-decision":{"post":{"tags":["integrations"],"summary":"Provider Review Callback","operationId":"provider_review_callback_integrations_callbacks__tenant_id___channel___target__review_decision_post","parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","title":"Tenant Id"}},{"name":"channel","in":"path","required":true,"schema":{"type":"string","title":"Channel"}},{"name":"target","in":"path","required":true,"schema":{"type":"string","title":"Target"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderCallbackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/law/grading-mirror":{"get":{"tags":["law"],"summary":"Grading Mirror","operationId":"grading_mirror_law_grading_mirror_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LawGradingMirrorResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/law/verify-mirror-seal":{"post":{"tags":["law"],"summary":"Verify Mirror Seal","operationId":"verify_mirror_seal_law_verify_mirror_seal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LawMirrorSealVerificationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LawMirrorSealVerificationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/law/proposed-action":{"post":{"tags":["law"],"summary":"Proposed Action","operationId":"proposed_action_law_proposed_action_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposedActionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposedActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/law/review-queue":{"get":{"tags":["law"],"summary":"Review Queue","operationId":"review_queue_law_review_queue_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"enum":["pending","handled","all"],"type":"string","description":"pending (default) hides handled work; handled shows resolved items; all shows everything.","default":"pending","title":"Status"},"description":"pending (default) hides handled work; handled shows resolved items; all shows everything."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewQueueResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/law/review-decision":{"post":{"tags":["law"],"summary":"Review Decision","operationId":"review_decision_law_review_decision_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewDecisionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewDecisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/law/evidence-packets/{action_key}":{"get":{"tags":["law"],"summary":"Evidence Packet","operationId":"evidence_packet_law_evidence_packets__action_key__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidencePacketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/defense/proposed-action":{"post":{"tags":["manifest-verticals"],"summary":"Defense Proposed Action","operationId":"defense_proposed_action_defense_proposed_action_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerticalProposedActionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposedActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/defense/review-queue":{"get":{"tags":["manifest-verticals"],"summary":"Defense Review Queue","operationId":"defense_review_queue_defense_review_queue_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"enum":["pending","handled","all"],"type":"string","description":"pending (default) hides handled work; handled shows resolved items; all shows everything.","default":"pending","title":"Status"},"description":"pending (default) hides handled work; handled shows resolved items; all shows everything."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewQueueResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/defense/review-decision":{"post":{"tags":["manifest-verticals"],"summary":"Defense Review Decision","operationId":"defense_review_decision_defense_review_decision_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewDecisionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewDecisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/defense/evidence-packets/{action_key}":{"get":{"tags":["manifest-verticals"],"summary":"Defense Evidence Packet","operationId":"defense_evidence_packet_defense_evidence_packets__action_key__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidencePacketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/medicine/proposed-action":{"post":{"tags":["manifest-verticals"],"summary":"Medicine Proposed Action","operationId":"medicine_proposed_action_medicine_proposed_action_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerticalProposedActionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposedActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/medicine/review-queue":{"get":{"tags":["manifest-verticals"],"summary":"Medicine Review Queue","operationId":"medicine_review_queue_medicine_review_queue_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"enum":["pending","handled","all"],"type":"string","description":"pending (default) hides handled work; handled shows resolved items; all shows everything.","default":"pending","title":"Status"},"description":"pending (default) hides handled work; handled shows resolved items; all shows everything."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewQueueResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/medicine/review-decision":{"post":{"tags":["manifest-verticals"],"summary":"Medicine Review Decision","operationId":"medicine_review_decision_medicine_review_decision_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewDecisionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewDecisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/medicine/evidence-packets/{action_key}":{"get":{"tags":["manifest-verticals"],"summary":"Medicine Evidence Packet","operationId":"medicine_evidence_packet_medicine_evidence_packets__action_key__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidencePacketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/education/proposed-action":{"post":{"tags":["manifest-verticals"],"summary":"Education Proposed Action","operationId":"education_proposed_action_education_proposed_action_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerticalProposedActionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposedActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/education/review-queue":{"get":{"tags":["manifest-verticals"],"summary":"Education Review Queue","operationId":"education_review_queue_education_review_queue_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"enum":["pending","handled","all"],"type":"string","description":"pending (default) hides handled work; handled shows resolved items; all shows everything.","default":"pending","title":"Status"},"description":"pending (default) hides handled work; handled shows resolved items; all shows everything."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewQueueResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/education/review-decision":{"post":{"tags":["manifest-verticals"],"summary":"Education Review Decision","operationId":"education_review_decision_education_review_decision_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewDecisionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewDecisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/education/evidence-packets/{action_key}":{"get":{"tags":["manifest-verticals"],"summary":"Education Evidence Packet","operationId":"education_evidence_packet_education_evidence_packets__action_key__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidencePacketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/us-regulatory/proposed-action":{"post":{"tags":["manifest-verticals"],"summary":"Us Regulatory Proposed Action","operationId":"us_regulatory_proposed_action_us_regulatory_proposed_action_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerticalProposedActionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposedActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/us-regulatory/review-queue":{"get":{"tags":["manifest-verticals"],"summary":"Us Regulatory Review Queue","operationId":"us_regulatory_review_queue_us_regulatory_review_queue_get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"enum":["pending","handled","all"],"type":"string","description":"pending (default) hides handled work; handled shows resolved items; all shows everything.","default":"pending","title":"Status"},"description":"pending (default) hides handled work; handled shows resolved items; all shows everything."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewQueueResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/us-regulatory/review-decision":{"post":{"tags":["manifest-verticals"],"summary":"Us Regulatory Review Decision","operationId":"us_regulatory_review_decision_us_regulatory_review_decision_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewDecisionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewDecisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/us-regulatory/evidence-packets/{action_key}":{"get":{"tags":["manifest-verticals"],"summary":"Us Regulatory Evidence Packet","operationId":"us_regulatory_evidence_packet_us_regulatory_evidence_packets__action_key__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidencePacketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/eu-ai-act/evidence-packets/{action_key}":{"get":{"tags":["manifest-verticals"],"summary":"Eu Ai Act Evidence Packet","operationId":"eu_ai_act_evidence_packet_eu_ai_act_evidence_packets__action_key__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidencePacketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/ca-sb942/evidence-packets/{action_key}":{"get":{"tags":["manifest-verticals"],"summary":"Ca Sb942 Evidence Packet","operationId":"ca_sb942_evidence_packet_ca_sb942_evidence_packets__action_key__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidencePacketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/ai-provenance/evidence-packets/{action_key}":{"get":{"tags":["manifest-verticals"],"summary":"Ai Provenance Evidence Packet","operationId":"ai_provenance_evidence_packet_ai_provenance_evidence_packets__action_key__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidencePacketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/routing/outbox":{"get":{"tags":["routing"],"summary":"Route Outbox","operationId":"route_outbox_routing_outbox_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/routing/outbox/summary":{"get":{"tags":["routing"],"summary":"Route Outbox Summary","operationId":"route_outbox_summary_routing_outbox_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxSummaryResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/routing/outbox/alerts":{"get":{"tags":["routing"],"summary":"Route Outbox Alerts","operationId":"route_outbox_alerts_routing_outbox_alerts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxAlertsResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/routing/outbox/notifications/preview":{"get":{"tags":["routing"],"summary":"Preview Outbox Notifications","operationId":"preview_outbox_notifications_routing_outbox_notifications_preview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxNotificationResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/routing/outbox/notifications/emit":{"post":{"tags":["routing"],"summary":"Emit Outbox Notifications","operationId":"emit_outbox_notifications_routing_outbox_notifications_emit_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxNotificationResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/routing/outbox/retry-plan":{"get":{"tags":["routing"],"summary":"Route Outbox Retry Plan","operationId":"route_outbox_retry_plan_routing_outbox_retry_plan_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxRetryPlanResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/routing/outbox/runs":{"get":{"tags":["routing"],"summary":"Route Outbox Scheduler Runs","operationId":"route_outbox_scheduler_runs_routing_outbox_runs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxSchedulerRunsResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/routing/outbox/{dispatch_key}":{"get":{"tags":["routing"],"summary":"Get Route Dispatch","operationId":"get_route_dispatch_routing_outbox__dispatch_key__get","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"dispatch_key","in":"path","required":true,"schema":{"type":"string","title":"Dispatch Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteDispatchItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/routing/outbox/process":{"post":{"tags":["routing"],"summary":"Process Route Outbox Batch","operationId":"process_route_outbox_batch_routing_outbox_process_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxProcessRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxProcessResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/routing/outbox/tick":{"post":{"tags":["routing"],"summary":"Tick Route Outbox Scheduler","operationId":"tick_route_outbox_scheduler_routing_outbox_tick_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxTickRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxTickResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/routing/outbox/{dispatch_key}/dead-letter":{"post":{"tags":["routing"],"summary":"Dead Letter Route Dispatch","operationId":"dead_letter_route_dispatch_routing_outbox__dispatch_key__dead_letter_post","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"dispatch_key","in":"path","required":true,"schema":{"type":"string","title":"Dispatch Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxDeadLetterRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxDeadLetterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/routing/outbox/{dispatch_key}/requeue":{"post":{"tags":["routing"],"summary":"Requeue Route Dispatch","operationId":"requeue_route_dispatch_routing_outbox__dispatch_key__requeue_post","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"dispatch_key","in":"path","required":true,"schema":{"type":"string","title":"Dispatch Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxRequeueRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxRequeueResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/routing/outbox/{dispatch_key}/simulate-callback":{"post":{"tags":["routing"],"summary":"Simulate Route Callback","operationId":"simulate_route_callback_routing_outbox__dispatch_key__simulate_callback_post","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"dispatch_key","in":"path","required":true,"schema":{"type":"string","title":"Dispatch Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxSimulateCallbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteOutboxSimulateCallbackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/routing/outbox/{dispatch_key}/deliver":{"post":{"tags":["routing"],"summary":"Deliver Route Dispatch","operationId":"deliver_route_dispatch_routing_outbox__dispatch_key__deliver_post","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"dispatch_key","in":"path","required":true,"schema":{"type":"string","title":"Dispatch Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteDeliveryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/gate":{"post":{"tags":["v1-legos"],"summary":"Gate","description":"Gate a proposed action against ``pack`` (legos-first alias).\n\nWraps ``POST /{vertical}/proposed-action``: reads ``pack`` from the body and\ndispatches to the identical underlying handler with ``pack`` as the vertical\nargument, returning the identical ``ProposedActionResponse``.\n\nSafe to retry: an ``Idempotency-Key`` header makes a repeat call return the\noriginal stored response (and metering stays once). The same key reused with\na different body is rejected 422.","operationId":"gate","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1GateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposedActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/boundaries/starters":{"get":{"tags":["v1-legos"],"summary":"Starters","description":"The starter frame every workspace may build from, unsaved. Public: it describes the product, not a workspace.","operationId":"boundaryStarters","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Boundarystarters"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/boundaries/rules":{"get":{"tags":["v1-legos"],"summary":"Rules","description":"The workspace's saved policies, compiled to the patterns a hook matches before it asks.","operationId":"boundaryRules","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"starters","in":"query","required":false,"schema":{"type":"boolean","description":"Also the starters this workspace hasn't saved, marked saved=false, for a reader that sorts past activity into boundaries. A hook leaves this off: only a saved policy is enforced.","default":false,"title":"Starters"},"description":"Also the starters this workspace hasn't saved, marked saved=false, for a reader that sorts past activity into boundaries. A hook leaves this off: only a saved policy is enforced."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/boundaries/crossings":{"post":{"tags":["v1-legos"],"summary":"Cross","description":"Ask whether a tool call may cross. A call that crosses no saved boundary is let through and nothing is kept.","operationId":"crossBoundary","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrossingRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrossingDecision"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/v1/system/manifest":{"get":{"tags":["v1-legos"],"summary":"System Manifest","description":"The manifest read-back: the newest active system_declared record for a\nsystem_id. Declarations chain by supersession, so assigning a lane is a\nsealed act and reassigning it is another — an agent that fetches its\nmanifest at session start is routing through the evidence layer itself.\nUndeclared systems get declared=false, not a 404: for a fleet hook, \"no\nassignment yet\" is an answer, not an error.","operationId":"system_manifest","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"system_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"title":"System Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemManifestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/record":{"post":{"tags":["v1-legos"],"summary":"Record","description":"Attest a COMPLETED act and seal it as a terminal ``recorded`` receipt.\n\nNot a gate: no review routing, no pause semantics. Safe to retry — an\nidentical body re-seals the identical receipt (same recorded_at, same\nattestation_root) and meters nothing new; an ``Idempotency-Key`` header\nadditionally replays the stored response, and the same key reused with a\ndifferent body is rejected 422.","operationId":"record","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1RecordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1RecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/record/batch":{"post":{"tags":["v1-legos"],"summary":"Record Batch","description":"Attest a batch of completed acts: per-item sealed results, one meter\nevent per sealed record at the stamp tier (identical to single-record\nmetering — the meter digest is derived from each record's own seal).\n\nBody shape: a BARE JSON array of record objects — ``[{...}, {...}]`` —\neach item the exact POST /v1/record body; there is no wrapper key. (By\ncontrast, POST /evidence-packets/seal-bundle/batch takes a wrapped object:\n``{\"action_keys\": [\"...\"]}``.)","operationId":"recordBatch","requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/V1RecordRequest"},"type":"array","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1RecordBatchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/v1/reviews":{"post":{"tags":["v1-legos"],"summary":"Record Review","description":"Route lego (write): record a review decision for the given ``pack``.\n\nA signed-in human decides reviews through their session (no API key); the\ncapability check is the server-side authorization boundary.","operationId":"recordReview","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ReviewDecisionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewDecisionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"get":{"tags":["v1-legos"],"summary":"Review Queue","description":"Route lego (read): list the review queue for the given ``pack``, or fetch one item by ``action_key``.","operationId":"listReviews","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"pack","in":"query","required":true,"schema":{"enum":["law","defense","medicine","education","us-regulatory","ai-provenance"],"type":"string","title":"Pack"}},{"name":"status","in":"query","required":false,"schema":{"enum":["pending","handled","all"],"type":"string","description":"pending (default) hides handled work; handled shows resolved items; all shows everything.","default":"pending","title":"Status"},"description":"pending (default) hides handled work; handled shows resolved items; all shows everything."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"action_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":180},{"type":"null"}],"description":"Only this record: the page holds it when it is review work in this pack that matches the status filter, and is empty otherwise. Use status=all to fetch one review whatever its state.","title":"Action Key"},"description":"Only this record: the page holds it when it is review work in this pack that matches the status filter, and is empty otherwise. Use status=all to fetch one review whatever its state."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewQueueResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/records/{action_key}":{"get":{"tags":["v1-legos"],"summary":"Get Record","description":"Fetch a sealed evidence record by ``action_key`` (legos-first alias).\n\nWraps ``GET /{vertical}/evidence-packets/{action_key}``: resolves ``pack``\n(from ``?pack=`` or the ``action_key`` prefix) and dispatches to the identical\nunderlying handler with ``pack`` as the vertical argument, returning the\nidentical ``EvidencePacketResponse``.","operationId":"getRecord","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"pack","in":"query","required":false,"schema":{"anyOf":[{"enum":["law","defense","medicine","education","us-regulatory","eu-ai-act","ca-sb942","cn-ai-labelling","in-it-rules","kr-ai-framework","ai-provenance"],"type":"string"},{"type":"null"}],"description":"Policy pack the record belongs to (replaces the legacy path prefix). Optional: derived from the action_key prefix when omitted.","examples":["defense","law"],"title":"Pack"},"description":"Policy pack the record belongs to (replaces the legacy path prefix). Optional: derived from the action_key prefix when omitted."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidencePacketResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/records/{action_key}/content":{"post":{"tags":["v1-legos"],"summary":"Attach Record Content","description":"Attach client-side-encrypted content to a record under a classification.\n\nRaw-safe/BYOK: the body carries CIPHERTEXT only; the key never reaches the\nserver. A principal cannot classify content above its own clearance.\n\nThe envelope is self-describing (envelope_version/kdf/key_id) so a reader\ncan decrypt without out-of-band knowledge of how the key was made.","operationId":"attachRecordContent","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentAttachRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentAttachResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}},"get":{"tags":["v1-legos"],"summary":"Get Record Content","description":"Release the ciphertext ONLY if the caller's clearance dominates the\ncontent's classification (MAC). Otherwise 403 — the caller keeps the seal.\n\nThe response carries the full envelope (envelope_version/kdf/key_id) so the\nclient knows how to derive the key, not merely which cipher was used.","operationId":"getRecordContent","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentReleaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/records/{action_key}/inclusion-proof":{"get":{"tags":["v1-legos"],"summary":"Get Record Inclusion Proof","description":"The canonical roll-up inclusion proof for one sealed record.\n\nAssembles, server-side, the same offline two-level bundle the operator CLI\nemits: (outer) a Merkle inclusion proof of this tenant's chain head against\nthe canonical epoch root, and (inner) the tenant's evidence chain up to\nthat head, which contains this record's attestation_root at ``record.chain_seq``.\nVerify offline with planisphere_api.canonical_chain.verify_inclusion_bundle\n(or re-derive both levels from the declared construction) — no key material\nor Planisphere service required.\n\n409 when the record has not yet been rolled up into a canonical epoch. The\nhosted roll-up runs hourly, so a brand-new record is normally provable\nwithin the hour; the 409 detail carries ``epoch_cadence``,\n``next_epoch_hint``, and an ``estimated_next_epoch_at`` timestamp.","operationId":"getRecordInclusionProof","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1RecordInclusionProofResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/records/{action_key}/sub-events/{index}":{"get":{"tags":["v1-legos"],"summary":"Get Sub Event Proof","description":"One step's proof, verifiable offline with ``planisphere_api.crystal.verify_sub_event``.\n\nThe bundle holds the step's labels and salted digest (never its text), its RFC 9162 inclusion path, the RFC 9942\nCOSE receipt (the root's signature with this step's proof), the tick's committed fields and its seal. Reveal the\nstep by handing over salt ‖ bytes alongside it; the verifier recomputes the digest.","operationId":"getSubEventProof","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","title":"Index"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Getsubeventproof"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/records/{action_key}/steps/{index}":{"get":{"tags":["v1-legos"],"summary":"Get Step Content","description":"Release one step's ciphertext with the wrapped keys addressed to the caller's own device, and no others.\n\nThe clearance check runs first; below it the caller keeps the seal and gets no ciphertext. A device with no wrap\nfor this step — say an auditor granted step 3 asking for step 4 — gets 403 and no ciphertext either.","operationId":"getStepContent","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","title":"Index"}},{"name":"device","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{32}$","title":"Device"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Getstepcontent"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/records/{action_key}/grants":{"post":{"tags":["v1-legos"],"summary":"Grant Content","description":"Reveal one turn, or one step of it, to one device — without handing over any other key.\n\nThe grant is its own sealed ``content_granted`` record (one credit), committing a digest of the wrap, the scope\nand the recipient's key fingerprint. Only a caller cleared for the content may grant it.","operationId":"grantStepContent","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"action_key","in":"path","required":true,"schema":{"type":"string","title":"Action Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Grantstepcontent"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/crystal/devices":{"get":{"tags":["v1-legos"],"summary":"List Devices","operationId":"listDeviceKeys","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Listdevicekeys"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]},"post":{"tags":["v1-legos"],"summary":"Register Device","description":"Register the public half of one of your devices' keys. The private half stays in its Keychain.","operationId":"registerDeviceKey","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Registerdevicekey"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/v1/crystal/team-key":{"post":{"tags":["v1-legos"],"summary":"Register Team Key","description":"Register the team key's public half. Its private half stays with the team (Keychain, KMS, printed recovery).","operationId":"registerTeamKey","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Registerteamkey"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/v1/crystal/groups":{"post":{"tags":["v1-legos"],"summary":"Create Group","description":"Publish a group's public key, with its private half wrapped to each member device and to the team key.","operationId":"createGroupKey","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Creategroupkey"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/v1/crystal/groups/{group_id}":{"get":{"tags":["v1-legos"],"summary":"Get Group","description":"The group's current public key. A hook pins its key_id and encrypts each turn to it.","operationId":"getGroupKey","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Getgroupkey"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/crystal/groups/{group_id}/members":{"post":{"tags":["v1-legos"],"summary":"Add Members","description":"Admit devices: an admin's device has wrapped the group's private key to each of them.","operationId":"addGroupMembers","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MembersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Addgroupmembers"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/crystal/groups/{group_id}/rotate":{"post":{"tags":["v1-legos"],"summary":"Rotate Group","description":"Remove people from a group: a new key pair, the old version's wraps and the removed people's wraps gone, all\nin one transaction. The request carries the whole new state, or nothing changes.","operationId":"rotateGroupKey","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rotategroupkey"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/crystal":{"get":{"tags":["v1-legos"],"summary":"Get Crystal","description":"Your conversation crystal: the native ``timecrystal`` object (variant ``conversation``) built from sealed\nticks only, plus which systems switched to whole-turn records and when, and how many per-event records were\nrefused since — counted apart from failures.","operationId":"getConversationCrystal","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Getconversationcrystal"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/v1/crystal/ticks":{"get":{"tags":["v1-legos"],"summary":"List Ticks","description":"Your ticks, newest first. ``q`` searches the readable facts (tests, commits, pull requests, deploys, files,\nsources). The turn's text is not searchable here; it is ciphertext, searched on your device after decrypting.","operationId":"listConversationCrystalTicks","security":[{"BearerAuth":[]},{"PlanisphereKey":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Q"}},{"name":"before_seq","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Before Seq"}},{"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 Listconversationcrystalticks"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/verify":{"post":{"tags":["v1-verify"],"summary":"Verify","description":"Alias of POST /evidence-packets/verify-seal (routes.evidence.verify_seal).","operationId":"verifySeal","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidencePacketSealVerificationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidencePacketSealVerificationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/v1/verify/kit":{"get":{"tags":["v1-verify"],"summary":"Verify Kit","description":"Alias of GET /evidence-packets/proof-kit (routes.evidence.proof_kit).","operationId":"getVerifyKit","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidenceProofKitResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/keys":{"get":{"tags":["v1-support"],"summary":"List tenant API keys (alias of /tenant/api-keys)","operationId":"v1_list_api_keys_v1_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantApiKeysResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}},"security":[{"BearerAuth":[]},{"PlanisphereKey":[]}]}},"/v1/packs":{"get":{"tags":["v1-support"],"summary":"Pack registry (alias of /pack-registry)","operationId":"v1_pack_registry_v1_packs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackRegistryResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}},"/v1/catalog":{"get":{"tags":["v1-support"],"summary":"Catalog map (alias of /catalog-map)","operationId":"v1_catalog_map_v1_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogMapResponse"}}}},"default":{"description":"Problem response","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}}}}}}},"webhooks":{"record.sealed":{"post":{"summary":"A gate decision was recorded and its evidence sealed.","description":"Delivered to the subscriber's registered webhook URL.","operationId":"_endpointrecord_sealed_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveryEnvelope"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"receipt.anchored":{"post":{"summary":"A canonical roll-up epoch anchored a tenant receipt.","description":"Delivered to the subscriber's registered webhook URL.","operationId":"_endpointreceipt_anchored_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveryEnvelope"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"verify.failed":{"post":{"summary":"An offline verification attempt failed.","description":"Delivered to the subscriber's registered webhook URL.","operationId":"_endpointverify_failed_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveryEnvelope"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"meter.threshold":{"post":{"summary":"Metered usage crossed a configured threshold.","description":"Delivered to the subscriber's registered webhook URL.","operationId":"_endpointmeter_threshold_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveryEnvelope"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccountBillingPortalResponse":{"properties":{"portal_available":{"type":"boolean","title":"Portal Available"},"portal_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portal Url"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"raw_stripe_customer_id_returned":{"type":"boolean","title":"Raw Stripe Customer Id Returned","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"This route creates a Stripe-hosted Customer Portal session for the signed-in tenant so payment methods and invoices are managed on Stripe. Planisphere does not receive, display, or store card data or the raw Stripe customer id."}},"type":"object","required":["portal_available"],"title":"AccountBillingPortalResponse","description":"A Stripe Customer Portal handoff for a signed-in production tenant.\n\nportal_available is False (with a reason) for sandbox tenants, tenants with\nno Stripe customer yet, or when Stripe is not configured — the console shows\nthe reason instead of a broken link. The raw Stripe customer id is never\nreturned to the browser."},"AccountLogoutResponse":{"properties":{"logged_out":{"type":"boolean","title":"Logged Out"},"session_revoked":{"type":"boolean","title":"Session Revoked"},"account_session_cookie_cleared":{"type":"boolean","title":"Account Session Cookie Cleared","default":true},"raw_session_token_returned":{"type":"boolean","title":"Raw Session Token Returned","default":false}},"type":"object","required":["logged_out","session_revoked"],"title":"AccountLogoutResponse"},"AccountMeResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"The signed-in person's verified email; null without an email sign-in identity."},"ethereum_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ethereum Address","description":"The Ethereum address verified for this person; null without a wallet identity."},"can_edit_display_name":{"type":"boolean","title":"Can Edit Display Name","default":false},"signin_methods":{"items":{"type":"string"},"type":"array","title":"Signin Methods"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name","description":"The name the signed-in person set for themselves; null until they set one."},"active":{"type":"boolean","title":"Active"},"ownership_recovery":{"anyOf":[{"$ref":"#/components/schemas/OwnershipRecoverySummary"},{"type":"null"}]},"alerts":{"items":{"$ref":"#/components/schemas/WorkspaceAlert"},"type":"array","title":"Alerts","description":"Records being refused in this workspace (a revoked key still in use, a free plan's used credits, invalid or rate-limited writes) in the last 7 days, newest first, until they stop or someone dismisses them."},"role":{"type":"string","title":"Role"},"record_metadata_retention":{"type":"boolean","title":"Record Metadata Retention","description":"Whether declared statutory metadata values are retained for this tenant. Surfaced so retention coverage is self-describing rather than something a regulator has to infer from which records happen to carry values.","default":false},"conversation_plaintext_retention":{"type":"boolean","title":"Conversation Plaintext Retention","description":"Whether this workspace keeps the plain prompt line of each conversation-crystal tick. Off unless switched on: a turn's text otherwise reaches Planisphere only as ciphertext under keys it does not hold.","default":false},"session":{"$ref":"#/components/schemas/AccountSessionItem"},"api_keys":{"items":{"$ref":"#/components/schemas/TenantApiKeyItem"},"type":"array","title":"Api Keys"},"api_key_count":{"type":"integer","title":"Api Key Count"},"usage_meter_events_count":{"type":"integer","title":"Usage Meter Events Count"},"capabilities":{"items":{"type":"string"},"type":"array","title":"Capabilities","description":"Explicit actions this principal may perform (server-owned policy)."},"clearance":{"anyOf":[{"$ref":"#/components/schemas/ClearanceInfo"},{"type":"null"}]},"active_organization":{"type":"string","title":"Active Organization","default":""},"organizations":{"items":{"$ref":"#/components/schemas/OrganizationItem"},"type":"array","title":"Organizations"},"action_requirements":{"additionalProperties":true,"type":"object","title":"Action Requirements","description":"Server-declared step-up/assurance requirements per action (empty = none)."},"validated_at":{"type":"string","title":"Validated At","description":"Server clock (RFC 3339) at which this identity was validated.","default":""},"stripe_customer_id_present":{"type":"boolean","title":"Stripe Customer Id Present","default":false},"account_session_authenticated":{"type":"boolean","title":"Account Session Authenticated","default":true},"account_session_cookie_httponly":{"type":"boolean","title":"Account Session Cookie Httponly","default":true},"tenant_key_exposure_allowed":{"type":"boolean","title":"Tenant Key Exposure Allowed","default":false},"browser_local_api_key_allowed":{"type":"boolean","title":"Browser Local Api Key Allowed","default":false},"raw_api_key_returned":{"type":"boolean","title":"Raw Api Key Returned","default":false},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false},"raw_secret_material_returned":{"type":"boolean","title":"Raw Secret Material Returned","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Account session routes expose browser-safe tenant, key metadata, and usage ledger status. They do not return raw tenant API keys, raw session tokens, Stripe customer identifiers, protected action execution authority, or browser-local tenant credentials."}},"type":"object","required":["tenant","name","active","role","session","api_keys","api_key_count","usage_meter_events_count"],"title":"AccountMeResponse"},"AccountSessionItem":{"properties":{"session_id":{"type":"string","title":"Session Id"},"tenant":{"type":"string","title":"Tenant"},"role":{"type":"string","title":"Role"},"signup_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signup Key"},"active":{"type":"boolean","title":"Active"},"stripe_customer_id_present":{"type":"boolean","title":"Stripe Customer Id Present","default":false},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"revoked_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked At"},"last_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Seen At"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"raw_secret_material_stored":{"type":"boolean","title":"Raw Secret Material Stored","default":false},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false}},"type":"object","required":["session_id","tenant","role","active","created_at","expires_at"],"title":"AccountSessionItem"},"AccountUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Name","description":"New organization display name for the signed-in tenant."},"record_metadata_retention":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Record Metadata Retention","description":"Whether declared statutory metadata VALUES are retained for this tenant's records — the keys each pack marks retainable, and only those. Off unless switched on: a data-retention posture is chosen, never inherited. Keys identifying a natural person stay hash-only, with one exception: boundary_crossed's actor (for example the account a cloud audit log names) is readable while this is on."},"conversation_plaintext_retention":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Conversation Plaintext Retention","description":"Whether conversation-crystal ticks may carry the plain prompt line (turn_line), kept readable on the server. Off unless switched on; while off, a tick that carries one is refused."},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name","description":"The signed-in person's own display name, 1-80 characters after trimming. An empty string clears it. Needs no workspace capability."}},"type":"object","title":"AccountUpdateRequest"},"ActiveManifestResponse":{"properties":{"schema":{"type":"string","title":"Schema"},"tenant":{"type":"string","title":"Tenant"},"board_id":{"type":"string","title":"Board Id"},"title":{"type":"string","title":"Title"},"definition":{"type":"string","title":"Definition"},"manifest_hash":{"type":"string","title":"Manifest Hash"},"source":{"additionalProperties":true,"type":"object","title":"Source"},"lanes":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Lanes"},"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"adapters":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Adapters"},"corpus_refs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Corpus Refs"},"catalog_refs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Catalog Refs"},"render_targets":{"items":{"type":"string"},"type":"array","title":"Render Targets"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary"}},"type":"object","required":["schema","tenant","board_id","title","definition","manifest_hash","source","lanes","items","adapters","corpus_refs","catalog_refs","render_targets","claim_boundary"],"title":"ActiveManifestResponse"},"BoundaryPoliciesResponse":{"properties":{"policies":{"items":{"$ref":"#/components/schemas/BoundaryPolicy"},"type":"array","title":"Policies","description":"Saved policies, in starter order, then by name."},"starters":{"items":{"$ref":"#/components/schemas/BoundaryPolicy"},"type":"array","title":"Starters","description":"Starters this workspace hasn't saved yet. Not enforced."},"guards":{"items":{"$ref":"#/components/schemas/GuardOption"},"type":"array","title":"Guards"},"check_kinds":{"items":{"$ref":"#/components/schemas/CheckKind"},"type":"array","title":"Check Kinds","description":"The checks the product knows how to report."},"retention_enabled":{"type":"boolean","title":"Retention Enabled"},"can_manage":{"type":"boolean","title":"Can Manage","description":"Whether this caller can save policies: a signed-in person who manages policy."}},"type":"object","required":["policies","starters","guards","retention_enabled","can_manage"],"title":"BoundaryPoliciesResponse"},"BoundaryPolicy":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"statement":{"type":"string","title":"Statement"},"crosses":{"$ref":"#/components/schemas/Crosses"},"guard":{"$ref":"#/components/schemas/Guard"},"guard_label":{"type":"string","title":"Guard Label"},"guard_phrase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guard Phrase","description":"Who approves, as a sentence names them; null when no one can."},"guard_short":{"type":"string","title":"Guard Short","default":""},"checks":{"items":{"type":"string"},"type":"array","title":"Checks"},"response":{"type":"string","enum":["watch","flag","hold","wall"],"title":"Response"},"saved":{"type":"boolean","title":"Saved"},"version":{"type":"integer","title":"Version","description":"The version in force; 0 for a starter nobody has saved."},"saved_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Saved At"},"saved_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Saved By"},"policy_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy Hash"},"starter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starter"},"crosses_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Crosses Label","description":"A starter's own words for what crosses it."},"checks_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Checks Label"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources","description":"Witnesses that observe this boundary."},"dark":{"items":{"type":"string"},"type":"array","title":"Dark","description":"Witnesses not connected yet."}},"type":"object","required":["id","name","statement","crosses","guard","guard_label","checks","response","saved","version"],"title":"BoundaryPolicy"},"BoundaryPolicyWrite":{"properties":{"name":{"type":"string","maxLength":200,"title":"Name"},"statement":{"type":"string","maxLength":600,"title":"Statement"},"crosses":{"$ref":"#/components/schemas/Crosses"},"guard":{"$ref":"#/components/schemas/Guard"},"checks":{"items":{"type":"string"},"type":"array","title":"Checks"},"response":{"type":"string","enum":["watch","flag","hold","wall"],"title":"Response"},"expected_version":{"type":"integer","minimum":0.0,"title":"Expected Version","description":"The version you edited; 0 for one not saved yet."}},"type":"object","required":["name","statement","guard","response","expected_version"],"title":"BoundaryPolicyWrite"},"CatalogMapResponse":{"properties":{"source":{"additionalProperties":true,"type":"object","title":"Source"},"classes":{"additionalProperties":true,"type":"object","title":"Classes"},"classification_counts":{"additionalProperties":true,"type":"object","title":"Classification Counts"},"impl_status_counts":{"additionalProperties":true,"type":"object","title":"Impl Status Counts"},"api_bindings":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Api Bindings"},"sku_book_implications":{"items":{"type":"string"},"type":"array","title":"Sku Book Implications"},"claim_boundary":{"type":"string","title":"Claim Boundary"}},"type":"object","required":["source","classes","classification_counts","impl_status_counts","api_bindings","sku_book_implications","claim_boundary"],"title":"CatalogMapResponse"},"CheckKind":{"properties":{"name":{"type":"string","title":"Name"},"label":{"type":"string","title":"Label"},"line":{"type":"string","title":"Line"},"short":{"type":"string","title":"Short","default":""},"passed":{"type":"string","title":"Passed","default":""},"failed":{"type":"string","title":"Failed","default":""}},"type":"object","required":["name","label","line"],"title":"CheckKind"},"ClearanceInfo":{"properties":{"level":{"type":"integer","title":"Level"},"level_name":{"type":"string","title":"Level Name"},"compartments":{"items":{"type":"string"},"type":"array","title":"Compartments"}},"type":"object","required":["level","level_name"],"title":"ClearanceInfo","description":"The principal's MAC clearance (governs which classified content it may\nread). Level names mirror the government classification lattice."},"ConnectionActivityResponse":{"properties":{"object":{"type":"string","const":"connection_activity","title":"Object","default":"connection_activity"},"tenant":{"type":"string","title":"Tenant"},"recorded_from":{"type":"string","title":"Recorded From"},"recorded_to":{"type":"string","title":"Recorded To"},"identity_basis":{"type":"string","const":"observed_records","title":"Identity Basis","default":"observed_records"},"systems":{"items":{"$ref":"#/components/schemas/ConnectionActivitySystem"},"type":"array","title":"Systems"},"system_count":{"type":"integer","minimum":0.0,"title":"System Count"},"records_24h":{"type":"integer","minimum":0.0,"title":"Records 24H"},"unassigned_records_24h":{"type":"integer","minimum":0.0,"title":"Unassigned Records 24H"},"truncated":{"type":"boolean","title":"Truncated"}},"type":"object","required":["tenant","recorded_from","recorded_to","systems","system_count","records_24h","unassigned_records_24h","truncated"],"title":"ConnectionActivityResponse"},"ConnectionActivitySystem":{"properties":{"system_id":{"type":"string","title":"System Id"},"records_24h":{"type":"integer","minimum":0.0,"title":"Records 24H"},"last_recorded_at":{"type":"string","title":"Last Recorded At"},"last_event_type":{"type":"string","title":"Last Event Type"},"last_action_key":{"type":"string","title":"Last Action Key"},"observed_connector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Observed Connector"},"observed_environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Observed Environment"}},"type":"object","required":["system_id","records_24h","last_recorded_at","last_event_type","last_action_key"],"title":"ConnectionActivitySystem"},"ContentAttachRequest":{"properties":{"previous_removal_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Previous Removal Id","description":"After an explicit attachment removal, acknowledge the current record response's attachment_removal_id before uploading again. Older uploads are rejected."},"classification":{"type":"string","title":"Classification","description":"Classification level: unclassified|confidential|secret|top_secret (or int).","default":"unclassified"},"compartments":{"items":{"type":"string"},"type":"array","title":"Compartments","description":"Need-to-know compartment tags."},"algorithm":{"type":"string","const":"AES-256-GCM","title":"Algorithm","default":"AES-256-GCM"},"envelope_version":{"type":"integer","maximum":1.0,"minimum":1.0,"title":"Envelope Version","description":"Envelope shape. 1 = {algorithm, kdf, key_id, iv, ciphertext}.","default":1},"kdf":{"type":"string","const":"raw","title":"Kdf","description":"How the AES-256 key was produced. 'raw' = a 256-bit key you hold — generate 32 random bytes on your side or bring one from your KMS; Planisphere never creates or sees it. The retired 'pbkdf2-sha256' passphrase scheme is still READABLE for records written before envelope_version 1, but is not accepted here: a human-typed passphrase over a salt the server can derive is brute-forceable offline against ciphertext we hold.","default":"raw"},"key_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Key Id","description":"Optional NON-SECRET key fingerprint — sha256(key bytes)[:16] — so a reader can tell which key opens this. Never send key material."},"iv":{"type":"string","maxLength":88,"minLength":8,"title":"Iv","description":"Base64 AES-GCM nonce, generated client-side, unique per message."},"ciphertext":{"type":"string","maxLength":12000000,"minLength":1,"title":"Ciphertext","description":"Base64 AES-GCM ciphertext (incl. auth tag), encrypted CLIENT-SIDE under the customer's key. Planisphere cannot decrypt it."}},"type":"object","required":["iv","ciphertext"],"title":"ContentAttachRequest"},"ContentAttachResponse":{"properties":{"action_key":{"type":"string","title":"Action Key"},"payload_hash":{"type":"string","title":"Payload Hash"},"classification":{"type":"string","title":"Classification"},"compartments":{"items":{"type":"string"},"type":"array","title":"Compartments"},"envelope_version":{"type":"integer","title":"Envelope Version","default":1},"kdf":{"type":"string","title":"Kdf","default":"raw"},"key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"ciphertext_stored":{"type":"boolean","title":"Ciphertext Stored","default":true},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"note":{"type":"string","title":"Note","default":"Planisphere stored ciphertext only — it holds no key and cannot read this content."}},"type":"object","required":["action_key","payload_hash","classification","compartments"],"title":"ContentAttachResponse"},"ContentReleaseResponse":{"properties":{"action_key":{"type":"string","title":"Action Key"},"payload_hash":{"type":"string","title":"Payload Hash"},"classification":{"type":"string","title":"Classification"},"compartments":{"items":{"type":"string"},"type":"array","title":"Compartments"},"algorithm":{"type":"string","title":"Algorithm"},"envelope_version":{"type":"integer","title":"Envelope Version"},"kdf":{"type":"string","title":"Kdf"},"key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"iv":{"type":"string","title":"Iv"},"ciphertext":{"type":"string","title":"Ciphertext"},"note":{"type":"string","title":"Note","default":"Decrypt client-side with your key, then bind the plaintext by recomputing sha256 and comparing it to the record's proposal.source_payload_commitments.content_sha256."}},"type":"object","required":["action_key","payload_hash","classification","compartments","algorithm","envelope_version","kdf","key_id","iv","ciphertext"],"title":"ContentReleaseResponse"},"CorpusMapResponse":{"properties":{"source":{"additionalProperties":true,"type":"object","title":"Source"},"summary":{"additionalProperties":true,"type":"object","title":"Summary"},"register_counts":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Register Counts"},"law_anchor_refs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Law Anchor Refs"},"compliance_stub_refs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Compliance Stub Refs"},"pseo_implications":{"items":{"type":"string"},"type":"array","title":"Pseo Implications"},"claim_boundary":{"type":"string","title":"Claim Boundary"}},"type":"object","required":["source","summary","register_counts","law_anchor_refs","compliance_stub_refs","pseo_implications","claim_boundary"],"title":"CorpusMapResponse"},"Crosses":{"properties":{"commands":{"items":{"type":"string"},"type":"array","title":"Commands","description":"Each statement of a shell command, as a glob."},"paths":{"items":{"type":"string"},"type":"array","title":"Paths","description":"A file a tool touches: a name, or a path ending."},"destinations":{"items":{"type":"string"},"type":"array","title":"Destinations","description":"The host of a URL a tool fetches."},"tools":{"items":{"type":"string"},"type":"array","title":"Tools","description":"Any use of these tools, by name."}},"type":"object","title":"Crosses"},"Crossing":{"properties":{"action_key":{"type":"string","title":"Action Key"},"occurred_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Occurred At"},"receipt_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Url"},"readable":{"type":"boolean","title":"Readable"},"boundary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Boundary"},"what":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"What"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"started_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started By"},"actor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor"},"checks":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Checks"},"repo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repo"},"ask":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ask"},"goal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goal"},"response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response"},"outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome"},"tool":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool"},"review":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review"},"succeeded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Succeeded"},"sealed_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sealed By"},"policy_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Policy Version"},"guard":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guard"},"decided_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decided By"},"held_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Held At"},"decided_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decided At"}},"type":"object","required":["action_key","occurred_at","receipt_url","readable"],"title":"Crossing"},"CrossingDecision":{"properties":{"decision":{"type":"string","enum":["allow","deny"],"title":"Decision"},"outcome":{"type":"string","enum":["none","recorded","flagged","held","waiting","crossed","rejected","refused","unguarded"],"title":"Outcome"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","description":"Why it was refused, written for the agent."},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context","description":"A note for the agent when it was let through."},"policy":{"anyOf":[{"$ref":"#/components/schemas/CrossingPolicy"},{"type":"null"}]},"guard":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guard"},"review_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Key"},"review_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Url"},"crossing_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Crossing Key"},"decided_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decided By"}},"type":"object","required":["decision","outcome"],"title":"CrossingDecision"},"CrossingPolicy":{"properties":{"id":{"type":"string","title":"Id"},"version":{"type":"integer","title":"Version"},"name":{"type":"string","title":"Name"},"response":{"type":"string","enum":["watch","flag","hold","wall"],"title":"Response"}},"type":"object","required":["id","version","name","response"],"title":"CrossingPolicy"},"CrossingRequest":{"properties":{"tool_name":{"type":"string","maxLength":200,"minLength":1,"title":"Tool Name","examples":["Bash"]},"subject":{"$ref":"#/components/schemas/CrossingSubject"},"tool_input_hash":{"type":"string","maxLength":140,"title":"Tool Input Hash","description":"sha256:<hex> of the tool's whole input."},"session_id":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Session Id"},"cwd":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Cwd"},"agent":{"type":"string","maxLength":80,"title":"Agent","default":"Claude Code"},"agent_type":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Agent Type"},"occurred_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Occurred At"},"sent_later":{"type":"boolean","title":"Sent Later","description":"Sent after the fact: Planisphere was unreachable when the tool ran, and the hook let a Watch or Flag crossing through.","default":false}},"additionalProperties":false,"type":"object","required":["tool_name","tool_input_hash"],"title":"CrossingRequest","description":"What a connected system is about to do. Only the readable subject a policy can match is sent, never content."},"CrossingSubject":{"properties":{"command":{"anyOf":[{"type":"string","maxLength":8000},{"type":"null"}],"title":"Command","description":"A shell command, as the agent wrote it."},"path":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Path","description":"The file a tool reads or writes."},"url":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Url","description":"The address a tool fetches."}},"additionalProperties":false,"type":"object","title":"CrossingSubject"},"CrossingsResponse":{"properties":{"since":{"type":"string","title":"Since"},"until":{"type":"string","title":"Until"},"retention_enabled":{"type":"boolean","title":"Retention Enabled"},"sealed":{"type":"integer","title":"Sealed"},"unreadable":{"type":"integer","title":"Unreadable"},"truncated":{"type":"boolean","title":"Truncated"},"crossings":{"items":{"$ref":"#/components/schemas/Crossing"},"type":"array","title":"Crossings"}},"type":"object","required":["since","until","retention_enabled","sealed","unreadable","truncated","crossings"],"title":"CrossingsResponse"},"CrystalContent":{"properties":{"suite":{"type":"string","title":"Suite"},"group_id":{"type":"string","title":"Group Id","default":"team"},"group_version":{"type":"integer","minimum":1.0,"title":"Group Version"},"key_id":{"type":"string","pattern":"^[0-9a-f]{32}$","title":"Key Id","description":"sha256(turn key)[:16], hex. Not secret."},"turn_key_wrap":{"type":"string","title":"Turn Key Wrap","description":"HPKE base-mode enc ‖ ciphertext of the turn key, base64url."},"classification":{"type":"string","title":"Classification","default":"unclassified"},"steps":{"items":{"$ref":"#/components/schemas/StepCiphertext"},"type":"array","maxItems":2048,"title":"Steps"}},"additionalProperties":false,"type":"object","required":["suite","group_version","key_id","turn_key_wrap"],"title":"CrystalContent","description":"Envelope version 2: the turn's text, encrypted on the device, one ciphertext per step.\n\nEach step is sealed under its own key, HKDF-SHA256(turn key, info \"planisphere.crystal/1|step-key|<i>\"), with\nAES-256-GCM and the additional data \"planisphere.crystal/1|step|<i>|<content digest>\". The turn key is wrapped to\nthe group's current public key with HPKE; Planisphere holds no key that opens any of it."},"CrystalFacts":{"properties":{"tests":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Tests"},"commits":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Commits"},"pull_requests":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Pull Requests"},"deploys":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Deploys"},"files_changed":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Files Changed"},"sources":{"additionalProperties":true,"type":"object","title":"Sources"}},"additionalProperties":false,"type":"object","title":"CrystalFacts","description":"The readable, searchable facts of a turn: the six fact lists ``work-receipts/kernel.py`` derive() returns.\n\nThe kernel runs on the device that holds the transcript; the server accepts exactly its output shape and adds\nnothing. Its procedure checks and \"consequential\" labels are left out: those are judgments, and agents don't\njudge."},"CrystalTickHeader":{"properties":{"session_id":{"type":"string","maxLength":200,"minLength":1,"title":"Session Id","description":"Committed as a digest; never stored."},"turn_id":{"type":"string","title":"Turn Id","description":"The host's turn identity (Claude Code prompt id, Codex turn_id)."},"authorized_by":{"type":"string","enum":["person","agent","system"],"title":"Authorized By","description":"person: a person's prompt. agent: an agent's continuation. system: a task notification or other host transport. A task-notification turn is not a person's prompt."},"prompt_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Hash","description":"The prompt step's salted content digest, so the prompt hash cannot be guessed."},"root":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Root","description":"The revision of the person's god_root (structural) object as the device read it at this tick, or null when it had none."},"gate_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gate Score","description":"Client-reported gate score, as marduk carried it."},"gate_failures":{"items":{"type":"string"},"type":"array","maxItems":32,"title":"Gate Failures"},"event_count":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Event Count","description":"Every step the turn had, sealed, so a turn cut at 2,048 steps shows it."},"facts":{"anyOf":[{"$ref":"#/components/schemas/CrystalFacts"},{"type":"null"}]},"turn_line":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Turn Line","description":"Plain text of the prompt line. Kept only when the workspace has opted in to plaintext; otherwise the tick is refused, so text never reaches the server by accident."}},"additionalProperties":false,"type":"object","required":["session_id","turn_id","authorized_by"],"title":"CrystalTickHeader","description":"Logan's tick fields, plus who authorized the turn."},"DataScope":{"properties":{"metadata":{"type":"boolean","title":"Metadata","default":false},"attachment":{"type":"boolean","title":"Attachment","default":false},"recipient_links":{"type":"boolean","title":"Recipient Links","default":false}},"additionalProperties":false,"type":"object","title":"DataScope"},"DisclosureRequest":{"properties":{"related_ids":{"items":{"type":"string"},"type":"array","maxItems":20,"title":"Related Ids"},"original_download":{"type":"boolean","title":"Original Download","default":false},"inclusion_download":{"type":"boolean","title":"Inclusion Download","default":false},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"preview_digest":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Preview Digest"}},"additionalProperties":false,"type":"object","title":"DisclosureRequest"},"EvidencePacketResponse":{"properties":{"receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Id"},"receipt_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Url"},"receipt_original_root":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Original Root","description":"Root of the original retained work; an export wrapper or later reconstructed packet may have a different root. The locator is unsigned."},"action_key":{"type":"string","title":"Action Key"},"tenant":{"type":"string","title":"Tenant"},"status":{"type":"string","enum":["pending_review","blocked","recorded"],"title":"Status"},"decision":{"type":"string","title":"Decision"},"action_type":{"type":"string","title":"Action Type"},"source_key":{"type":"string","title":"Source Key"},"payload_hash":{"type":"string","title":"Payload Hash"},"review_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Route"},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"},"packet_hash":{"type":"string","title":"Packet Hash"},"signed_hash":{"type":"string","title":"Signed Hash"},"attestation_root":{"type":"string","title":"Attestation Root"},"stamp_id":{"type":"string","title":"Stamp Id"},"signature":{"type":"string","title":"Signature"},"seal":{"$ref":"#/components/schemas/EvidencePacketSeal"},"verify_request":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Verify Request","description":"Ready-to-POST body for POST /v1/verify (alias: /evidence-packets/verify-seal) proving THIS response's re-derived packet: decision is the stored gate decision, review_route the stored route, status reflects whether a review was recorded. Raw-safe: hashes and seal fields only. The same fields POST to /evidence-packets/seal-bundle for the offline 4-file bundle."},"proposal":{"additionalProperties":true,"type":"object","title":"Proposal"},"response":{"additionalProperties":true,"type":"object","title":"Response"},"route_dispatches":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Route Dispatches"},"reviews":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Reviews"},"resolved":{"type":"boolean","title":"Resolved","description":"True once a terminal review decision (approved or rejected) has been recorded for this record.","default":false},"resolution":{"type":"string","enum":["unreviewed","escalated","approved","rejected"],"title":"Resolution","description":"Explicit review outcome. `decision` stays the gate-time decision (e.g. needs_review); this field is the review resolution.","default":"unreviewed"},"resolution_receipt":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Resolution Receipt"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Planisphere records routing, review, and receipt metadata only. It does not certify compliance, determine legality, provide medical or legal advice, make export-control conclusions, or replace domain reviewers."}},"type":"object","required":["action_key","tenant","status","decision","action_type","source_key","payload_hash","review_route","packet_hash","signed_hash","attestation_root","stamp_id","signature","seal","proposal","response","route_dispatches","reviews"],"title":"EvidencePacketResponse"},"EvidencePacketSeal":{"properties":{"seal_contract":{"type":"string","title":"Seal Contract","default":"planisphere.evidence_packet/2"},"algorithm":{"type":"string","const":"ed25519","title":"Algorithm","default":"ed25519"},"key_id":{"type":"string","title":"Key Id"},"signed_hash":{"type":"string","title":"Signed Hash"},"packet_hash":{"type":"string","title":"Packet Hash"},"attestation_root":{"type":"string","title":"Attestation Root"},"stamp_id":{"type":"string","title":"Stamp Id"},"signature":{"type":"string","title":"Signature"},"public_key":{"type":"string","title":"Public Key"},"dev_key":{"type":"boolean","title":"Dev Key","default":false},"tenant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant","description":"Tenant id committed into the signed attestation content (seal contract v2+). None on legacy v1 seals."},"recorded_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recorded At","description":"Server clock at seal time (RFC 3339), committed into the signed attestation content (seal contract v2+) — distinct from any caller-supplied occurred_at. None on legacy v1 seals."},"policy_ref":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Policy Ref","description":"Seal contract v3+: which pack policy governed the record — pack id, pack version, and a hash over the policy's normative content — committed into the signed attestation content. A pack NAME alone cannot answer which rules applied, because names are reused while their contents change. None on v1 and v2 seals."},"metadata_commitment_root":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"string"},{"type":"null"}],"title":"Metadata Commitment Root","description":"Seal contract v3+: Merkle root over one commitment per metadata key, committed into the signed attestation content, so a single declared value can be proven against the seal on its own. None on v1 and v2 seals."},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"The evidence seal signs raw-safe receipt metadata anchored on payload_hash. It is not external notarization, domain advice, a legal/medical/export-control determination, or a compliance certification."}},"type":"object","required":["key_id","signed_hash","packet_hash","attestation_root","stamp_id","signature","public_key"],"title":"EvidencePacketSeal"},"EvidencePacketSealVerificationRequest":{"properties":{"action_key":{"type":"string","title":"Action Key"},"href":{"type":"string","title":"Href"},"status":{"type":"string","enum":["pending_review","blocked","recorded"],"title":"Status"},"decision":{"type":"string","title":"Decision"},"review_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Route"},"payload_hash":{"type":"string","title":"Payload Hash"},"packet_hash":{"type":"string","title":"Packet Hash"},"vertical":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vertical"},"seal":{"$ref":"#/components/schemas/EvidencePacketSeal"}},"type":"object","required":["action_key","href","status","decision","payload_hash","packet_hash","seal"],"title":"EvidencePacketSealVerificationRequest"},"EvidencePacketSealVerificationResponse":{"properties":{"verified":{"type":"boolean","title":"Verified"},"seal_standing":{"type":"string","enum":["active","expired","unknown"],"title":"Seal Standing","description":"Registry standing of the sealed record. 'active' — Planisphere endorses it as usable evidence. 'expired' — the seal is cryptographically authentic but the endorsement was revoked by a sealed disposal; it is no longer presentable as evidence. 'unknown' — the record is outside this registry's reach (offline verify).","default":"unknown"},"standing_expired_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Standing Expired At"},"standing_expiry_action_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Standing Expiry Action Key","description":"The sealed records_expired disposal that revoked standing."},"standing_notice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Standing Notice","description":"Loud human-readable notice set whenever standing is expired: authentic-but-expired must never read as a pass."},"key_status":{"type":"string","enum":["production","production_retired","sandbox","unavailable","unknown"],"title":"Key Status","default":"unknown"},"key_status_notice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Status Notice","description":"Human-readable trust-anchor notice. Set when the seal's key is the sandbox dev key (sandbox receipts are non-production evidence and are not presentable as production records), a retired production key, or the current production key while Planisphere's signer can't confirm it (key_status unavailable: check again shortly), and whenever the seal does not verify — an unverified seal always reports key_status unknown, because a forged seal can embed a published public key."},"signature_valid":{"type":"boolean","title":"Signature Valid"},"signed_hash_matches_payload":{"type":"boolean","title":"Signed Hash Matches Payload"},"packet_hash_matches_input":{"type":"boolean","title":"Packet Hash Matches Input"},"packet_hash_recomputed":{"type":"boolean","title":"Packet Hash Recomputed"},"attestation_root_recomputed":{"type":"boolean","title":"Attestation Root Recomputed"},"stamp_id_recomputed":{"type":"boolean","title":"Stamp Id Recomputed"},"key_id_matches_public_key":{"type":"boolean","title":"Key Id Matches Public Key"},"seal_contract_valid":{"type":"boolean","title":"Seal Contract Valid"},"key_id":{"type":"string","title":"Key Id"},"key_id_expected":{"type":"string","title":"Key Id Expected"},"stamp_id":{"type":"string","title":"Stamp Id"},"stamp_id_expected":{"type":"string","title":"Stamp Id Expected"},"signed_hash":{"type":"string","title":"Signed Hash"},"packet_hash":{"type":"string","title":"Packet Hash"},"packet_hash_expected":{"type":"string","title":"Packet Hash Expected"},"attestation_root":{"type":"string","title":"Attestation Root"},"attestation_root_expected":{"type":"string","title":"Attestation Root Expected"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Seal verification checks Planisphere attestation metadata only. It does not certify compliance, determine legality, or inspect raw prompt content."}},"type":"object","required":["verified","signature_valid","signed_hash_matches_payload","packet_hash_matches_input","packet_hash_recomputed","attestation_root_recomputed","stamp_id_recomputed","key_id_matches_public_key","seal_contract_valid","key_id","key_id_expected","stamp_id","stamp_id_expected","signed_hash","packet_hash","packet_hash_expected","attestation_root","attestation_root_expected"],"title":"EvidencePacketSealVerificationResponse"},"EvidencePacketStub":{"properties":{"action_key":{"type":"string","title":"Action Key"},"href":{"type":"string","title":"Href"},"status":{"type":"string","enum":["pending_review","blocked","recorded"],"title":"Status"},"packet_hash":{"type":"string","title":"Packet Hash"},"signed_hash":{"type":"string","title":"Signed Hash"},"attestation_root":{"type":"string","title":"Attestation Root"},"stamp_id":{"type":"string","title":"Stamp Id"},"signature":{"type":"string","title":"Signature"},"seal":{"$ref":"#/components/schemas/EvidencePacketSeal"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Planisphere records routing, review, and receipt metadata only. It does not certify compliance, determine legality, provide medical or legal advice, make export-control conclusions, or replace domain reviewers."}},"type":"object","required":["action_key","href","status","packet_hash","signed_hash","attestation_root","stamp_id","signature","seal"],"title":"EvidencePacketStub"},"EvidenceProofKitLink":{"properties":{"label":{"type":"string","title":"Label"},"path":{"type":"string","title":"Path"},"kind":{"type":"string","enum":["endpoint","generated_example","helper","docs","static_review"],"title":"Kind"},"description":{"type":"string","title":"Description"}},"type":"object","required":["label","path","kind","description"],"title":"EvidenceProofKitLink"},"EvidenceProofKitResponse":{"properties":{"object":{"type":"string","const":"evidence_proof_kit","title":"Object","default":"evidence_proof_kit"},"package_version":{"type":"string","title":"Package Version"},"primary_endpoint":{"type":"string","title":"Primary Endpoint"},"verification_flow":{"items":{"type":"string"},"type":"array","title":"Verification Flow"},"required_request_fields":{"items":{"type":"string"},"type":"array","title":"Required Request Fields"},"verification_checks":{"items":{"type":"string"},"type":"array","title":"Verification Checks"},"raw_safe_inputs":{"items":{"type":"string"},"type":"array","title":"Raw Safe Inputs"},"current_seal_contract":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Seal Contract","description":"The seal contract this server uses for new receipts."},"seal_contracts":{"items":{"$ref":"#/components/schemas/EvidenceSealContractVersion"},"type":"array","title":"Seal Contracts","description":"Every seal contract a verifier must support. A seal names its own contract; older contracts stay valid."},"offline_verification":{"additionalProperties":true,"type":"object","title":"Offline Verification","description":"How to verify a receipt without calling Planisphere: the exact spec, test vectors, the published keys and the SDK functions."},"federal_validation_receipts":{"additionalProperties":true,"type":"object","title":"Federal Validation Receipts"},"helper_examples":{"items":{"$ref":"#/components/schemas/EvidenceProofKitLink"},"type":"array","title":"Helper Examples"},"generated_examples":{"items":{"$ref":"#/components/schemas/EvidenceProofKitLink"},"type":"array","title":"Generated Examples"},"docs":{"items":{"$ref":"#/components/schemas/EvidenceProofKitLink"},"type":"array","title":"Docs"},"raw_content_required":{"type":"boolean","title":"Raw Content Required","default":false},"private_ip_shipped_to_customer":{"type":"boolean","title":"Private Ip Shipped To Customer","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"The proof kit documents how to verify Planisphere evidence-packet attestation metadata. It does not inspect raw prompts/documents, expose private signing keys, certify compliance, determine legality, or provide external notarization."}},"type":"object","required":["package_version","primary_endpoint","verification_flow","required_request_fields","verification_checks","raw_safe_inputs","helper_examples","generated_examples","docs"],"title":"EvidenceProofKitResponse"},"EvidenceSealContractVersion":{"properties":{"seal_contract":{"type":"string","title":"Seal Contract"},"version":{"type":"integer","title":"Version"},"signed_fields":{"items":{"type":"string"},"type":"array","title":"Signed Fields","description":"Keys of the attestation content signed under this contract."},"adds":{"type":"string","title":"Adds"}},"type":"object","required":["seal_contract","version","signed_fields","adds"],"title":"EvidenceSealContractVersion"},"GrantRequest":{"properties":{"scope":{"type":"string","enum":["turn","step"],"title":"Scope"},"step":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Step"},"recipient_key_id":{"type":"string","pattern":"^[0-9a-f]{32}$","title":"Recipient Key Id"},"suite":{"type":"string","title":"Suite","default":"hpke-base:dhkem-p256-hkdf-sha256:hkdf-sha256:aes-256-gcm"},"wrapped_key":{"type":"string","title":"Wrapped Key","description":"The turn or step key, HPKE-wrapped to the recipient's device key."}},"type":"object","required":["scope","recipient_key_id","wrapped_key"],"title":"GrantRequest"},"GroupRequest":{"properties":{"group_id":{"type":"string","title":"Group Id","default":"team"},"suite":{"type":"string","title":"Suite","default":"hpke-base:dhkem-p256-hkdf-sha256:hkdf-sha256:aes-256-gcm"},"public_key":{"type":"string","title":"Public Key"},"wraps":{"items":{"$ref":"#/components/schemas/Wrap"},"type":"array","maxItems":4096,"minItems":1,"title":"Wraps"}},"type":"object","required":["public_key","wraps"],"title":"GroupRequest"},"Guard":{"properties":{"kind":{"type":"string","enum":["person","role","prompter","none"],"title":"Kind"},"person_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Id"},"role":{"anyOf":[{"type":"string","enum":["owner","admin","reviewer"]},{"type":"null"}],"title":"Role"}},"type":"object","required":["kind"],"title":"Guard"},"GuardOption":{"properties":{"guard":{"$ref":"#/components/schemas/Guard"},"label":{"type":"string","title":"Label"},"phrase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phrase"},"short":{"type":"string","title":"Short","default":""},"you":{"type":"boolean","title":"You","default":false}},"type":"object","required":["guard","label"],"title":"GuardOption"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"service":{"type":"string","title":"Service"},"storage":{"type":"string","title":"Storage"},"core":{"type":"string","title":"Core"},"schema_revision":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schema Revision"},"expected_schema_revision":{"type":"string","title":"Expected Schema Revision"},"seal_contract":{"type":"string","title":"Seal Contract"},"checks":{"additionalProperties":{"type":"string"},"type":"object","title":"Checks"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remediation"}},"type":"object","required":["ok","service","storage","core","expected_schema_revision","seal_contract"],"title":"HealthResponse"},"HeldPack":{"properties":{"pack":{"type":"string","title":"Pack"},"records":{"type":"integer","title":"Records"},"older_than_1d":{"type":"integer","title":"Older Than 1D"},"older_than_30d":{"type":"integer","title":"Older Than 30D"},"older_than_90d":{"type":"integer","title":"Older Than 90D"},"kept_at_period_end_1d":{"type":"integer","title":"Kept At Period End 1D"},"kept_at_period_end_30d":{"type":"integer","title":"Kept At Period End 30D"},"kept_at_period_end_90d":{"type":"integer","title":"Kept At Period End 90D"},"lifespan_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lifespan Days"}},"type":"object","required":["pack","records","older_than_1d","older_than_30d","older_than_90d","kept_at_period_end_1d","kept_at_period_end_30d","kept_at_period_end_90d"],"title":"HeldPack"},"IntegrationRecipesResponse":{"properties":{"recipes":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Recipes"}},"type":"object","required":["recipes"],"title":"IntegrationRecipesResponse"},"LawContext":{"properties":{"matter_band":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matter Band","examples":["litigation"]},"tool_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Id","examples":["harvey"]},"doctrine_anchor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doctrine Anchor","examples":["fre-707"]},"jurisdiction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jurisdiction","examples":["federal"]},"practice_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Practice Area","examples":["corporate-litigation"]}},"type":"object","title":"LawContext"},"LawGradingMirrorResponse":{"properties":{"object":{"type":"string","const":"law_grading_mirror","title":"Object","default":"law_grading_mirror"},"mirror_contract":{"type":"string","title":"Mirror Contract"},"mirror_version":{"type":"string","title":"Mirror Version"},"canonical_digest":{"type":"string","title":"Canonical Digest"},"digest_algorithm":{"type":"string","const":"sha256","title":"Digest Algorithm","default":"sha256"},"grade_values":{"items":{"type":"string","enum":["PASS","PARTIAL","FAIL","NA"]},"type":"array","title":"Grade Values"},"categories":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Categories"},"probe_battery":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Probe Battery"},"probe_vector":{"items":{"type":"string","enum":["PASS","PARTIAL","FAIL","NA"]},"type":"array","title":"Probe Vector"},"raw_content_required":{"type":"boolean","title":"Raw Content Required","default":false},"private_engine_required":{"type":"boolean","title":"Private Engine Required","default":false},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"The law grading mirror is a pinned public review-rubric fingerprint. It verifies that a client-side rubric copy has not drifted before Planisphere binds categorical reviewer grades to a receipt. It does not grade raw legal text, determine legality, or replace counsel."}},"type":"object","required":["mirror_contract","mirror_version","canonical_digest","grade_values","categories","probe_battery","probe_vector"],"title":"LawGradingMirrorResponse"},"LawMirrorSeal":{"properties":{"seal_contract":{"type":"string","title":"Seal Contract","default":"planisphere.law_mirror_seal"},"algorithm":{"type":"string","const":"ed25519","title":"Algorithm","default":"ed25519"},"key_id":{"type":"string","title":"Key Id"},"action_key":{"type":"string","title":"Action Key"},"mirror_version":{"type":"string","title":"Mirror Version"},"mirror_digest":{"type":"string","title":"Mirror Digest"},"grades_hash":{"type":"string","title":"Grades Hash"},"grade_categories":{"items":{"type":"string"},"type":"array","title":"Grade Categories"},"evidence_attestation_root":{"type":"string","title":"Evidence Attestation Root"},"evidence_stamp_id":{"type":"string","title":"Evidence Stamp Id"},"mirror_attestation_root":{"type":"string","title":"Mirror Attestation Root"},"stamp_id":{"type":"string","title":"Stamp Id"},"signature":{"type":"string","title":"Signature"},"public_key":{"type":"string","title":"Public Key"},"dev_key":{"type":"boolean","title":"Dev Key","default":false},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"mirror_grades_stored":{"type":"boolean","title":"Mirror Grades Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"The mirror seal signs the canonical law mirror digest and a hash of client-supplied categorical grades, bound to the evidence packet root. It does not store raw legal text or certify legal compliance."}},"type":"object","required":["key_id","action_key","mirror_version","mirror_digest","grades_hash","grade_categories","evidence_attestation_root","evidence_stamp_id","mirror_attestation_root","stamp_id","signature","public_key"],"title":"LawMirrorSeal"},"LawMirrorSealVerificationRequest":{"properties":{"seal":{"$ref":"#/components/schemas/LawMirrorSeal"}},"type":"object","required":["seal"],"title":"LawMirrorSealVerificationRequest"},"LawMirrorSealVerificationResponse":{"properties":{"verified":{"type":"boolean","title":"Verified"},"signature_valid":{"type":"boolean","title":"Signature Valid"},"mirror_digest_matches_canonical":{"type":"boolean","title":"Mirror Digest Matches Canonical"},"key_id_matches_public_key":{"type":"boolean","title":"Key Id Matches Public Key"},"mirror_attestation_root_recomputed":{"type":"boolean","title":"Mirror Attestation Root Recomputed"},"stamp_id_recomputed":{"type":"boolean","title":"Stamp Id Recomputed"},"seal_contract_valid":{"type":"boolean","title":"Seal Contract Valid"},"grade_categories_sorted":{"type":"boolean","title":"Grade Categories Sorted"},"raw_content_not_stored":{"type":"boolean","title":"Raw Content Not Stored"},"mirror_grades_not_stored":{"type":"boolean","title":"Mirror Grades Not Stored"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"mirror_grades_stored":{"type":"boolean","title":"Mirror Grades Stored","default":false},"key_id":{"type":"string","title":"Key Id"},"key_id_expected":{"type":"string","title":"Key Id Expected"},"stamp_id":{"type":"string","title":"Stamp Id"},"stamp_id_expected":{"type":"string","title":"Stamp Id Expected"},"mirror_digest":{"type":"string","title":"Mirror Digest"},"canonical_digest":{"type":"string","title":"Canonical Digest"},"grades_hash":{"type":"string","title":"Grades Hash"},"grade_categories":{"items":{"type":"string"},"type":"array","title":"Grade Categories"},"mirror_attestation_root":{"type":"string","title":"Mirror Attestation Root"},"mirror_attestation_root_expected":{"type":"string","title":"Mirror Attestation Root Expected"},"evidence_attestation_root":{"type":"string","title":"Evidence Attestation Root"},"evidence_stamp_id":{"type":"string","title":"Evidence Stamp Id"},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Mirror seal verification checks Planisphere law mirror attestation metadata only. It does not grade legal text, determine legality, or certify compliance."}},"type":"object","required":["verified","signature_valid","mirror_digest_matches_canonical","key_id_matches_public_key","mirror_attestation_root_recomputed","stamp_id_recomputed","seal_contract_valid","grade_categories_sorted","raw_content_not_stored","mirror_grades_not_stored","key_id","key_id_expected","stamp_id","stamp_id_expected","mirror_digest","canonical_digest","grades_hash","grade_categories","mirror_attestation_root","mirror_attestation_root_expected","evidence_attestation_root","evidence_stamp_id"],"title":"LawMirrorSealVerificationResponse"},"LivenessResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"service":{"type":"string","title":"Service","default":"planisphere-api"},"checks":{"additionalProperties":{"type":"string"},"type":"object","title":"Checks"},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Liveness reports only that the API process can serve requests. It does not check database connectivity, schema migration state, tenant setup, signer custody, or production readiness."}},"type":"object","title":"LivenessResponse"},"MembersRequest":{"properties":{"version":{"type":"integer","minimum":1.0,"title":"Version"},"wraps":{"items":{"$ref":"#/components/schemas/Wrap"},"type":"array","maxItems":4096,"minItems":1,"title":"Wraps"}},"type":"object","required":["version","wraps"],"title":"MembersRequest"},"OrganizationItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"active":{"type":"boolean","title":"Active"},"role":{"type":"string","title":"Role"}},"type":"object","required":["id","name","active","role"],"title":"OrganizationItem","description":"An organization (tenant) the signed-in person belongs to. Phase 1: the\none active tenant; the multi-org phase returns the person's memberships."},"OwnershipRecoverySummary":{"properties":{"legacy_keys_revoked":{"type":"integer","title":"Legacy Keys Revoked","default":0},"legacy_sessions_revoked":{"type":"integer","title":"Legacy Sessions Revoked","default":0},"integrations_disabled":{"type":"integer","title":"Integrations Disabled","default":0},"integration_credentials_reset":{"type":"integer","title":"Integration Credentials Reset","default":0},"retention_rules_suspended":{"type":"integer","title":"Retention Rules Suspended","default":0},"schema_bindings_suspended":{"type":"integer","title":"Schema Bindings Suspended","default":0},"receipt_shares_revoked":{"type":"integer","title":"Receipt Shares Revoked","default":0},"webhook_deliveries_held":{"type":"integer","title":"Webhook Deliveries Held","default":0},"route_deliveries_held":{"type":"integer","title":"Route Deliveries Held","default":0},"policy_review_required":{"type":"boolean","title":"Policy Review Required","default":false},"public_disclosure_disabled":{"type":"boolean","title":"Public Disclosure Disabled","default":false},"metadata_retention_disabled":{"type":"boolean","title":"Metadata Retention Disabled","default":false},"snapshot_digest":{"type":"string","title":"Snapshot Digest"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["snapshot_digest","created_at"],"title":"OwnershipRecoverySummary"},"PackRegistryResponse":{"properties":{"schema":{"type":"string","title":"Schema"},"source":{"additionalProperties":true,"type":"object","title":"Source"},"summary":{"additionalProperties":true,"type":"object","title":"Summary"},"packs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Packs"},"claim_boundary":{"type":"string","title":"Claim Boundary"}},"type":"object","required":["schema","source","summary","packs","claim_boundary"],"title":"PackRegistryResponse"},"PlanisphereVerifyingKey":{"properties":{"key_id":{"type":"string","title":"Key Id"},"public_key_hex":{"type":"string","title":"Public Key Hex"},"public_key_b64_raw32":{"type":"string","title":"Public Key B64 Raw32"},"algorithm":{"type":"string","const":"ed25519","title":"Algorithm","default":"ed25519"},"status":{"type":"string","enum":["production","production_retired","sandbox"],"title":"Status"},"origin":{"type":"string","title":"Origin"},"not_before":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Not Before","description":"RFC 3339 instant this key began signing, where recorded."},"not_after":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Not After","description":"RFC 3339 instant this key stopped signing. None while the key is in active service."},"superseded_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Superseded By","description":"key_id of the key that replaced this one, once rotated."},"warning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Warning","description":"Set on the sandbox dev key: receipts sealed with it are non-production evidence, never presentable as production records. Also set on retired production keys, where it states that retirement does not invalidate receipts sealed in-window."}},"type":"object","required":["key_id","public_key_hex","public_key_b64_raw32","status","origin"],"title":"PlanisphereVerifyingKey"},"PlanisphereVerifyingKeysResponse":{"properties":{"object":{"type":"string","const":"planisphere_verifying_keys","title":"Object","default":"planisphere_verifying_keys"},"keys":{"items":{"$ref":"#/components/schemas/PlanisphereVerifyingKey"},"type":"array","title":"Keys"},"note":{"type":"string","title":"Note"},"private_key_material_returned":{"type":"boolean","title":"Private Key Material Returned","default":false}},"type":"object","required":["keys","note"],"title":"PlanisphereVerifyingKeysResponse"},"ProductMapResponse":{"properties":{"product":{"type":"string","title":"Product"},"definition":{"type":"string","title":"Definition"},"operating_order":{"items":{"type":"string"},"type":"array","title":"Operating Order"},"control_plane_objects":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Control Plane Objects"},"claim_boundary":{"additionalProperties":true,"type":"object","title":"Claim Boundary"}},"type":"object","required":["product","definition","operating_order","control_plane_objects","claim_boundary"],"title":"ProductMapResponse"},"ProposedActionRequest":{"properties":{"tenant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant","description":"Optional tenant id assertion."},"surface":{"type":"string","title":"Surface","default":"generic","examples":["slack","browser","generic"]},"source_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Key"},"source_payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source Payload"},"proposed_action":{"type":"string","title":"Proposed Action","description":"The action an AI system or workflow is about to take.","examples":["File an AI-drafted motion after citation review."]},"law_context":{"$ref":"#/components/schemas/LawContext"},"redacted_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redacted Text","description":"Optional transient text for policy checks. Raw text is not persisted."},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["proposed_action"],"title":"ProposedActionRequest"},"ProposedActionResponse":{"properties":{"action_execution":{"type":"string","const":"not_performed_by_this_endpoint","title":"Action Execution","default":"not_performed_by_this_endpoint"},"enforcement_observation":{"type":"string","const":"not_observed","title":"Enforcement Observation","default":"not_observed"},"receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Id"},"receipt_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Url"},"receipt_original_root":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Original Root","description":"Root of the original retained work; an export wrapper or later reconstructed packet may have a different root. The locator is unsigned."},"tenant":{"type":"string","title":"Tenant"},"vertical":{"type":"string","title":"Vertical","default":"law"},"policy_pack":{"type":"string","title":"Policy Pack"},"pack_contract":{"additionalProperties":true,"type":"object","title":"Pack Contract"},"action_contract":{"additionalProperties":true,"type":"object","title":"Action Contract"},"surface":{"type":"string","title":"Surface"},"workflow_stage":{"type":"string","enum":["pre_execution","review","recorded"],"title":"Workflow Stage","default":"pre_execution"},"decision":{"type":"string","enum":["allow","needs_review","block"],"title":"Decision"},"action_key":{"type":"string","title":"Action Key"},"source_key":{"type":"string","title":"Source Key"},"payload_hash":{"type":"string","title":"Payload Hash"},"action_type":{"type":"string","title":"Action Type"},"doctrine_anchors":{"items":{"type":"string"},"type":"array","title":"Doctrine Anchors"},"privacy_flags":{"items":{"type":"string"},"type":"array","title":"Privacy Flags"},"missing_fields":{"items":{"type":"string"},"type":"array","title":"Missing Fields"},"review_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Route"},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"},"reason":{"type":"string","title":"Reason"},"next_step":{"type":"string","title":"Next Step"},"available_review_decisions":{"items":{"type":"string","enum":["approved","rejected","escalated"]},"type":"array","title":"Available Review Decisions"},"receipt_schema":{"items":{"type":"string"},"type":"array","title":"Receipt Schema"},"corpus_refs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Corpus Refs"},"catalog_refs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Catalog Refs"},"claim_status":{"additionalProperties":true,"type":"object","title":"Claim Status"},"evidence_detail":{"additionalProperties":true,"type":"object","title":"Evidence Detail"},"evidence_packet":{"$ref":"#/components/schemas/EvidencePacketStub"},"verify_request":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Verify Request","description":"Ready-to-POST body for POST /v1/verify (alias: /evidence-packets/verify-seal) proving THIS gate receipt's seal: decision is the gate decision, review_route is the gate's route. Raw-safe: hashes and seal fields only. The same fields POST to /evidence-packets/seal-bundle for the offline 4-file bundle."},"route_dispatch":{"anyOf":[{"$ref":"#/components/schemas/RouteDispatchStub"},{"type":"null"}]}},"type":"object","required":["tenant","policy_pack","surface","decision","action_key","source_key","payload_hash","action_type","doctrine_anchors","privacy_flags","missing_fields","review_route","reason","next_step","available_review_decisions","receipt_schema","evidence_packet"],"title":"ProposedActionResponse"},"ProviderCallbackResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"channel":{"type":"string","title":"Channel"},"target":{"type":"string","title":"Target"},"action_key":{"type":"string","title":"Action Key"},"decision":{"type":"string","enum":["approved","rejected","escalated"],"title":"Decision"},"reviewer":{"type":"string","title":"Reviewer"},"receipt_key":{"type":"string","title":"Receipt Key"},"evidence_packet":{"$ref":"#/components/schemas/EvidencePacketStub"},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"},"external_reference":{"additionalProperties":true,"type":"object","title":"External Reference"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"idempotency_status":{"type":"string","enum":["recorded","idempotent_replay"],"title":"Idempotency Status","default":"recorded"},"idempotency_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency Key"},"mirror_seal":{"anyOf":[{"$ref":"#/components/schemas/LawMirrorSeal"},{"type":"null"}]}},"type":"object","required":["tenant","channel","target","action_key","decision","reviewer","receipt_key","evidence_packet"],"title":"ProviderCallbackResponse"},"PublicKeyRequest":{"properties":{"suite":{"type":"string","title":"Suite","default":"hpke-base:dhkem-p256-hkdf-sha256:hkdf-sha256:aes-256-gcm"},"public_key":{"type":"string","title":"Public Key","description":"Base64url uncompressed P-256 point (65 bytes). Never a private key."},"label":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Label"}},"type":"object","required":["public_key"],"title":"PublicKeyRequest"},"RecoveryPolicySnapshot":{"properties":{"previous_policy":{"additionalProperties":true,"type":"object","title":"Previous Policy"},"current_policy":{"additionalProperties":true,"type":"object","title":"Current Policy"},"snapshot_digest":{"type":"string","title":"Snapshot Digest"}},"type":"object","required":["previous_policy","current_policy","snapshot_digest"],"title":"RecoveryPolicySnapshot"},"RecoveryStandardPolicyRequest":{"properties":{"snapshot_digest":{"type":"string","pattern":"^[a-f0-9]{64}$","title":"Snapshot Digest"}},"additionalProperties":false,"type":"object","required":["snapshot_digest"],"title":"RecoveryStandardPolicyRequest"},"RemovalRequest":{"properties":{"scope":{"$ref":"#/components/schemas/DataScope"},"preview_digest":{"type":"string","pattern":"^[a-f0-9]{64}$","title":"Preview Digest"},"operation_id":{"type":"string","format":"uuid","title":"Operation Id"}},"additionalProperties":false,"type":"object","required":["scope","preview_digest","operation_id"],"title":"RemovalRequest"},"ReviewDecisionRequest":{"properties":{"action_key":{"type":"string","title":"Action Key"},"reviewer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewer","description":"Who decided. IGNORED for a signed-in person — the server names them from the session, because a receipt must not take the caller's word for who was acting. Required for an API key, which authenticates a caller and names no human; that value is recorded with reviewer_basis='caller_asserted' so the receipt says plainly it is the operator's own claim. Placeholder strings are refused.","examples":["partner-or-gc"]},"decision":{"type":"string","enum":["approved","rejected","escalated"],"title":"Decision"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","description":"Optional reviewer note accepted at the API edge. Planisphere stores only reason_present and reason_hash; do not send raw client, prompt, document, or privileged content."},"mirror_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mirror Version","description":"Optional law-grading mirror version. Supply with mirror_digest and mirror_grades to bind client-side categorical review grades to the receipt."},"mirror_digest":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mirror Digest","description":"Optional digest from GET /law/grading-mirror."},"mirror_grades":{"anyOf":[{"additionalProperties":{"type":"string","enum":["PASS","PARTIAL","FAIL","NA"]},"type":"object"},{"type":"null"}],"title":"Mirror Grades","description":"Optional categorical review grades produced client-side. Raw legal text is not accepted or stored here."}},"type":"object","required":["action_key","decision"],"title":"ReviewDecisionRequest"},"ReviewDecisionResponse":{"properties":{"receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Id"},"receipt_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Url"},"receipt_original_root":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Original Root","description":"Root of the original retained work; an export wrapper or later reconstructed packet may have a different root. The locator is unsigned."},"receipt_key":{"type":"string","title":"Receipt Key"},"action_key":{"type":"string","title":"Action Key"},"tenant":{"type":"string","title":"Tenant"},"decision":{"type":"string","enum":["approved","rejected","escalated"],"title":"Decision"},"reviewer":{"type":"string","title":"Reviewer"},"evidence_packet":{"$ref":"#/components/schemas/EvidencePacketStub"},"verify_request":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Verify Request","description":"Ready-to-POST body for POST /v1/verify (alias: /evidence-packets/verify-seal) proving THIS review receipt's seal: decision is the REVIEW decision and review_route is the original gate's route (the packet in this response, not the gate-time packet). Raw-safe: hashes and seal fields only."},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"},"mirror_seal":{"anyOf":[{"$ref":"#/components/schemas/LawMirrorSeal"},{"type":"null"}]}},"type":"object","required":["receipt_key","action_key","tenant","decision","reviewer","evidence_packet"],"title":"ReviewDecisionResponse"},"ReviewQueueItem":{"properties":{"action_key":{"type":"string","title":"Action Key"},"source_key":{"type":"string","title":"Source Key"},"payload_hash":{"type":"string","title":"Payload Hash"},"decision":{"type":"string","title":"Decision"},"action_type":{"type":"string","title":"Action Type"},"review_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Route"},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"next_step":{"type":"string","title":"Next Step"},"evidence_packet_href":{"type":"string","title":"Evidence Packet Href"},"route_dispatch":{"anyOf":[{"$ref":"#/components/schemas/RouteDispatchStub"},{"type":"null"}]},"handled":{"type":"boolean","title":"Handled","description":"True once a terminal review decision (approved or rejected) is recorded; handled items leave the default queue view.","default":false},"resolution":{"type":"string","enum":["unreviewed","escalated","approved","rejected"],"title":"Resolution","default":"unreviewed"},"resolution_receipt":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Resolution Receipt","description":"Latest review receipt summary (receipt_key, reviewer, decision, created_at) when any review decision has been recorded."},"boundary":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Boundary","description":"For a crossing a workspace boundary policy held or flagged: the policy (id, version, name, statement, response), who guards it, what crossed when readable details are kept, and whether the caller may decide it."}},"type":"object","required":["action_key","source_key","payload_hash","decision","action_type","review_route","created_at","next_step","evidence_packet_href"],"title":"ReviewQueueItem"},"ReviewQueueResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"items":{"items":{"$ref":"#/components/schemas/ReviewQueueItem"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"total_count":{"type":"integer","title":"Total Count","description":"Items matching the status filter before pagination.","default":0},"limit":{"type":"integer","title":"Limit","default":50},"offset":{"type":"integer","title":"Offset","default":0},"status_filter":{"type":"string","enum":["pending","handled","all"],"title":"Status Filter","default":"pending"}},"type":"object","required":["tenant","items","count"],"title":"ReviewQueueResponse"},"RotateRequest":{"properties":{"expected_version":{"type":"integer","minimum":1.0,"title":"Expected Version"},"remove_person_ids":{"items":{"type":"string"},"type":"array","maxItems":256,"title":"Remove Person Ids"},"public_key":{"type":"string","title":"Public Key"},"wraps":{"items":{"$ref":"#/components/schemas/Wrap"},"type":"array","maxItems":4096,"minItems":1,"title":"Wraps"},"turn_rewraps":{"items":{"$ref":"#/components/schemas/TurnRewrap"},"type":"array","maxItems":200000,"title":"Turn Rewraps"}},"type":"object","required":["expected_version","public_key","wraps"],"title":"RotateRequest"},"RouteDeliveryResponse":{"properties":{"dispatch":{"$ref":"#/components/schemas/RouteDispatchItem"},"status":{"type":"string","enum":["prepared","sent","failed"],"title":"Status"},"message":{"type":"string","title":"Message"},"external_delivery_attempted":{"type":"boolean","title":"External Delivery Attempted"},"delivery":{"additionalProperties":true,"type":"object","title":"Delivery"}},"type":"object","required":["dispatch","status","message","external_delivery_attempted","delivery"],"title":"RouteDeliveryResponse"},"RouteDispatchItem":{"properties":{"dispatch_key":{"type":"string","title":"Dispatch Key"},"href":{"type":"string","title":"Href"},"action_key":{"type":"string","title":"Action Key"},"tenant":{"type":"string","title":"Tenant"},"decision":{"type":"string","title":"Decision"},"action_type":{"type":"string","title":"Action Type"},"review_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Route"},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"},"channel":{"type":"string","title":"Channel"},"target":{"type":"string","title":"Target"},"status":{"type":"string","enum":["pending","prepared","sent","failed","resolved","dead_letter"],"title":"Status"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"delivery":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Delivery"},"attempt_count":{"type":"integer","title":"Attempt Count"},"last_attempt_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Attempt At"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"evidence_packet_href":{"type":"string","title":"Evidence Packet Href"}},"type":"object","required":["dispatch_key","href","action_key","tenant","decision","action_type","review_route","channel","target","status","payload","delivery","attempt_count","last_attempt_at","last_error","created_at","updated_at","evidence_packet_href"],"title":"RouteDispatchItem"},"RouteDispatchStub":{"properties":{"dispatch_key":{"type":"string","title":"Dispatch Key"},"href":{"type":"string","title":"Href"},"channel":{"type":"string","title":"Channel"},"target":{"type":"string","title":"Target"},"status":{"type":"string","enum":["pending","prepared","sent","failed","resolved","dead_letter"],"title":"Status","default":"pending"},"review_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Route"},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"}},"type":"object","required":["dispatch_key","href","channel","target"],"title":"RouteDispatchStub"},"RouteOutboxAlertItem":{"properties":{"severity":{"type":"string","enum":["info","warning","critical"],"title":"Severity"},"kind":{"type":"string","title":"Kind"},"count":{"type":"integer","title":"Count"},"message":{"type":"string","title":"Message"},"next_step":{"type":"string","title":"Next Step"},"href":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Href"}},"type":"object","required":["severity","kind","count","message","next_step"],"title":"RouteOutboxAlertItem"},"RouteOutboxAlertsResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"highest_severity":{"type":"string","enum":["clear","info","warning","critical"],"title":"Highest Severity"},"alert_count":{"type":"integer","title":"Alert Count"},"summary":{"$ref":"#/components/schemas/RouteOutboxSummaryResponse"},"alerts":{"items":{"$ref":"#/components/schemas/RouteOutboxAlertItem"},"type":"array","title":"Alerts"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Outbox alerts are derived from route status metadata only. They are not legal advice, production notifications, or proof that external delivery has occurred."}},"type":"object","required":["tenant","highest_severity","alert_count","summary","alerts"],"title":"RouteOutboxAlertsResponse"},"RouteOutboxBackoffItem":{"properties":{"dispatch_key":{"type":"string","title":"Dispatch Key"},"action_key":{"type":"string","title":"Action Key"},"channel":{"type":"string","title":"Channel"},"target":{"type":"string","title":"Target"},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"},"status":{"type":"string","title":"Status"},"attempt_count":{"type":"integer","title":"Attempt Count"},"retry_delay_seconds":{"type":"integer","title":"Retry Delay Seconds"},"next_attempt_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Attempt At"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"last_attempt_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Attempt At"}},"type":"object","required":["dispatch_key","action_key","channel","target","status","attempt_count","retry_delay_seconds"],"title":"RouteOutboxBackoffItem"},"RouteOutboxDeadLetterItem":{"properties":{"dispatch_key":{"type":"string","title":"Dispatch Key"},"action_key":{"type":"string","title":"Action Key"},"channel":{"type":"string","title":"Channel"},"target":{"type":"string","title":"Target"},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"},"status":{"type":"string","title":"Status"},"attempt_count":{"type":"integer","title":"Attempt Count"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"last_attempt_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Attempt At"}},"type":"object","required":["dispatch_key","action_key","channel","target","status","attempt_count"],"title":"RouteOutboxDeadLetterItem"},"RouteOutboxDeadLetterRequest":{"properties":{"reason_code":{"type":"string","enum":["retry_ceiling","route_unavailable","integration_unavailable","operator_quarantine"],"title":"Reason Code","default":"retry_ceiling"},"operator":{"anyOf":[{"type":"string","maxLength":180},{"type":"null"}],"title":"Operator","description":"Optional operator identifier. Do not send raw secrets or incident notes."}},"type":"object","title":"RouteOutboxDeadLetterRequest"},"RouteOutboxDeadLetterResponse":{"properties":{"dispatch":{"$ref":"#/components/schemas/RouteDispatchItem"},"reason_code":{"type":"string","title":"Reason Code"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"message":{"type":"string","title":"Message","default":"Dispatch moved to the dead-letter queue."},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Dead-letter quarantine stores route status metadata and a reason code. It does not retry delivery, send external notifications, or store raw prompt/document content."}},"type":"object","required":["dispatch","reason_code"],"title":"RouteOutboxDeadLetterResponse"},"RouteOutboxExternalNotReadyItem":{"properties":{"dispatch_key":{"type":"string","title":"Dispatch Key"},"action_key":{"type":"string","title":"Action Key"},"channel":{"type":"string","title":"Channel"},"target":{"type":"string","title":"Target"},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"},"status":{"type":"string","title":"Status"},"attempt_count":{"type":"integer","title":"Attempt Count"},"readiness_status":{"type":"string","title":"Readiness Status"},"ready_for_operator_send":{"type":"boolean","title":"Ready For Operator Send"},"missing_config_keys":{"items":{"type":"string"},"type":"array","title":"Missing Config Keys"},"missing_config_one_of":{"items":{"items":{"type":"string"},"type":"array"},"type":"array","title":"Missing Config One Of"},"missing_secret_ref":{"type":"boolean","title":"Missing Secret Ref","default":false},"secret_provider":{"type":"string","title":"Secret Provider","default":"none"},"secret_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Error"},"secret_lookup":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Lookup"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"last_attempt_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Attempt At"}},"type":"object","required":["dispatch_key","action_key","channel","target","status","attempt_count","readiness_status","ready_for_operator_send"],"title":"RouteOutboxExternalNotReadyItem"},"RouteOutboxNotificationResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"notification_channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notification Channel"},"notification_ready":{"type":"boolean","title":"Notification Ready"},"emitted":{"type":"boolean","title":"Emitted","default":false},"highest_severity":{"type":"string","enum":["clear","info","warning","critical"],"title":"Highest Severity"},"alert_count":{"type":"integer","title":"Alert Count"},"summary":{"$ref":"#/components/schemas/RouteOutboxSummaryResponse"},"alerts":{"items":{"$ref":"#/components/schemas/RouteOutboxAlertItem"},"type":"array","title":"Alerts"},"event":{"additionalProperties":true,"type":"object","title":"Event"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"external_delivery_attempted":{"type":"boolean","title":"External Delivery Attempted","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Production notification events are derived from route status metadata only. The implemented channel emits raw-safe JSON to the operator log stream for production infrastructure to collect. It does not send provider traffic, expose raw route payload bodies, log raw API keys, log secrets, or prove external delivery."}},"type":"object","required":["tenant","notification_ready","highest_severity","alert_count","summary","alerts","event"],"title":"RouteOutboxNotificationResponse"},"RouteOutboxProcessItem":{"properties":{"dispatch_key":{"type":"string","title":"Dispatch Key"},"action_key":{"type":"string","title":"Action Key"},"channel":{"type":"string","title":"Channel"},"target":{"type":"string","title":"Target"},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"},"before_status":{"type":"string","title":"Before Status"},"after_status":{"type":"string","title":"After Status"},"message":{"type":"string","title":"Message"},"external_delivery_attempted":{"type":"boolean","title":"External Delivery Attempted"},"delivery_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Kind"},"attempt_count":{"type":"integer","title":"Attempt Count"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"dead_letter_candidate":{"type":"boolean","title":"Dead Letter Candidate","default":false}},"type":"object","required":["dispatch_key","action_key","channel","target","before_status","after_status","message","external_delivery_attempted","attempt_count"],"title":"RouteOutboxProcessItem"},"RouteOutboxProcessRequest":{"properties":{"statuses":{"items":{"type":"string","enum":["pending","failed"]},"type":"array","title":"Statuses","description":"Dispatch statuses to process through the safe hosted worker path."},"limit":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Limit","default":100},"max_attempts":{"type":"integer","maximum":25.0,"minimum":1.0,"title":"Max Attempts","description":"Failed dispatches at or above this attempt count are skipped as dead-letter candidates.","default":3},"respect_backoff":{"type":"boolean","title":"Respect Backoff","description":"When true, failed dispatches inside the retry backoff window are skipped.","default":true},"base_backoff_seconds":{"type":"integer","maximum":86400.0,"minimum":1.0,"title":"Base Backoff Seconds","description":"Base exponential backoff in seconds for failed dispatch retry planning.","default":300}},"type":"object","title":"RouteOutboxProcessRequest"},"RouteOutboxProcessResponse":{"properties":{"tenant_id":{"type":"string","title":"Tenant Id"},"requested_statuses":{"items":{"type":"string"},"type":"array","title":"Requested Statuses"},"send_external":{"type":"boolean","title":"Send External","default":false},"max_attempts":{"type":"integer","title":"Max Attempts","default":3},"respect_backoff":{"type":"boolean","title":"Respect Backoff","default":true},"base_backoff_seconds":{"type":"integer","title":"Base Backoff Seconds","default":300},"processed_count":{"type":"integer","title":"Processed Count"},"skipped_unavailable_count":{"type":"integer","title":"Skipped Unavailable Count","default":0},"diagnostic_limit":{"type":"integer","title":"Diagnostic Limit","default":100},"dead_letter_candidates_truncated":{"type":"boolean","title":"Dead Letter Candidates Truncated","default":false},"backoff_waiting_truncated":{"type":"boolean","title":"Backoff Waiting Truncated","default":false},"skipped_count":{"type":"integer","title":"Skipped Count"},"dead_letter_candidate_count":{"type":"integer","title":"Dead Letter Candidate Count"},"dead_letter_candidates":{"items":{"$ref":"#/components/schemas/RouteOutboxDeadLetterItem"},"type":"array","title":"Dead Letter Candidates"},"backoff_waiting_count":{"type":"integer","title":"Backoff Waiting Count"},"backoff_waiting":{"items":{"$ref":"#/components/schemas/RouteOutboxBackoffItem"},"type":"array","title":"Backoff Waiting"},"external_not_ready_count":{"type":"integer","title":"External Not Ready Count","default":0},"external_not_ready":{"items":{"$ref":"#/components/schemas/RouteOutboxExternalNotReadyItem"},"type":"array","title":"External Not Ready"},"external_delivery_attempted":{"type":"boolean","title":"External Delivery Attempted"},"items":{"items":{"$ref":"#/components/schemas/RouteOutboxProcessItem"},"type":"array","title":"Items"},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Hosted outbox processing prepares or records delivery work without attempting external Slack, ServiceNow, or webhook sends. Live external delivery remains operator-only via process-outbox --send-external. Failed dispatches still inside the retry backoff window are skipped by default. External live sends with incomplete or unresolved tenant integrations are skipped before delivery attempts are recorded."}},"type":"object","required":["tenant_id","requested_statuses","processed_count","skipped_count","dead_letter_candidate_count","dead_letter_candidates","backoff_waiting_count","backoff_waiting","external_delivery_attempted","items"],"title":"RouteOutboxProcessResponse"},"RouteOutboxRequeueRequest":{"properties":{"reason_code":{"type":"string","enum":["route_fixed","integration_fixed","operator_retry"],"title":"Reason Code","default":"operator_retry"},"operator":{"anyOf":[{"type":"string","maxLength":180},{"type":"null"}],"title":"Operator","description":"Optional operator identifier. Do not send raw secrets or incident notes."}},"type":"object","title":"RouteOutboxRequeueRequest"},"RouteOutboxRequeueResponse":{"properties":{"dispatch":{"$ref":"#/components/schemas/RouteDispatchItem"},"reason_code":{"type":"string","title":"Reason Code"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"message":{"type":"string","title":"Message","default":"Dead-lettered dispatch requeued for safe processing."},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Requeue changes route status back to pending and preserves attempt history. It does not retry delivery immediately, send external notifications, or store raw prompt/document content."}},"type":"object","required":["dispatch","reason_code"],"title":"RouteOutboxRequeueResponse"},"RouteOutboxResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"items":{"items":{"$ref":"#/components/schemas/RouteDispatchItem"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["tenant","items","count"],"title":"RouteOutboxResponse"},"RouteOutboxRetryPlanItem":{"properties":{"dispatch_key":{"type":"string","title":"Dispatch Key"},"action_key":{"type":"string","title":"Action Key"},"status":{"type":"string","title":"Status"},"channel":{"type":"string","title":"Channel"},"target":{"type":"string","title":"Target"},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"},"attempt_count":{"type":"integer","title":"Attempt Count"},"state":{"type":"string","enum":["ready","waiting_backoff","dead_letter_candidate","quarantined","external_prepared","complete","not_retryable"],"title":"State"},"next_action":{"type":"string","title":"Next Action"},"href":{"type":"string","title":"Href"},"retry_delay_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retry Delay Seconds"},"next_attempt_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Attempt At"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"}},"type":"object","required":["dispatch_key","action_key","status","channel","target","attempt_count","state","next_action","href"],"title":"RouteOutboxRetryPlanItem"},"RouteOutboxRetryPlanResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"count":{"type":"integer","title":"Count"},"base_backoff_seconds":{"type":"integer","title":"Base Backoff Seconds","default":300},"max_attempts":{"type":"integer","title":"Max Attempts","default":3},"ready_count":{"type":"integer","title":"Ready Count"},"waiting_backoff_count":{"type":"integer","title":"Waiting Backoff Count"},"dead_letter_candidate_count":{"type":"integer","title":"Dead Letter Candidate Count"},"quarantined_count":{"type":"integer","title":"Quarantined Count"},"external_prepared_count":{"type":"integer","title":"External Prepared Count"},"items":{"items":{"$ref":"#/components/schemas/RouteOutboxRetryPlanItem"},"type":"array","title":"Items"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Retry plan is a read-only schedule over route metadata. It does not retry delivery, send external notifications, or store raw prompt/document content."}},"type":"object","required":["tenant","count","ready_count","waiting_backoff_count","dead_letter_candidate_count","quarantined_count","external_prepared_count","items"],"title":"RouteOutboxRetryPlanResponse"},"RouteOutboxSchedulerRun":{"properties":{"run_id":{"type":"string","title":"Run Id"},"tenant_id":{"type":"string","title":"Tenant Id"},"trigger":{"type":"string","title":"Trigger"},"status":{"type":"string","enum":["completed_clear","completed_attention"],"title":"Status"},"send_external":{"type":"boolean","title":"Send External"},"respect_backoff":{"type":"boolean","title":"Respect Backoff"},"base_backoff_seconds":{"type":"integer","title":"Base Backoff Seconds"},"max_attempts":{"type":"integer","title":"Max Attempts"},"processed_count":{"type":"integer","title":"Processed Count"},"skipped_count":{"type":"integer","title":"Skipped Count"},"dead_letter_candidate_count":{"type":"integer","title":"Dead Letter Candidate Count"},"backoff_waiting_count":{"type":"integer","title":"Backoff Waiting Count"},"external_not_ready_count":{"type":"integer","title":"External Not Ready Count","default":0},"external_delivery_attempted":{"type":"boolean","title":"External Delivery Attempted"},"result":{"additionalProperties":true,"type":"object","title":"Result"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false}},"type":"object","required":["run_id","tenant_id","trigger","status","send_external","respect_backoff","base_backoff_seconds","max_attempts","processed_count","skipped_count","dead_letter_candidate_count","backoff_waiting_count","external_delivery_attempted","result","started_at","finished_at"],"title":"RouteOutboxSchedulerRun"},"RouteOutboxSchedulerRunsResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"count":{"type":"integer","title":"Count"},"items":{"items":{"$ref":"#/components/schemas/RouteOutboxSchedulerRun"},"type":"array","title":"Items"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Scheduler run history stores compact route-processing metadata only. It does not include raw prompts, route payload bodies, raw secrets, or raw API keys."}},"type":"object","required":["tenant","count","items"],"title":"RouteOutboxSchedulerRunsResponse"},"RouteOutboxSimulateCallbackRequest":{"properties":{"decision":{"type":"string","enum":["approved","rejected","escalated"],"title":"Decision","default":"approved"},"reviewer":{"type":"string","maxLength":180,"title":"Reviewer","description":"Fixture reviewer label. Do not send raw names or incident notes.","default":"console-fixture"},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reason","description":"Fixture review reason. Do not include raw prompt or document content.","default":"Console fixture completed a signed provider callback walkthrough."},"external_reference":{"additionalProperties":true,"type":"object","title":"External Reference"},"mirror_grades":{"anyOf":[{"additionalProperties":{"type":"string","enum":["PASS","PARTIAL","FAIL","NA"]},"type":"object"},{"type":"null"}],"title":"Mirror Grades","description":"Optional categorical law mirror grades for the fixture. Raw legal text is not accepted or stored."}},"type":"object","title":"RouteOutboxSimulateCallbackRequest"},"RouteOutboxSimulateCallbackResponse":{"properties":{"dispatch":{"$ref":"#/components/schemas/RouteDispatchItem"},"review":{"$ref":"#/components/schemas/ReviewDecisionResponse"},"simulated_callback":{"additionalProperties":true,"type":"object","title":"Simulated Callback"},"mirror_seal_verification":{"anyOf":[{"$ref":"#/components/schemas/LawMirrorSealVerificationResponse"},{"type":"null"}]},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"live_external_send_attempted":{"type":"boolean","title":"Live External Send Attempted","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Callback simulation is a local control-plane fixture. It records the same review/seal metadata shape a signed provider callback returns, but it does not send provider traffic, prove provider-side delivery, or certify legal compliance."}},"type":"object","required":["dispatch","review","simulated_callback"],"title":"RouteOutboxSimulateCallbackResponse"},"RouteOutboxSummaryResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"count":{"type":"integer","title":"Count"},"counts_by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts By Status"},"pending_count":{"type":"integer","title":"Pending Count"},"failed_count":{"type":"integer","title":"Failed Count"},"prepared_count":{"type":"integer","title":"Prepared Count"},"sent_count":{"type":"integer","title":"Sent Count"},"resolved_count":{"type":"integer","title":"Resolved Count"},"dead_letter_count":{"type":"integer","title":"Dead Letter Count"},"retryable_count":{"type":"integer","title":"Retryable Count"},"retryable_failed_count":{"type":"integer","title":"Retryable Failed Count"},"needs_attention_count":{"type":"integer","title":"Needs Attention Count"},"dead_letter_candidate_count":{"type":"integer","title":"Dead Letter Candidate Count"},"external_prepared_count":{"type":"integer","title":"External Prepared Count"},"max_attempts":{"type":"integer","title":"Max Attempts","default":3},"oldest_pending_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oldest Pending At"},"latest_update_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Update At"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Outbox summary is operational metadata for tenant routing work. It does not include raw prompts, route payload bodies, raw secrets, or raw API keys."}},"type":"object","required":["tenant","count","counts_by_status","pending_count","failed_count","prepared_count","sent_count","resolved_count","dead_letter_count","retryable_count","retryable_failed_count","needs_attention_count","dead_letter_candidate_count","external_prepared_count"],"title":"RouteOutboxSummaryResponse"},"RouteOutboxTickRequest":{"properties":{"statuses":{"items":{"type":"string","enum":["pending","failed"]},"type":"array","title":"Statuses","description":"Dispatch statuses to process through the safe hosted worker path."},"limit":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Limit","default":100},"max_attempts":{"type":"integer","maximum":25.0,"minimum":1.0,"title":"Max Attempts","description":"Failed dispatches at or above this attempt count are skipped as dead-letter candidates.","default":3},"respect_backoff":{"type":"boolean","title":"Respect Backoff","description":"When true, failed dispatches inside the retry backoff window are skipped.","default":true},"base_backoff_seconds":{"type":"integer","maximum":86400.0,"minimum":1.0,"title":"Base Backoff Seconds","description":"Base exponential backoff in seconds for failed dispatch retry planning.","default":300},"trigger":{"type":"string","maxLength":80,"title":"Trigger","description":"Scheduler trigger label, such as hosted_tick, cron_tick, or operator_tick. Do not include secrets or incident notes.","default":"hosted_tick"}},"type":"object","title":"RouteOutboxTickRequest"},"RouteOutboxTickResponse":{"properties":{"tenant_id":{"type":"string","title":"Tenant Id"},"requested_statuses":{"items":{"type":"string"},"type":"array","title":"Requested Statuses"},"send_external":{"type":"boolean","title":"Send External","default":false},"max_attempts":{"type":"integer","title":"Max Attempts","default":3},"respect_backoff":{"type":"boolean","title":"Respect Backoff","default":true},"base_backoff_seconds":{"type":"integer","title":"Base Backoff Seconds","default":300},"processed_count":{"type":"integer","title":"Processed Count"},"skipped_unavailable_count":{"type":"integer","title":"Skipped Unavailable Count","default":0},"diagnostic_limit":{"type":"integer","title":"Diagnostic Limit","default":100},"dead_letter_candidates_truncated":{"type":"boolean","title":"Dead Letter Candidates Truncated","default":false},"backoff_waiting_truncated":{"type":"boolean","title":"Backoff Waiting Truncated","default":false},"skipped_count":{"type":"integer","title":"Skipped Count"},"dead_letter_candidate_count":{"type":"integer","title":"Dead Letter Candidate Count"},"dead_letter_candidates":{"items":{"$ref":"#/components/schemas/RouteOutboxDeadLetterItem"},"type":"array","title":"Dead Letter Candidates"},"backoff_waiting_count":{"type":"integer","title":"Backoff Waiting Count"},"backoff_waiting":{"items":{"$ref":"#/components/schemas/RouteOutboxBackoffItem"},"type":"array","title":"Backoff Waiting"},"external_not_ready_count":{"type":"integer","title":"External Not Ready Count","default":0},"external_not_ready":{"items":{"$ref":"#/components/schemas/RouteOutboxExternalNotReadyItem"},"type":"array","title":"External Not Ready"},"external_delivery_attempted":{"type":"boolean","title":"External Delivery Attempted"},"items":{"items":{"$ref":"#/components/schemas/RouteOutboxProcessItem"},"type":"array","title":"Items"},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Hosted outbox processing prepares or records delivery work without attempting external Slack, ServiceNow, or webhook sends. Live external delivery remains operator-only via process-outbox --send-external. Failed dispatches still inside the retry backoff window are skipped by default. External live sends with incomplete or unresolved tenant integrations are skipped before delivery attempts are recorded."},"run":{"$ref":"#/components/schemas/RouteOutboxSchedulerRun"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"scheduler_claim_boundary":{"type":"string","title":"Scheduler Claim Boundary","default":"Scheduler tick records a durable run receipt for hosted or cron-style outbox processing. Hosted ticks do not attempt live external sends; external delivery remains operator-only."}},"type":"object","required":["tenant_id","requested_statuses","processed_count","skipped_count","dead_letter_candidate_count","dead_letter_candidates","backoff_waiting_count","backoff_waiting","external_delivery_attempted","items","run"],"title":"RouteOutboxTickResponse"},"RulesResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"etag":{"type":"string","title":"Etag"},"policies":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Policies"}},"type":"object","required":["tenant","etag","policies"],"title":"RulesResponse"},"SandboxKeyRequest":{"properties":{"email":{"type":"string","title":"Email","examples":["dev@example.com"]},"organization":{"type":"string","title":"Organization","examples":["Example Dev"]},"first_touch":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"title":"First Touch"}},"type":"object","required":["email","organization"],"title":"SandboxKeyRequest"},"SandboxKeyResponse":{"properties":{"object":{"type":"string","const":"sandbox_api_key","title":"Object","default":"sandbox_api_key"},"tenant":{"type":"string","title":"Tenant"},"organization":{"type":"string","title":"Organization"},"email":{"type":"string","title":"Email"},"api_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key Id"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"api_key_returned_once":{"type":"boolean","title":"Api Key Returned Once"},"sandbox":{"type":"boolean","const":true,"title":"Sandbox","default":true},"environment":{"type":"string","const":"sandbox","title":"Environment","default":"sandbox"},"free_credits_monthly":{"type":"integer","title":"Free Credits Monthly"},"upgrade_hint":{"type":"string","title":"Upgrade Hint","default":"The free plan includes a monthly allowance of credits. At the allowance, recording pauses until the 1st; add a card on Billing in the console to keep recording past it."},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Records in a free workspace are sealed with Planisphere's production key, like any other. Receipts sealed earlier with the sandbox signer carry the reproducible dev key (dev_key:true) and stay non-production."},"quickstart_url":{"type":"string","title":"Quickstart Url","default":"/quickstart"},"console_url":{"type":"string","title":"Console Url","default":"/console"},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false}},"type":"object","required":["tenant","organization","email","api_key_id","api_key_returned_once","free_credits_monthly"],"title":"SandboxKeyResponse"},"SealBundleBatchRecord":{"properties":{"receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Id"},"receipt_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Url"},"receipt_original_root":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Original Root","description":"Root of the original retained work; an export wrapper or later reconstructed packet may have a different root. The locator is unsigned."},"action_key":{"type":"string","title":"Action Key"},"path":{"type":"string","title":"Path","description":"Suggested directory (relative to the evidence package root) to write this record's files into, keeping the filenames."},"recorded_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recorded At"},"decision":{"type":"string","title":"Decision"},"status":{"type":"string","enum":["pending_review","blocked","recorded"],"title":"Status"},"bundle_kind":{"type":"string","title":"Bundle Kind"},"attestation_root":{"type":"string","title":"Attestation Root"},"root_scheme":{"type":"string","title":"Root Scheme"},"key_status":{"type":"string","enum":["production","production_retired","sandbox","unavailable","unknown"],"title":"Key Status","default":"unknown"},"key_status_notice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Status Notice"},"files":{"additionalProperties":{"type":"string"},"type":"object","title":"Files"}},"type":"object","required":["action_key","path","decision","status","bundle_kind","attestation_root","root_scheme","files"],"title":"SealBundleBatchRecord"},"SealBundleBatchRequest":{"properties":{"action_keys":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Action Keys","description":"Action keys of the tenant's sealed records to package (max 100 per call, duplicates rejected). Pair with GET /tenant/exports/records to enumerate a time range first."}},"type":"object","required":["action_keys"],"title":"SealBundleBatchRequest"},"SealBundleBatchResponse":{"properties":{"object":{"type":"string","const":"evidence_seal_bundle_batch","title":"Object","default":"evidence_seal_bundle_batch"},"tenant":{"type":"string","title":"Tenant"},"count":{"type":"integer","title":"Count"},"records":{"items":{"$ref":"#/components/schemas/SealBundleBatchRecord"},"type":"array","title":"Records"},"manifest_filename":{"type":"string","title":"Manifest Filename","default":"MANIFEST.json"},"manifest":{"additionalProperties":true,"type":"object","title":"Manifest","description":"Package manifest listing every record's path, files, and attestation_root. Write it as MANIFEST.json at the package root."},"key_status":{"type":"string","enum":["production","production_retired","sandbox","unavailable","unknown"],"title":"Key Status","default":"unknown"},"key_status_notice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Status Notice","description":"Set when ANY record in the package is sealed with the sandbox dev key: sandbox bundles are non-production evidence and are not presentable as production records."},"verify_with":{"type":"string","title":"Verify With"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"The batch seal bundle packages raw-safe receipt metadata into offline-verifiable attestations. It is not external notarization, domain advice, a legal/medical/export-control determination, or a compliance certification."}},"type":"object","required":["tenant","count","records","manifest","verify_with"],"title":"SealBundleBatchResponse"},"SealBundleRequest":{"properties":{"action_key":{"type":"string","title":"Action Key"},"href":{"type":"string","title":"Href"},"status":{"type":"string","enum":["pending_review","blocked","recorded"],"title":"Status"},"decision":{"type":"string","title":"Decision"},"review_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Route"},"payload_hash":{"type":"string","title":"Payload Hash"},"packet_hash":{"type":"string","title":"Packet Hash"},"vertical":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vertical"},"seal":{"$ref":"#/components/schemas/EvidencePacketSeal"}},"type":"object","required":["action_key","href","status","decision","payload_hash","packet_hash","seal"],"title":"SealBundleRequest"},"SealBundleResponse":{"properties":{"receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Id"},"receipt_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Url"},"receipt_original_root":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Original Root","description":"Root of the original retained work; an export wrapper or later reconstructed packet may have a different root. The locator is unsigned."},"object":{"type":"string","const":"evidence_seal_bundle","title":"Object","default":"evidence_seal_bundle"},"bundle_kind":{"type":"string","title":"Bundle Kind"},"attestation_root":{"type":"string","title":"Attestation Root"},"root_scheme":{"type":"string","title":"Root Scheme"},"key_status":{"type":"string","enum":["production","production_retired","sandbox","unavailable","unknown"],"title":"Key Status","default":"unknown"},"key_status_notice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Status Notice","description":"Set when the bundle is sealed with the sandbox dev key: sandbox bundles are non-production evidence and are not presentable as production records."},"files":{"additionalProperties":{"type":"string"},"type":"object","title":"Files"},"verify_with":{"type":"string","title":"Verify With"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"The seal bundle packages raw-safe receipt metadata into an offline-verifiable attestation. It is not external notarization, domain advice, a legal/medical/export-control determination, or a compliance certification."}},"type":"object","required":["bundle_kind","attestation_root","root_scheme","files","verify_with"],"title":"SealBundleResponse"},"SealKeyRow":{"properties":{"seal_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seal Key Id","description":"The key that signed these records, or null for records whose stored response carried no seal. Null means UNKNOWN — never assume the current key."},"record_count":{"type":"integer","title":"Record Count"},"first_recorded_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Recorded At"},"last_recorded_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Recorded At"},"status":{"anyOf":[{"type":"string","enum":["production","production_retired","sandbox"]},{"type":"string","const":"unknown"}],"title":"Status","description":"The key's status in the published set. `unknown` means it is not published — for a retired key that has been dropped from the key history, this is indistinguishable from a forgery, which is why retired keys stay published forever.","default":"unknown"},"not_before":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Not Before"},"not_after":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Not After"},"superseded_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Superseded By"},"notice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notice","description":"Why this status is not a statement about the evidence."}},"type":"object","required":["seal_key_id","record_count"],"title":"SealKeyRow","description":"One signing key and the records it minted."},"SigninRequest":{"properties":{"email":{"type":"string","title":"Email","examples":["you@example.com"]},"ps_ft":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ps Ft","description":"Optional first-touch attribution; never an authentication credential."},"next":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next","description":"Optional console page to return to after sign-in: /console, or /console and a #page fragment. Anything else is ignored.","examples":["/console#activity"]}},"type":"object","required":["email"],"title":"SigninRequest"},"SigninResponse":{"properties":{"sent":{"type":"boolean","title":"Sent","default":true},"detail":{"type":"string","title":"Detail"},"raw_token_returned":{"type":"boolean","title":"Raw Token Returned","default":false}},"type":"object","required":["detail"],"title":"SigninResponse","description":"Uniform accept for POST /signin.\n\nDeliberately identical for known, unknown, and rate-limited emails so the\nendpoint cannot be used as an account-existence oracle."},"SignupCheckoutRequest":{"properties":{"email":{"type":"string","title":"Email","examples":["buyer@example.com"]},"organization":{"type":"string","title":"Organization","examples":["Example Legal Ops"]},"vertical_pack":{"type":"string","title":"Vertical Pack","default":"law/default-us-legal-ai-supervision"},"success_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Url"},"cancel_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Url"}},"type":"object","required":["email","organization"],"title":"SignupCheckoutRequest"},"SignupCheckoutResponse":{"properties":{"signup_key":{"type":"string","title":"Signup Key"},"claim_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Token"},"tenant":{"type":"string","title":"Tenant"},"organization":{"type":"string","title":"Organization"},"email":{"type":"string","title":"Email"},"vertical_pack":{"type":"string","title":"Vertical Pack"},"billing_provider":{"type":"string","enum":["stripe_test","stripe"],"title":"Billing Provider"},"checkout_session_id":{"type":"string","title":"Checkout Session Id"},"checkout_url":{"type":"string","title":"Checkout Url"},"success_url":{"type":"string","title":"Success Url"},"cancel_url":{"type":"string","title":"Cancel Url"},"return_url_bound":{"type":"boolean","title":"Return Url Bound","default":true},"raw_claim_token_in_return_url":{"type":"boolean","title":"Raw Claim Token In Return Url","default":false},"status":{"type":"string","enum":["checkout_created","payment_verified","completed"],"title":"Status"},"api_key_returned":{"type":"boolean","title":"Api Key Returned","default":false},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false},"claim_token_returned_once":{"type":"boolean","title":"Claim Token Returned Once","default":true},"claim_token_stored":{"type":"boolean","title":"Claim Token Stored","default":false},"claim_token_cookie_bound":{"type":"boolean","title":"Claim Token Cookie Bound","default":true},"browser_session_bound":{"type":"boolean","title":"Browser Session Bound","default":true},"signup_session_stored":{"type":"boolean","title":"Signup Session Stored","default":false}},"type":"object","required":["signup_key","tenant","organization","email","vertical_pack","billing_provider","checkout_session_id","checkout_url","success_url","cancel_url","status"],"title":"SignupCheckoutResponse"},"SignupClaimKeyRequest":{"properties":{"signup_key":{"type":"string","title":"Signup Key"},"checkout_session_id":{"type":"string","title":"Checkout Session Id"},"claim_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Token","description":"Optional when the returning browser still has the HttpOnly ps_signup_claim cookie set by checkout."}},"type":"object","required":["signup_key","checkout_session_id"],"title":"SignupClaimKeyRequest"},"SignupCompleteResponse":{"properties":{"signup_key":{"type":"string","title":"Signup Key"},"tenant":{"type":"string","title":"Tenant"},"organization":{"type":"string","title":"Organization"},"email":{"type":"string","title":"Email"},"billing_provider":{"type":"string","enum":["stripe_test","stripe"],"title":"Billing Provider"},"checkout_session_id":{"type":"string","title":"Checkout Session Id"},"status":{"type":"string","const":"completed","title":"Status"},"api_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key Id"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"api_key_returned_once":{"type":"boolean","title":"Api Key Returned Once"},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false},"browser_session_bound":{"type":"boolean","title":"Browser Session Bound","default":true},"signup_session_stored":{"type":"boolean","title":"Signup Session Stored","default":false},"account_session_created":{"type":"boolean","title":"Account Session Created","default":false},"account_session_cookie_bound":{"type":"boolean","title":"Account Session Cookie Bound","default":false},"account_session_cookie_httponly":{"type":"boolean","title":"Account Session Cookie Httponly","default":true},"account_session_cookie_secure":{"type":"boolean","title":"Account Session Cookie Secure","default":false},"account_session_expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Session Expires At"},"account_session_hash_stored":{"type":"boolean","title":"Account Session Hash Stored","default":false},"raw_account_session_token_stored":{"type":"boolean","title":"Raw Account Session Token Stored","default":false},"account_me_href":{"type":"string","title":"Account Me Href","default":"/account/me"}},"type":"object","required":["signup_key","tenant","organization","email","billing_provider","checkout_session_id","status","api_key_id","api_key_returned_once"],"title":"SignupCompleteResponse"},"SignupReadinessResponse":{"properties":{"checkout_mode":{"type":"string","enum":["stripe_test_stub","stripe_checkout_session"],"title":"Checkout Mode","default":"stripe_test_stub"},"free_tier_monthly":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Free Tier Monthly"},"pricing_verified":{"type":"boolean","title":"Pricing Verified","default":false},"production_ready":{"type":"boolean","title":"Production Ready","default":false},"signup_return_href":{"type":"string","title":"Signup Return Href","default":"/signup/return"},"signup_status_href":{"type":"string","title":"Signup Status Href","default":"/signup/status"},"signup_claim_key_href":{"type":"string","title":"Signup Claim Key Href","default":"/signup/claim-key"},"return_page_browser_safe":{"type":"boolean","title":"Return Page Browser Safe","default":true},"billing_test_mode":{"type":"boolean","title":"Billing Test Mode"},"test_checkout_enabled":{"type":"boolean","title":"Test Checkout Enabled","default":true},"test_completion_enabled":{"type":"boolean","title":"Test Completion Enabled"},"signed_test_webhook_enabled":{"type":"boolean","title":"Signed Test Webhook Enabled"},"signed_stripe_webhook_enabled":{"type":"boolean","title":"Signed Stripe Webhook Enabled"},"production_checkout_provider_supported":{"type":"boolean","title":"Production Checkout Provider Supported","default":true},"production_checkout_enabled":{"type":"boolean","title":"Production Checkout Enabled","default":false},"stripe_secret_key_configured":{"type":"boolean","title":"Stripe Secret Key Configured"},"stripe_price_configured":{"type":"boolean","title":"Stripe Price Configured"},"stripe_webhook_secret_configured":{"type":"boolean","title":"Stripe Webhook Secret Configured"},"stripe_meter_event_name":{"type":"string","title":"Stripe Meter Event Name"},"stripe_meter_event_name_configured":{"type":"boolean","title":"Stripe Meter Event Name Configured"},"stripe_meter_customer_payload_key":{"type":"string","title":"Stripe Meter Customer Payload Key"},"stripe_meter_value_payload_key":{"type":"string","title":"Stripe Meter Value Payload Key"},"usage_meter_ledger_enabled":{"type":"boolean","title":"Usage Meter Ledger Enabled","default":true},"usage_meter_event_name":{"type":"string","title":"Usage Meter Event Name","default":"seal_epoch"},"usage_meter_unit":{"type":"string","title":"Usage Meter Unit","default":"seal_epoch"},"price_amount_returned":{"type":"boolean","title":"Price Amount Returned","default":false},"pricing_model_encoded":{"type":"boolean","title":"Pricing Model Encoded","default":false},"signup_session_cookie_secure":{"type":"boolean","title":"Signup Session Cookie Secure"},"signup_session_ttl_seconds":{"type":"integer","title":"Signup Session Ttl Seconds"},"account_session_supported":{"type":"boolean","title":"Account Session Supported","default":true},"account_session_cookie_httponly":{"type":"boolean","title":"Account Session Cookie Httponly","default":true},"account_session_cookie_secure":{"type":"boolean","title":"Account Session Cookie Secure"},"account_session_ttl_seconds":{"type":"integer","title":"Account Session Ttl Seconds"},"account_me_href":{"type":"string","title":"Account Me Href","default":"/account/me"},"account_logout_href":{"type":"string","title":"Account Logout Href","default":"/account/logout"},"claim_token_cookie_supported":{"type":"boolean","title":"Claim Token Cookie Supported","default":true},"claim_token_cookie_httponly":{"type":"boolean","title":"Claim Token Cookie Httponly","default":true},"claim_token_cookie_secure":{"type":"boolean","title":"Claim Token Cookie Secure"},"missing_production_requirements":{"items":{"type":"string"},"type":"array","title":"Missing Production Requirements"},"raw_secret_material_returned":{"type":"boolean","title":"Raw Secret Material Returned","default":false},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Signup readiness reports configuration and implementation status only. Checkout defaults to a Stripe-test-shaped stub for local/team testing; production Stripe Checkout is enabled only when the server has the required Stripe secret, price, webhook secret, secure signup cookies, and secure account-session cookies."}},"type":"object","required":["billing_test_mode","test_completion_enabled","signed_test_webhook_enabled","signed_stripe_webhook_enabled","stripe_secret_key_configured","stripe_price_configured","stripe_webhook_secret_configured","stripe_meter_event_name","stripe_meter_event_name_configured","stripe_meter_customer_payload_key","stripe_meter_value_payload_key","signup_session_cookie_secure","signup_session_ttl_seconds","account_session_cookie_secure","account_session_ttl_seconds","claim_token_cookie_secure"],"title":"SignupReadinessResponse"},"SignupStatusRequest":{"properties":{"signup_key":{"type":"string","title":"Signup Key"},"checkout_session_id":{"type":"string","title":"Checkout Session Id"},"claim_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Token","description":"Optional when the returning browser still has the HttpOnly ps_signup_claim cookie set by checkout."}},"type":"object","required":["signup_key","checkout_session_id"],"title":"SignupStatusRequest"},"SignupStatusResponse":{"properties":{"signup_key":{"type":"string","title":"Signup Key"},"tenant":{"type":"string","title":"Tenant"},"organization":{"type":"string","title":"Organization"},"email":{"type":"string","title":"Email"},"billing_provider":{"type":"string","enum":["stripe_test","stripe"],"title":"Billing Provider"},"checkout_session_id":{"type":"string","title":"Checkout Session Id"},"status":{"type":"string","enum":["checkout_created","payment_verified","completed"],"title":"Status"},"payment_verified":{"type":"boolean","title":"Payment Verified"},"completed":{"type":"boolean","title":"Completed"},"claimable":{"type":"boolean","title":"Claimable"},"claim_next":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Next"},"api_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key Id"},"api_key_returned":{"type":"boolean","title":"Api Key Returned","default":false},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false},"claim_token_stored":{"type":"boolean","title":"Claim Token Stored","default":false},"browser_session_bound":{"type":"boolean","title":"Browser Session Bound","default":true},"signup_session_stored":{"type":"boolean","title":"Signup Session Stored","default":false}},"type":"object","required":["signup_key","tenant","organization","email","billing_provider","checkout_session_id","status","payment_verified","completed","claimable"],"title":"SignupStatusResponse"},"SlackModalOpenHandoffResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"channel":{"type":"string","const":"slack","title":"Channel","default":"slack"},"target":{"type":"string","title":"Target"},"action_key":{"type":"string","title":"Action Key"},"dispatch_key":{"type":"string","title":"Dispatch Key"},"trigger_id_present":{"type":"boolean","title":"Trigger Id Present"},"views_open_url":{"type":"string","title":"Views Open Url","default":"https://slack.com/api/views.open"},"views_open_request":{"additionalProperties":true,"type":"object","title":"Views Open Request"},"authorization":{"additionalProperties":true,"type":"object","title":"Authorization"},"external_delivery_attempted":{"type":"boolean","title":"External Delivery Attempted","default":false},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"secret_material_returned":{"type":"boolean","title":"Secret Material Returned","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"This endpoint validates a signed Slack block_actions payload and returns a raw-safe views.open request envelope. It does not call Slack, install Slack apps, perform OAuth, return bot tokens, record review decisions, or store raw Slack payload state."}},"type":"object","required":["tenant","target","action_key","dispatch_key","trigger_id_present","views_open_request","authorization"],"title":"SlackModalOpenHandoffResponse"},"SpendLine":{"properties":{"kind":{"type":"string","enum":["records","keep"],"title":"Kind"},"status":{"type":"string","title":"Status"},"events":{"type":"integer","title":"Events"},"credits":{"type":"integer","title":"Credits"}},"type":"object","required":["kind","status","events","credits"],"title":"SpendLine"},"StepCiphertext":{"properties":{"i":{"type":"integer","exclusiveMaximum":2048.0,"minimum":0.0,"title":"I"},"iv":{"type":"string","maxLength":16,"minLength":16,"title":"Iv","description":"Base64url AES-GCM nonce (12 bytes)."},"ciphertext":{"type":"string","minLength":1,"title":"Ciphertext","description":"Base64url AES-256-GCM over salt ‖ exact bytes."}},"additionalProperties":false,"type":"object","required":["i","iv","ciphertext"],"title":"StepCiphertext"},"SubEventHeader":{"properties":{"i":{"type":"integer","exclusiveMaximum":2048.0,"minimum":0.0,"title":"I","description":"Position in the turn, from 0, in transcript order."},"kind":{"type":"string","enum":["prompt","context","tool_call","subagent","message","reply"],"title":"Kind"},"source":{"type":"string","enum":["person","agent","system"],"title":"Source","description":"From transcript markers only: person, agent (another session is an agent, named by its sender) or system. An unknown marker is system, with its tag as the name."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The tool name, tag or sender. Readable."},"ok":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ok","description":"For a tool call: whether its result was an error. Else null."},"content":{"type":"string","title":"Content","description":"\"sha256:\" + sha256(salt ‖ exact bytes), with a fresh 16-byte salt."}},"additionalProperties":false,"type":"object","required":["i","kind","source","content"],"title":"SubEventHeader","description":"One step of the turn as the server sees it: readable labels and a salted digest, never the content."},"SystemCoverageRow":{"properties":{"system_id":{"type":"string","title":"System Id"},"event_type":{"type":"string","title":"Event Type"},"first_seq":{"type":"integer","title":"First Seq"},"last_seq":{"type":"integer","title":"Last Seq"},"observed_count":{"type":"integer","title":"Observed Count"},"implied_population":{"type":"integer","title":"Implied Population","description":"last_seq - first_seq + 1. Needs no count to be trusted, because both endpoints are committed inside sealed records — but it says nothing about sequence numbers outside the observed range."},"missing_count":{"type":"integer","title":"Missing Count"},"missing_ranges":{"items":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"array","title":"Missing Ranges"},"missing_ranges_truncated":{"type":"boolean","title":"Missing Ranges Truncated","default":false},"declared":{"type":"boolean","title":"Declared","description":"Whether a system_declared record is in force for this system."},"sequence_binding":{"type":"boolean","title":"Sequence Binding","default":false},"declaration_action_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Declaration Action Key"},"counter_binding_declared":{"type":"boolean","title":"Counter Binding Declared","description":"Whether the declaration states where the operator's counter increments. A counter that only increments when the operator marks makes gap detection vacuous; this does not make the counter honest, it makes the audit question answerable.","default":false}},"type":"object","required":["system_id","event_type","first_seq","last_seq","observed_count","implied_population","missing_count","missing_ranges","declared"],"title":"SystemCoverageRow"},"SystemManifestResponse":{"properties":{"object":{"type":"string","title":"Object","default":"system_manifest"},"system_id":{"type":"string","title":"System Id"},"declared":{"type":"boolean","title":"Declared"},"action_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Key"},"recorded_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recorded At"},"pack":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pack"},"retained_metadata":{"additionalProperties":true,"type":"object","title":"Retained Metadata","description":"The declaration's retained metadata — lane assignment, instructions, scope. Empty when the declaring record was sealed commitments-only."},"metadata_keys":{"items":{"type":"string"},"type":"array","title":"Metadata Keys"}},"type":"object","required":["system_id","declared"],"title":"SystemManifestResponse"},"TenantAnchorDisclosureUpdate":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"TenantAnchorDisclosureUpdate"},"TenantAnchorPin":{"properties":{"epoch_seq":{"type":"integer","title":"Epoch Seq"},"canonical_root":{"type":"string","title":"Canonical Root"},"epoch_digest":{"type":"string","title":"Epoch Digest"},"tenant_seq":{"type":"integer","title":"Tenant Seq"},"anchored_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Anchored At"}},"type":"object","required":["epoch_seq","canonical_root","epoch_digest","tenant_seq"],"title":"TenantAnchorPin"},"TenantAnchorStatusResponse":{"properties":{"object":{"type":"string","title":"Object","default":"tenant_anchor_status"},"tenant":{"type":"string","title":"Tenant"},"chain_head":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Chain Head"},"anchored":{"anyOf":[{"$ref":"#/components/schemas/TenantAnchorPin"},{"type":"null"}]},"pending_links":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pending Links","description":"Chain links sealed after the anchored snapshot, awaiting the next roll-up."},"rollup_cadence":{"type":"string","title":"Rollup Cadence","default":"hourly"},"public_proof_disclosure":{"type":"boolean","title":"Public Proof Disclosure"}},"type":"object","required":["tenant","public_proof_disclosure"],"title":"TenantAnchorStatusResponse"},"TenantApiKeyIssueRequest":{"properties":{"label":{"type":"string","title":"Label","default":"integration"},"role":{"type":"string","enum":["owner","reporter"],"title":"Role","description":"owner: full workspace authority. reporter: can only seal and read records; use it for agent hooks, whose key sits in the agent's own settings file.","default":"owner"}},"type":"object","title":"TenantApiKeyIssueRequest"},"TenantApiKeyIssueResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"key":{"$ref":"#/components/schemas/TenantApiKeyItem"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"api_key_returned_once":{"type":"boolean","title":"Api Key Returned Once","default":true},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false}},"type":"object","required":["tenant","key"],"title":"TenantApiKeyIssueResponse"},"TenantApiKeyItem":{"properties":{"tenant":{"type":"string","title":"Tenant"},"key_id":{"type":"string","title":"Key Id"},"label":{"type":"string","title":"Label"},"active":{"type":"boolean","title":"Active"},"clearance_level":{"type":"integer","title":"Clearance Level"},"compartments":{"items":{"type":"string"},"type":"array","title":"Compartments"},"key_hash_prefix":{"type":"string","title":"Key Hash Prefix"},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"revoked_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked At"},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used At"},"role":{"type":"string","title":"Role","default":"owner"},"created_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Name","description":"Display name, else email, of the signed-in person who created the key; null for keys issued by another key, by the system, or before creators were recorded. Attribution only: a key never acts with its creator's role or capabilities."}},"type":"object","required":["tenant","key_id","label","active","clearance_level","compartments","key_hash_prefix","created_at","revoked_at","last_used_at"],"title":"TenantApiKeyItem"},"TenantApiKeyRevokeResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"key":{"$ref":"#/components/schemas/TenantApiKeyItem"},"revoked":{"type":"boolean","title":"Revoked"},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false}},"type":"object","required":["tenant","key","revoked"],"title":"TenantApiKeyRevokeResponse"},"TenantApiKeysResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"keys":{"items":{"$ref":"#/components/schemas/TenantApiKeyItem"},"type":"array","title":"Keys"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["tenant","keys","count"],"title":"TenantApiKeysResponse"},"TenantAuditActionItem":{"properties":{"action_key":{"type":"string","title":"Action Key"},"source_key":{"type":"string","title":"Source Key"},"payload_hash":{"type":"string","title":"Payload Hash"},"decision":{"type":"string","title":"Decision"},"action_type":{"type":"string","title":"Action Type"},"review_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Route"},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"evidence_packet_href":{"type":"string","title":"Evidence Packet Href"},"next_step":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Step"},"doctrine_anchors":{"items":{"type":"string"},"type":"array","title":"Doctrine Anchors"},"privacy_flags":{"items":{"type":"string"},"type":"array","title":"Privacy Flags"},"missing_fields":{"items":{"type":"string"},"type":"array","title":"Missing Fields"},"corpus_refs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Corpus Refs"},"catalog_refs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Catalog Refs"},"route_dispatches":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Route Dispatches"},"reviews":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Reviews"},"proposal_included":{"type":"boolean","title":"Proposal Included","default":false},"response_included":{"type":"boolean","title":"Response Included","default":false},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false}},"type":"object","required":["action_key","source_key","payload_hash","decision","action_type","review_route","created_at","evidence_packet_href"],"title":"TenantAuditActionItem"},"TenantAuditEventItem":{"properties":{"event_id":{"type":"string","title":"Event Id"},"event_type":{"type":"string","title":"Event Type"},"actor_type":{"type":"string","title":"Actor Type"},"actor_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor Id"},"subject_type":{"type":"string","title":"Subject Type"},"subject_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Id"},"outcome":{"type":"string","title":"Outcome"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"previous_event_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Previous Event Hash"},"event_hash":{"type":"string","title":"Event Hash"},"retention_policy":{"type":"string","title":"Retention Policy"},"retention_until":{"type":"string","title":"Retention Until"},"created_at":{"type":"string","title":"Created At"},"append_only":{"type":"boolean","title":"Append Only","default":true},"hash_chain":{"type":"boolean","title":"Hash Chain","default":true},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"raw_secret_material_stored":{"type":"boolean","title":"Raw Secret Material Stored","default":false},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false}},"type":"object","required":["event_id","event_type","actor_type","subject_type","outcome","event_hash","retention_policy","retention_until","created_at"],"title":"TenantAuditEventItem"},"TenantAuditExportResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"generated_at":{"type":"string","title":"Generated At"},"summary":{"additionalProperties":true,"type":"object","title":"Summary"},"policy":{"additionalProperties":true,"type":"object","title":"Policy"},"active_manifest":{"additionalProperties":true,"type":"object","title":"Active Manifest"},"api_keys":{"items":{"$ref":"#/components/schemas/TenantApiKeyItem"},"type":"array","title":"Api Keys"},"integrations":{"items":{"$ref":"#/components/schemas/TenantIntegrationItem"},"type":"array","title":"Integrations"},"policy_receipts":{"items":{"$ref":"#/components/schemas/TenantPolicyReceiptItem"},"type":"array","title":"Policy Receipts"},"audit_events":{"items":{"$ref":"#/components/schemas/TenantAuditEventItem"},"type":"array","title":"Audit Events"},"usage_meter_events":{"items":{"$ref":"#/components/schemas/TenantUsageMeterEventItem"},"type":"array","title":"Usage Meter Events"},"actions":{"items":{"$ref":"#/components/schemas/TenantAuditActionItem"},"type":"array","title":"Actions"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false},"secret_material_stored":{"type":"boolean","title":"Secret Material Stored","default":false},"audit_event_payloads_included":{"type":"boolean","title":"Audit Event Payloads Included","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Tenant audit export summarizes Planisphere routing and supervision metadata, append-only audit event summaries, and price-neutral usage meter events. It omits raw prompt/document content, raw API keys, raw secret material, route payload bodies, policy prompt content, Stripe customer identifiers, prices, and free-text review reasons."}},"type":"object","required":["tenant","generated_at","summary","policy","active_manifest","api_keys","integrations","policy_receipts","actions"],"title":"TenantAuditExportResponse"},"TenantBillingSpendResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"sandbox":{"type":"boolean","title":"Sandbox"},"period":{"type":"string","title":"Period"},"period_start":{"type":"string","title":"Period Start"},"period_end":{"type":"string","title":"Period End"},"price_per_credit_usd":{"type":"string","title":"Price Per Credit Usd"},"published_free_credits_monthly":{"type":"integer","title":"Published Free Credits Monthly"},"lines":{"items":{"$ref":"#/components/schemas/SpendLine"},"type":"array","title":"Lines"},"month_credits":{"type":"integer","title":"Month Credits"},"month_billable_credits":{"type":"integer","title":"Month Billable Credits"},"month_estimated_usd":{"type":"string","title":"Month Estimated Usd"},"free_credits_used":{"type":"integer","title":"Free Credits Used","description":"This month's credits inside the published free allowance: min(month_credits, the allowance).","default":0},"free_credits_remaining":{"type":"integer","title":"Free Credits Remaining","description":"Free credits left this month before each further credit is billed; 0 once the allowance is used.","default":0},"credit_gate_rates":{"additionalProperties":{"type":"integer"},"type":"object","title":"Credit Gate Rates","description":"Credits per 1,000 record tokens by gate decision (allow, needs_review, block) as this deployment meters them; a record costs at least 1 credit."},"credit_atom_cap":{"type":"integer","title":"Credit Atom Cap","description":"The most credits one record can cost (2,500 credits is the published $25 ceiling).","default":0},"keep_meter_enabled":{"type":"boolean","title":"Keep Meter Enabled"},"keep_credits_per_record":{"type":"integer","title":"Keep Credits Per Record"},"held_records":{"type":"integer","title":"Held Records"},"next_keep_period":{"type":"string","title":"Next Keep Period"},"next_keep_credits":{"type":"integer","title":"Next Keep Credits"},"next_keep_estimated_usd":{"type":"string","title":"Next Keep Estimated Usd"},"held_by_pack":{"items":{"$ref":"#/components/schemas/HeldPack"},"type":"array","title":"Held By Pack"},"workspace_lifespan_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Workspace Lifespan Days","description":"The workspace-wide lifespan (pack \"*\"); packs without a rule of their own follow it. Null means none."},"event_rules":{"type":"integer","title":"Event Rules","default":0},"claim_boundary":{"type":"string","title":"Claim Boundary"}},"type":"object","required":["tenant","sandbox","period","period_start","period_end","price_per_credit_usd","published_free_credits_monthly","lines","month_credits","month_billable_credits","month_estimated_usd","keep_meter_enabled","keep_credits_per_record","held_records","next_keep_period","next_keep_credits","next_keep_estimated_usd","held_by_pack","claim_boundary"],"title":"TenantBillingSpendResponse","description":"This month's metered credits in dollars, and what keeping records will cost next month."},"TenantContentKeyItem":{"properties":{"key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id","description":"Non-secret fingerprint (sha256 of the key, truncated) named by the content envelope. Null for pre-fingerprint envelopes."},"blob_count":{"type":"integer","title":"Blob Count"},"first_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Used At"},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used At"}},"type":"object","required":["key_id","blob_count"],"title":"TenantContentKeyItem"},"TenantContentKeysResponse":{"properties":{"object":{"type":"string","const":"content_keys","title":"Object","default":"content_keys"},"tenant":{"type":"string","title":"Tenant"},"keys":{"items":{"$ref":"#/components/schemas/TenantContentKeyItem"},"type":"array","title":"Keys"},"key_material_stored":{"type":"boolean","title":"Key Material Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Attribution only: which content-key fingerprints this tenant's sealed envelopes name, and how many blobs each opens. Content keys are generated client-side and never reach Planisphere — a lost key cannot be recovered by anyone, including us."}},"type":"object","required":["tenant","keys"],"title":"TenantContentKeysResponse"},"TenantFederalAcquisitionExportResponse":{"properties":{"schema":{"type":"string","title":"Schema"},"tenant":{"type":"string","title":"Tenant"},"generated_at":{"type":"string","title":"Generated At"},"source_policy_anchors":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Source Policy Anchors"},"export_limitations":{"items":{"type":"string"},"type":"array","title":"Export Limitations"},"validation_profile":{"additionalProperties":true,"type":"object","title":"Validation Profile"},"acquisition_context":{"additionalProperties":true,"type":"object","title":"Acquisition Context"},"m_25_22_alignment":{"additionalProperties":true,"type":"object","title":"M 25 22 Alignment"},"monitoring_summary":{"additionalProperties":true,"type":"object","title":"Monitoring Summary"},"owner_routes":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Owner Routes"},"procurement_artifacts":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Procurement Artifacts"},"evidence_packet_refs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Evidence Packet Refs"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false},"secret_material_stored":{"type":"boolean","title":"Secret Material Stored","default":false},"private_ip_shipped_to_customer":{"type":"boolean","title":"Private Ip Shipped To Customer","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"This acquisition export helps a buyer inspect Planisphere's API, evidence, portability, and data-boundary posture. It is not a bid submission, legal determination, compliance certification, or agency authorization decision."}},"type":"object","required":["schema","tenant","generated_at","validation_profile","acquisition_context","m_25_22_alignment","monitoring_summary","owner_routes","procurement_artifacts","evidence_packet_refs"],"title":"TenantFederalAcquisitionExportResponse"},"TenantFederalDataCatalogExportResponse":{"properties":{"schema":{"type":"string","title":"Schema"},"tenant":{"type":"string","title":"Tenant"},"generated_at":{"type":"string","title":"Generated At"},"source_policy_anchors":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Source Policy Anchors"},"export_limitations":{"items":{"type":"string"},"type":"array","title":"Export Limitations"},"validation_profile":{"additionalProperties":true,"type":"object","title":"Validation Profile"},"catalog_context":{"additionalProperties":true,"type":"object","title":"Catalog Context"},"dataset":{"additionalProperties":true,"type":"object","title":"Dataset"},"data_assets":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Data Assets"},"disclosure_review":{"additionalProperties":true,"type":"object","title":"Disclosure Review"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false},"secret_material_stored":{"type":"boolean","title":"Secret Material Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"This export makes Planisphere metadata portable in open JSON. It does not declare that protected tenant data is public, replace agency FOIA/privacy/IP review, or publish a federal data catalog entry by itself."}},"type":"object","required":["schema","tenant","generated_at","validation_profile","catalog_context","dataset","data_assets","disclosure_review"],"title":"TenantFederalDataCatalogExportResponse"},"TenantFederalOscalExportResponse":{"properties":{"schema":{"type":"string","title":"Schema"},"tenant":{"type":"string","title":"Tenant"},"generated_at":{"type":"string","title":"Generated At"},"source_policy_anchors":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Source Policy Anchors"},"export_limitations":{"items":{"type":"string"},"type":"array","title":"Export Limitations"},"validation_profile":{"additionalProperties":true,"type":"object","title":"Validation Profile"},"package_profile":{"additionalProperties":true,"type":"object","title":"Package Profile"},"oscal_alignment":{"additionalProperties":true,"type":"object","title":"Oscal Alignment"},"system_security_plan":{"additionalProperties":true,"type":"object","title":"System Security Plan"},"assessment_results":{"additionalProperties":true,"type":"object","title":"Assessment Results"},"plan_of_action_and_milestones":{"additionalProperties":true,"type":"object","title":"Plan Of Action And Milestones"},"evidence_packets":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Evidence Packets"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"private_ip_shipped_to_customer":{"type":"boolean","title":"Private Ip Shipped To Customer","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"This is an OSCAL-aligned evidence export over Planisphere receipt metadata. It is not a complete FedRAMP Certification Package, an agency ATO, legal advice, medical advice, export-control determination, or compliance certification."}},"type":"object","required":["schema","tenant","generated_at","validation_profile","package_profile","oscal_alignment","system_security_plan","assessment_results","plan_of_action_and_milestones","evidence_packets"],"title":"TenantFederalOscalExportResponse"},"TenantFederalSchemaBindingRequest":{"properties":{"export_kind":{"type":"string","enum":["oscal","data_catalog","ai_acquisition"],"title":"Export Kind"},"adapter_key":{"type":"string","title":"Adapter Key","examples":["dcat_us_or_project_open_data_json_schema"]},"schema_profile_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schema Profile Key","description":"Optional packaged Planisphere profile key. Provide this or owner_schema_ref plus owner_schema_hash, not both.","examples":["planisphere.dev.project_open_data_subset.v0"]},"owner_schema_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Schema Ref","description":"Owner-selected external schema reference. Raw schema is not stored."},"owner_schema_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Schema Hash","description":"SHA-256 hash for an owner-selected schema bundle or schema file.","examples":["sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]},"owner_attestation_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Attestation Label","description":"Short owner-safe label for the selection; do not include raw content."},"owner_attestation_actor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Attestation Actor","description":"Owner-side actor or team key; do not include personal contact data."},"effective_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective At"}},"type":"object","required":["export_kind","adapter_key"],"title":"TenantFederalSchemaBindingRequest"},"TenantFederalSchemaBindingResponse":{"properties":{"schema":{"type":"string","title":"Schema"},"contract":{"type":"string","title":"Contract"},"tenant":{"type":"string","title":"Tenant"},"binding_key":{"type":"string","title":"Binding Key"},"binding_status":{"type":"string","title":"Binding Status"},"active":{"type":"boolean","title":"Active","default":false},"mutation_applied":{"type":"boolean","title":"Mutation Applied","default":false},"export_kind":{"type":"string","title":"Export Kind"},"adapter_key":{"type":"string","title":"Adapter Key"},"adapter_target":{"type":"string","title":"Adapter Target"},"execution_mode":{"type":"string","title":"Execution Mode"},"source_type":{"type":"string","title":"Source Type"},"schema_ref":{"type":"string","title":"Schema Ref"},"authority":{"type":"string","title":"Authority"},"schema_hash":{"type":"string","title":"Schema Hash"},"schema_profile_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schema Profile Key"},"schema_profile_contract":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schema Profile Contract"},"schema_profile_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schema Profile Status"},"schema_profile_official":{"type":"boolean","title":"Schema Profile Official","default":false},"owner_schema_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Schema Ref"},"source_provenance":{"additionalProperties":true,"type":"object","title":"Source Provenance"},"owner_attestation":{"additionalProperties":true,"type":"object","title":"Owner Attestation"},"binding_receipt":{"additionalProperties":true,"type":"object","title":"Binding Receipt"},"validation_run_template":{"additionalProperties":true,"type":"object","title":"Validation Run Template"},"effective_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective At"},"created_at":{"type":"string","title":"Created At"},"raw_schema_payload_stored":{"type":"boolean","title":"Raw Schema Payload Stored","default":false},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"official_result_claimed":{"type":"boolean","title":"Official Result Claimed","default":false},"private_ip_shipped_to_customer":{"type":"boolean","title":"Private Ip Shipped To Customer","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"This binding chooses the schema source a tenant intends to use for local validation runs. It does not claim official OSCAL/DCAT validation, Federal Data Catalog publication, FedRAMP Certification, agency ATO, bid acceptance, funding continuity, or compliance certification."}},"type":"object","required":["schema","contract","tenant","binding_key","binding_status","export_kind","adapter_key","adapter_target","execution_mode","source_type","schema_ref","authority","schema_hash","source_provenance","owner_attestation","binding_receipt","validation_run_template","created_at"],"title":"TenantFederalSchemaBindingResponse"},"TenantFederalSchemaBindingsResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"bindings":{"items":{"$ref":"#/components/schemas/TenantFederalSchemaBindingResponse"},"type":"array","title":"Bindings"},"binding_count":{"type":"integer","title":"Binding Count"},"active_only":{"type":"boolean","title":"Active Only","default":false},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"official_result_claimed":{"type":"boolean","title":"Official Result Claimed","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Schema bindings are tenant-selected metadata records. They do not claim official validation, authorization, publication approval, procurement acceptance, or compliance certification."}},"type":"object","required":["tenant","bindings","binding_count"],"title":"TenantFederalSchemaBindingsResponse"},"TenantFederalValidationReportResponse":{"properties":{"schema":{"type":"string","title":"Schema"},"tenant":{"type":"string","title":"Tenant"},"generated_at":{"type":"string","title":"Generated At"},"contract":{"type":"string","title":"Contract"},"validation_status":{"type":"string","title":"Validation Status"},"local_validation_status":{"type":"string","title":"Local Validation Status"},"external_validation_status":{"type":"string","title":"External Validation Status"},"exports_checked":{"type":"integer","title":"Exports Checked"},"missing_json_pointer_count":{"type":"integer","title":"Missing Json Pointer Count"},"export_reports":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Export Reports"},"external_validation_targets":{"additionalProperties":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"type":"object","title":"External Validation Targets"},"validator_adapters":{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object","title":"Validator Adapters"},"external_adapter_statuses":{"additionalProperties":{"type":"string"},"type":"object","title":"External Adapter Statuses"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"private_ip_shipped_to_customer":{"type":"boolean","title":"Private Ip Shipped To Customer","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"This report executes Planisphere-owned export-shape checks against tenant federal exports. It does not run official NIST OSCAL schema validation, publish a Federal Data Catalog entry, approve an AI acquisition, grant FedRAMP Certification, grant agency ATO status, or predict bid acceptance."}},"type":"object","required":["schema","tenant","generated_at","contract","validation_status","local_validation_status","external_validation_status","exports_checked","missing_json_pointer_count","export_reports","external_validation_targets","validator_adapters","external_adapter_statuses"],"title":"TenantFederalValidationReportResponse"},"TenantFederalValidationRunOverviewItem":{"properties":{"run_key":{"type":"string","title":"Run Key"},"export_kind":{"type":"string","title":"Export Kind"},"adapter_key":{"type":"string","title":"Adapter Key"},"validation_status":{"type":"string","title":"Validation Status"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"binding_summary":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Binding Summary"},"schema_summary":{"additionalProperties":true,"type":"object","title":"Schema Summary"},"artifact_summary":{"additionalProperties":true,"type":"object","title":"Artifact Summary"},"review_owner":{"additionalProperties":true,"type":"object","title":"Review Owner"},"review_summary":{"additionalProperties":true,"type":"object","title":"Review Summary"},"evidence_refs":{"additionalProperties":true,"type":"object","title":"Evidence Refs"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"official_result_claimed":{"type":"boolean","title":"Official Result Claimed","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"This overview summarizes local validation receipts for tenant review. It does not include raw artifacts, submit packages, grant official validation, or certify compliance."}},"type":"object","required":["run_key","export_kind","adapter_key","validation_status","schema_summary","artifact_summary","review_owner","review_summary","evidence_refs"],"title":"TenantFederalValidationRunOverviewItem"},"TenantFederalValidationRunRequest":{"properties":{"export_kind":{"type":"string","enum":["oscal","data_catalog","ai_acquisition"],"title":"Export Kind"},"adapter_key":{"type":"string","title":"Adapter Key","examples":["dcat_us_or_project_open_data_json_schema"]},"schema_profile_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schema Profile Key","description":"Optional pinned Planisphere schema profile key. Provide this or schema_payload, not both.","examples":["planisphere.dev.project_open_data_subset.v0"]},"schema_payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema Payload","description":"Owner-supplied JSON Schema. Provide this or schema_profile_key, not both."},"binding_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Binding Key","description":"Optional recorded schema binding. Registry-profile bindings supply the profile key; owner-pinned bindings require schema_payload with a matching hash."},"artifact_payload":{"additionalProperties":true,"type":"object","title":"Artifact Payload","description":"Owner-supplied artifact to validate. It is hashed transiently and not stored."},"schema_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schema Ref"},"authority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authority"},"artifact_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Artifact Label"},"max_errors":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Max Errors","default":20}},"type":"object","required":["export_kind","adapter_key","artifact_payload"],"title":"TenantFederalValidationRunRequest"},"TenantFederalValidationRunResponse":{"properties":{"schema":{"type":"string","title":"Schema"},"contract":{"type":"string","title":"Contract"},"adapter_contract":{"type":"string","title":"Adapter Contract"},"export_kind":{"type":"string","title":"Export Kind"},"adapter_key":{"type":"string","title":"Adapter Key"},"adapter_target":{"type":"string","title":"Adapter Target"},"execution_mode":{"type":"string","title":"Execution Mode"},"artifact_status":{"type":"string","title":"Artifact Status"},"tenant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant"},"run_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Key"},"binding_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Binding Key"},"binding_receipt_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Binding Receipt Hash"},"binding_source_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Binding Source Type"},"validation_status":{"type":"string","title":"Validation Status"},"schema_ref":{"type":"string","title":"Schema Ref"},"authority":{"type":"string","title":"Authority"},"artifact_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Artifact Label"},"schema_source":{"type":"string","title":"Schema Source"},"schema_profile_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schema Profile Key"},"schema_profile_contract":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schema Profile Contract"},"schema_profile_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schema Profile Status"},"schema_profile_official":{"type":"boolean","title":"Schema Profile Official","default":false},"schema_hash":{"type":"string","title":"Schema Hash"},"artifact_hash":{"type":"string","title":"Artifact Hash"},"validation_result":{"additionalProperties":true,"type":"object","title":"Validation Result"},"owner_supplied_schema":{"type":"boolean","title":"Owner Supplied Schema","default":true},"owner_supplied_artifact":{"type":"boolean","title":"Owner Supplied Artifact","default":true},"registry_profile_used":{"type":"boolean","title":"Registry Profile Used","default":false},"recorded":{"type":"boolean","title":"Recorded","default":false},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"validation_run_receipt":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Validation Run Receipt"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"raw_error_values_returned":{"type":"boolean","title":"Raw Error Values Returned","default":false},"private_ip_shipped_to_customer":{"type":"boolean","title":"Private Ip Shipped To Customer","default":false},"official_result_claimed":{"type":"boolean","title":"Official Result Claimed","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"This endpoint locally executes an owner-supplied JSON Schema against an owner-supplied artifact. It does not submit the artifact to NIST, GSA, FedRAMP, an agency, an assessor, or a data catalog; it does not grant official validation, authorization, publication, bid acceptance, or funding continuity."}},"type":"object","required":["schema","contract","adapter_contract","export_kind","adapter_key","adapter_target","execution_mode","artifact_status","validation_status","schema_ref","authority","schema_source","schema_hash","artifact_hash","validation_result"],"title":"TenantFederalValidationRunResponse"},"TenantFederalValidationRunsOverviewResponse":{"properties":{"schema":{"type":"string","title":"Schema","default":"planisphere.federal_validation_receipt_overview.v0"},"contract":{"type":"string","title":"Contract","default":"planisphere.federal_validation_receipt_overview/1"},"tenant":{"type":"string","title":"Tenant"},"items":{"items":{"$ref":"#/components/schemas/TenantFederalValidationRunOverviewItem"},"type":"array","title":"Items"},"run_count":{"type":"integer","title":"Run Count"},"filters":{"additionalProperties":true,"type":"object","title":"Filters"},"review_owner_contract":{"type":"string","title":"Review Owner Contract","default":"planisphere.review_owner/1"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"official_result_claimed":{"type":"boolean","title":"Official Result Claimed","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Validation-run overviews compose schema bindings, local validation receipts, and owner-review lanes. They do not store raw artifact content, submit OSCAL/DCAT packages, grant FedRAMP Certification, agency ATO, catalog publication, bid acceptance, funding continuity, or compliance certification."}},"type":"object","required":["tenant","items","run_count","filters"],"title":"TenantFederalValidationRunsOverviewResponse"},"TenantFederalValidationRunsResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"runs":{"items":{"$ref":"#/components/schemas/TenantFederalValidationRunResponse"},"type":"array","title":"Runs"},"run_count":{"type":"integer","title":"Run Count"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"official_result_claimed":{"type":"boolean","title":"Official Result Claimed","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Validation runs are tenant-scoped preflight receipts. They do not claim official validation, submission, authorization, publication approval, procurement acceptance, or compliance certification."}},"type":"object","required":["tenant","runs","run_count"],"title":"TenantFederalValidationRunsResponse"},"TenantFederalValidationSchemaManifestResponse":{"properties":{"schema":{"type":"string","title":"Schema"},"contract":{"type":"string","title":"Contract"},"registry_contract":{"type":"string","title":"Registry Contract"},"profile_contract":{"type":"string","title":"Profile Contract"},"binding_contract":{"type":"string","title":"Binding Contract"},"profile_count":{"type":"integer","title":"Profile Count"},"official_source_count":{"type":"integer","title":"Official Source Count"},"profiles":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Profiles"},"official_source_candidates":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Official Source Candidates"},"promotion_gates":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Promotion Gates"},"tenant_binding_model":{"additionalProperties":true,"type":"object","title":"Tenant Binding Model"},"schema_payloads_included":{"type":"boolean","title":"Schema Payloads Included","default":false},"manifest_hash":{"type":"string","title":"Manifest Hash"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"official_result_claimed":{"type":"boolean","title":"Official Result Claimed","default":false},"private_ip_shipped_to_customer":{"type":"boolean","title":"Private Ip Shipped To Customer","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"This manifest maps Planisphere dev schema profiles to official-source readiness work. It does not claim official NIST OSCAL validation, official DCAT-US validation, Federal Data Catalog publication, FedRAMP Certification, agency ATO, bid acceptance, funding continuity, or compliance certification."}},"type":"object","required":["schema","contract","registry_contract","profile_contract","binding_contract","profile_count","official_source_count","profiles","official_source_candidates","promotion_gates","tenant_binding_model","manifest_hash"],"title":"TenantFederalValidationSchemaManifestResponse"},"TenantFederalValidationSchemaProfileResponse":{"properties":{"schema":{"type":"string","title":"Schema"},"contract":{"type":"string","title":"Contract"},"schema_profile_key":{"type":"string","title":"Schema Profile Key"},"schema_profile_contract":{"type":"string","title":"Schema Profile Contract"},"title":{"type":"string","title":"Title"},"export_kind":{"type":"string","title":"Export Kind"},"adapter_key":{"type":"string","title":"Adapter Key"},"schema_ref":{"type":"string","title":"Schema Ref"},"authority":{"type":"string","title":"Authority"},"status":{"type":"string","title":"Status"},"official_profile":{"type":"boolean","title":"Official Profile","default":false},"owner_override_allowed":{"type":"boolean","title":"Owner Override Allowed","default":true},"required_artifact_fields":{"items":{"type":"string"},"type":"array","title":"Required Artifact Fields"},"source_provenance":{"additionalProperties":true,"type":"object","title":"Source Provenance"},"profile_package_resource":{"type":"string","title":"Profile Package Resource"},"profile_hash":{"type":"string","title":"Profile Hash"},"schema_hash":{"type":"string","title":"Schema Hash"},"schema_included":{"type":"boolean","title":"Schema Included","default":false},"include_schema_requested":{"type":"boolean","title":"Include Schema Requested","default":false},"schema_payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema Payload"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"official_result_claimed":{"type":"boolean","title":"Official Result Claimed","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary"}},"type":"object","required":["schema","contract","schema_profile_key","schema_profile_contract","title","export_kind","adapter_key","schema_ref","authority","status","required_artifact_fields","source_provenance","profile_package_resource","profile_hash","schema_hash","claim_boundary"],"title":"TenantFederalValidationSchemaProfileResponse"},"TenantFederalValidationSchemaProfilesResponse":{"properties":{"schema":{"type":"string","title":"Schema"},"contract":{"type":"string","title":"Contract"},"profile_contract":{"type":"string","title":"Profile Contract"},"profiles":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Profiles"},"profile_count":{"type":"integer","title":"Profile Count"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"official_result_claimed":{"type":"boolean","title":"Official Result Claimed","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"This registry exposes Planisphere-pinned dev schema profiles for local preflight validation runs. These profiles are not official NIST OSCAL schemas, DCAT-US schemas, FedRAMP approval, Federal Data Catalog publication approval, agency ATO, bid acceptance, or funding continuity."}},"type":"object","required":["schema","contract","profile_contract","profiles","profile_count"],"title":"TenantFederalValidationSchemaProfilesResponse"},"TenantFleetResponse":{"properties":{"object":{"type":"string","title":"Object","default":"records_fleet"},"tenant":{"type":"string","title":"Tenant"},"generated_at":{"type":"string","title":"Generated At"},"systems":{"items":{"$ref":"#/components/schemas/TenantFleetSystem"},"type":"array","title":"Systems"},"truncated":{"type":"boolean","title":"Truncated"},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Fleet identity (system, lane, rig) is declared by the tenant's own agents and bound into sealed records — testimony, not verification."}},"type":"object","required":["tenant","generated_at","systems","truncated"],"title":"TenantFleetResponse"},"TenantFleetSystem":{"properties":{"system_id":{"type":"string","title":"System Id"},"records":{"type":"integer","title":"Records"},"expired_records":{"type":"integer","title":"Expired Records"},"models":{"items":{"type":"string"},"type":"array","title":"Models"},"apps":{"items":{"type":"string"},"type":"array","title":"Apps"},"lanes":{"items":{"type":"string"},"type":"array","title":"Lanes"},"first_recorded_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Recorded At"},"last_recorded_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Recorded At"}},"type":"object","required":["system_id","records","expired_records","models","apps","lanes"],"title":"TenantFleetSystem"},"TenantIntegrationChannelOption":{"properties":{"channel":{"type":"string","title":"Channel"},"status":{"type":"string","enum":["available","partial","internal"],"title":"Status"},"delivery_kind":{"type":"string","title":"Delivery Kind"},"target_examples":{"items":{"type":"string"},"type":"array","title":"Target Examples"},"required_config_keys":{"items":{"type":"string"},"type":"array","title":"Required Config Keys"},"required_config_one_of":{"items":{"items":{"type":"string"},"type":"array"},"type":"array","title":"Required Config One Of"},"optional_config_keys":{"items":{"type":"string"},"type":"array","title":"Optional Config Keys"},"requires_secret_ref":{"type":"boolean","title":"Requires Secret Ref"},"tenant_mintable_signing_secret":{"type":"boolean","title":"Tenant Mintable Signing Secret","description":"True when omitting secret_ref makes Planisphere mint a one-time-shown signing secret at registration (webhook channel).","default":false},"secret_ref_purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Ref Purpose"},"callback_supported":{"type":"boolean","title":"Callback Supported"},"callback_path_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callback Path Template"},"review_callback_contract":{"additionalProperties":true,"type":"object","title":"Review Callback Contract"},"setup_steps":{"items":{"type":"string"},"type":"array","title":"Setup Steps"},"operator_preflight_steps":{"items":{"type":"string"},"type":"array","title":"Operator Preflight Steps"},"hosted_oauth_supported":{"type":"boolean","title":"Hosted Oauth Supported","default":false},"provider_state_sync_supported":{"type":"boolean","title":"Provider State Sync Supported","default":false},"live_external_send_operator_only":{"type":"boolean","title":"Live External Send Operator Only","default":true},"raw_secret_material_allowed":{"type":"boolean","title":"Raw Secret Material Allowed","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary"}},"type":"object","required":["channel","status","delivery_kind","target_examples","requires_secret_ref","callback_supported","claim_boundary"],"title":"TenantIntegrationChannelOption"},"TenantIntegrationDeleteResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"integration":{"$ref":"#/components/schemas/TenantIntegrationItem"},"deleted":{"type":"boolean","title":"Deleted","default":true},"secret_material_stored":{"type":"boolean","title":"Secret Material Stored","default":false}},"type":"object","required":["tenant","integration"],"title":"TenantIntegrationDeleteResponse"},"TenantIntegrationDocsPackageResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"package_version":{"type":"string","title":"Package Version"},"source_endpoints":{"items":{"type":"string"},"type":"array","title":"Source Endpoints"},"options":{"$ref":"#/components/schemas/TenantIntegrationOptionsResponse"},"security_policy":{"$ref":"#/components/schemas/TenantIntegrationSecurityPolicyResponse"},"install_manifest":{"$ref":"#/components/schemas/TenantIntegrationInstallManifestResponse"},"readiness":{"$ref":"#/components/schemas/TenantIntegrationsReadinessResponse"},"setup_plan":{"$ref":"#/components/schemas/TenantIntegrationsSetupPlanResponse"},"raw_secret_material_returned":{"type":"boolean","title":"Raw Secret Material Returned","default":false},"live_external_send_operator_only":{"type":"boolean","title":"Live External Send Operator Only","default":true},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Integration docs package composes existing tenant setup read models for operator and agent handoff. It does not install provider apps, perform hosted OAuth, sync provider state, send external messages, or return raw secrets."}},"type":"object","required":["tenant","package_version","source_endpoints","options","security_policy","install_manifest","readiness","setup_plan"],"title":"TenantIntegrationDocsPackageResponse"},"TenantIntegrationInstallManifestChannel":{"properties":{"channel":{"type":"string","title":"Channel"},"status":{"type":"string","enum":["available","partial","internal"],"title":"Status"},"delivery_kind":{"type":"string","title":"Delivery Kind"},"install_mode":{"type":"string","enum":["manual","internal"],"title":"Install Mode"},"target_examples":{"items":{"type":"string"},"type":"array","title":"Target Examples"},"required_config_keys":{"items":{"type":"string"},"type":"array","title":"Required Config Keys"},"required_config_one_of":{"items":{"items":{"type":"string"},"type":"array"},"type":"array","title":"Required Config One Of"},"optional_config_keys":{"items":{"type":"string"},"type":"array","title":"Optional Config Keys"},"requires_secret_ref":{"type":"boolean","title":"Requires Secret Ref"},"secret_ref_purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Ref Purpose"},"accepted_secret_ref_schemes":{"items":{"type":"string"},"type":"array","title":"Accepted Secret Ref Schemes"},"required_provider_capabilities":{"items":{"type":"string"},"type":"array","title":"Required Provider Capabilities"},"callback_supported":{"type":"boolean","title":"Callback Supported"},"callback_path_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callback Path Template"},"callback_url_example":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callback Url Example"},"review_callback_contract":{"additionalProperties":true,"type":"object","title":"Review Callback Contract"},"setup_steps":{"items":{"type":"string"},"type":"array","title":"Setup Steps"},"operator_preflight_steps":{"items":{"type":"string"},"type":"array","title":"Operator Preflight Steps"},"hosted_oauth_supported":{"type":"boolean","title":"Hosted Oauth Supported","default":false},"provider_state_sync_supported":{"type":"boolean","title":"Provider State Sync Supported","default":false},"live_external_send_operator_only":{"type":"boolean","title":"Live External Send Operator Only","default":true},"raw_secret_material_allowed":{"type":"boolean","title":"Raw Secret Material Allowed","default":false},"secret_material_returned":{"type":"boolean","title":"Secret Material Returned","default":false},"least_privilege_note":{"type":"string","title":"Least Privilege Note"},"claim_boundary":{"type":"string","title":"Claim Boundary"}},"type":"object","required":["channel","status","delivery_kind","install_mode","target_examples","requires_secret_ref","callback_supported","least_privilege_note","claim_boundary"],"title":"TenantIntegrationInstallManifestChannel"},"TenantIntegrationInstallManifestResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"manifest_version":{"type":"string","title":"Manifest Version"},"route_format":{"type":"string","title":"Route Format","default":"channel:target"},"install_mode":{"type":"string","const":"manual","title":"Install Mode","default":"manual"},"supported_secret_ref_schemes":{"items":{"type":"string"},"type":"array","title":"Supported Secret Ref Schemes"},"cloud_provider_assumptions":{"items":{"type":"string"},"type":"array","title":"Cloud Provider Assumptions"},"server_side_ip_boundary":{"type":"string","title":"Server Side Ip Boundary"},"operator_control_boundary":{"type":"string","title":"Operator Control Boundary"},"channels":{"items":{"$ref":"#/components/schemas/TenantIntegrationInstallManifestChannel"},"type":"array","title":"Channels"},"raw_secret_material_allowed":{"type":"boolean","title":"Raw Secret Material Allowed","default":false},"secret_material_returned":{"type":"boolean","title":"Secret Material Returned","default":false},"hosted_oauth_supported":{"type":"boolean","title":"Hosted Oauth Supported","default":false},"provider_state_sync_supported":{"type":"boolean","title":"Provider State Sync Supported","default":false},"live_external_send_operator_only":{"type":"boolean","title":"Live External Send Operator Only","default":true},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Integration install manifest consolidates setup metadata for tenant wiring. It does not install provider apps, provision IAM/RBAC, perform hosted OAuth, sync provider state, send external messages, or return raw secrets."}},"type":"object","required":["tenant","manifest_version","supported_secret_ref_schemes","server_side_ip_boundary","operator_control_boundary","channels"],"title":"TenantIntegrationInstallManifestResponse"},"TenantIntegrationItem":{"properties":{"tenant":{"type":"string","title":"Tenant"},"channel":{"type":"string","title":"Channel"},"target":{"type":"string","title":"Target"},"enabled":{"type":"boolean","title":"Enabled"},"configured":{"type":"boolean","title":"Configured"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"secret_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Ref"},"secret_material_stored":{"type":"boolean","title":"Secret Material Stored","default":false},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["tenant","channel","target","enabled","configured","config","secret_ref","created_at","updated_at"],"title":"TenantIntegrationItem"},"TenantIntegrationOptionsResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"route_format":{"type":"string","title":"Route Format","default":"channel:target"},"route_examples":{"items":{"type":"string"},"type":"array","title":"Route Examples"},"supported_secret_ref_schemes":{"items":{"type":"string"},"type":"array","title":"Supported Secret Ref Schemes"},"supported_channels":{"items":{"$ref":"#/components/schemas/TenantIntegrationChannelOption"},"type":"array","title":"Supported Channels"},"raw_secret_material_allowed":{"type":"boolean","title":"Raw Secret Material Allowed","default":false},"live_external_send_operator_only":{"type":"boolean","title":"Live External Send Operator Only","default":true},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Integration options describe tenant wiring metadata only. Raw secret material must not be sent to these routes; store secret references server-side. Hosted API routes prepare delivery payloads, while live external sends remain explicit operator actions."}},"type":"object","required":["tenant","route_examples","supported_secret_ref_schemes","supported_channels"],"title":"TenantIntegrationOptionsResponse"},"TenantIntegrationProviderWalkthroughDispatchSummary":{"properties":{"dispatch_key":{"type":"string","title":"Dispatch Key"},"href":{"type":"string","title":"Href"},"action_key":{"type":"string","title":"Action Key"},"action_type":{"type":"string","title":"Action Type"},"channel":{"type":"string","title":"Channel"},"target":{"type":"string","title":"Target"},"status":{"type":"string","title":"Status"},"delivery_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Kind"},"callback_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callback Path"},"evidence_packet_href":{"type":"string","title":"Evidence Packet Href"},"review_controls_present":{"type":"boolean","title":"Review Controls Present","default":false},"modal_view_present":{"type":"boolean","title":"Modal View Present","default":false},"provider_native_shapes":{"items":{"type":"string"},"type":"array","title":"Provider Native Shapes"},"active_manifest_item":{"additionalProperties":true,"type":"object","title":"Active Manifest Item"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false}},"type":"object","required":["dispatch_key","href","action_key","action_type","channel","target","status","evidence_packet_href"],"title":"TenantIntegrationProviderWalkthroughDispatchSummary"},"TenantIntegrationProviderWalkthroughResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"package_version":{"type":"string","title":"Package Version"},"source_endpoints":{"items":{"type":"string"},"type":"array","title":"Source Endpoints"},"setup_summary":{"$ref":"#/components/schemas/TenantIntegrationProviderWalkthroughSetupSummary"},"latest_provider_dispatch":{"anyOf":[{"$ref":"#/components/schemas/TenantIntegrationProviderWalkthroughDispatchSummary"},{"type":"null"}]},"latest_review":{"anyOf":[{"$ref":"#/components/schemas/TenantIntegrationProviderWalkthroughReviewSummary"},{"type":"null"}]},"steps":{"items":{"$ref":"#/components/schemas/TenantIntegrationProviderWalkthroughStep"},"type":"array","title":"Steps"},"raw_secret_material_returned":{"type":"boolean","title":"Raw Secret Material Returned","default":false},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"live_external_send_attempted":{"type":"boolean","title":"Live External Send Attempted","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Provider walkthrough composes existing tenant setup, routing, callback, evidence, and mirror-verification read models. It does not install provider apps, perform hosted OAuth, sync provider state, send external messages, prove provider-side delivery, determine legality, certify compliance, or return raw secrets."}},"type":"object","required":["tenant","package_version","source_endpoints","setup_summary","steps"],"title":"TenantIntegrationProviderWalkthroughResponse"},"TenantIntegrationProviderWalkthroughReviewSummary":{"properties":{"receipt_key":{"type":"string","title":"Receipt Key"},"decision":{"type":"string","title":"Decision"},"reviewer":{"type":"string","title":"Reviewer"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"mirror_seal_present":{"type":"boolean","title":"Mirror Seal Present","default":false},"mirror_stamp_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mirror Stamp Id"},"mirror_verifier_endpoint":{"type":"string","title":"Mirror Verifier Endpoint","default":"/law/verify-mirror-seal"},"evidence_packet_href":{"type":"string","title":"Evidence Packet Href"},"reason_present":{"type":"boolean","title":"Reason Present","default":false},"reason_included":{"type":"boolean","title":"Reason Included","default":false},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"mirror_grades_stored":{"type":"boolean","title":"Mirror Grades Stored","default":false}},"type":"object","required":["receipt_key","decision","reviewer","evidence_packet_href"],"title":"TenantIntegrationProviderWalkthroughReviewSummary"},"TenantIntegrationProviderWalkthroughSetupSummary":{"properties":{"setup_item_count":{"type":"integer","title":"Setup Item Count"},"action_required_count":{"type":"integer","title":"Action Required Count"},"ready_for_operator_send_count":{"type":"integer","title":"Ready For Operator Send Count"},"ready_route_count":{"type":"integer","title":"Ready Route Count"}},"type":"object","required":["setup_item_count","action_required_count","ready_for_operator_send_count","ready_route_count"],"title":"TenantIntegrationProviderWalkthroughSetupSummary"},"TenantIntegrationProviderWalkthroughStep":{"properties":{"stage":{"type":"string","enum":["tenant_setup","delivery_preview","callback_fixture","evidence_packet","mirror_seal_verification"],"title":"Stage"},"status":{"type":"string","enum":["blocked","pending","available","complete"],"title":"Status"},"method":{"type":"string","title":"Method"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint"},"summary":{"type":"string","title":"Summary"},"next_action":{"type":"string","title":"Next Action"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"live_external_send_attempted":{"type":"boolean","title":"Live External Send Attempted","default":false}},"type":"object","required":["stage","status","method","summary","next_action"],"title":"TenantIntegrationProviderWalkthroughStep"},"TenantIntegrationReadinessItem":{"properties":{"channel":{"type":"string","title":"Channel"},"target":{"type":"string","title":"Target"},"supported":{"type":"boolean","title":"Supported"},"enabled":{"type":"boolean","title":"Enabled"},"configured":{"type":"boolean","title":"Configured"},"status":{"type":"string","enum":["ready","disabled","incomplete","secret_unresolved","unsupported"],"title":"Status"},"ready_for_route":{"type":"boolean","title":"Ready For Route"},"ready_for_operator_send":{"type":"boolean","title":"Ready For Operator Send"},"missing_config_keys":{"items":{"type":"string"},"type":"array","title":"Missing Config Keys"},"missing_config_one_of":{"items":{"items":{"type":"string"},"type":"array"},"type":"array","title":"Missing Config One Of"},"missing_secret_ref":{"type":"boolean","title":"Missing Secret Ref","default":false},"invalid_config":{"additionalProperties":{"type":"string"},"type":"object","title":"Invalid Config"},"secret_required":{"type":"boolean","title":"Secret Required"},"secret_ref_present":{"type":"boolean","title":"Secret Ref Present"},"secret_resolved":{"type":"boolean","title":"Secret Resolved","default":false},"secret_provider":{"type":"string","title":"Secret Provider","default":"none"},"secret_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Error"},"secret_lookup":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Lookup"},"secret_material_returned":{"type":"boolean","title":"Secret Material Returned","default":false},"live_external_send_operator_only":{"type":"boolean","title":"Live External Send Operator Only","default":true},"raw_secret_material_stored":{"type":"boolean","title":"Raw Secret Material Stored","default":false}},"type":"object","required":["channel","target","supported","enabled","configured","status","ready_for_route","ready_for_operator_send","secret_required","secret_ref_present"],"title":"TenantIntegrationReadinessItem"},"TenantIntegrationSecurityPolicyChannel":{"properties":{"channel":{"type":"string","title":"Channel"},"delivery_kind":{"type":"string","title":"Delivery Kind"},"requires_secret_ref":{"type":"boolean","title":"Requires Secret Ref"},"credential_purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credential Purpose"},"required_provider_capabilities":{"items":{"type":"string"},"type":"array","title":"Required Provider Capabilities"},"accepted_secret_ref_schemes":{"items":{"type":"string"},"type":"array","title":"Accepted Secret Ref Schemes"},"raw_secret_material_allowed":{"type":"boolean","title":"Raw Secret Material Allowed","default":false},"secret_material_returned":{"type":"boolean","title":"Secret Material Returned","default":false},"callback_supported":{"type":"boolean","title":"Callback Supported"},"callback_path_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callback Path Template"},"review_callback_contract":{"additionalProperties":true,"type":"object","title":"Review Callback Contract"},"hosted_oauth_supported":{"type":"boolean","title":"Hosted Oauth Supported","default":false},"provider_state_sync_supported":{"type":"boolean","title":"Provider State Sync Supported","default":false},"live_external_send_operator_only":{"type":"boolean","title":"Live External Send Operator Only","default":true},"least_privilege_note":{"type":"string","title":"Least Privilege Note"},"claim_boundary":{"type":"string","title":"Claim Boundary"}},"type":"object","required":["channel","delivery_kind","requires_secret_ref","callback_supported","least_privilege_note","claim_boundary"],"title":"TenantIntegrationSecurityPolicyChannel"},"TenantIntegrationSecurityPolicyResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"accepted_secret_ref_schemes":{"items":{"type":"string"},"type":"array","title":"Accepted Secret Ref Schemes"},"raw_secret_material_allowed":{"type":"boolean","title":"Raw Secret Material Allowed","default":false},"secret_material_returned":{"type":"boolean","title":"Secret Material Returned","default":false},"live_external_send_operator_only":{"type":"boolean","title":"Live External Send Operator Only","default":true},"hosted_oauth_supported":{"type":"boolean","title":"Hosted Oauth Supported","default":false},"provider_state_sync_supported":{"type":"boolean","title":"Provider State Sync Supported","default":false},"cloud_provider_assumptions":{"items":{"type":"string"},"type":"array","title":"Cloud Provider Assumptions"},"server_side_ip_boundary":{"type":"string","title":"Server Side Ip Boundary"},"operator_control_boundary":{"type":"string","title":"Operator Control Boundary"},"channel_policies":{"items":{"$ref":"#/components/schemas/TenantIntegrationSecurityPolicyChannel"},"type":"array","title":"Channel Policies"},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Integration security policy is operating guidance for tenant credential setup. It does not install provider apps, provision IAM/RBAC, perform hosted OAuth, sync provider state, send external messages, or return raw secrets."}},"type":"object","required":["tenant","accepted_secret_ref_schemes","server_side_ip_boundary","operator_control_boundary","channel_policies"],"title":"TenantIntegrationSecurityPolicyResponse"},"TenantIntegrationSetupPlanItem":{"properties":{"invalid_config":{"additionalProperties":{"type":"string"},"type":"object","title":"Invalid Config"},"channel":{"type":"string","title":"Channel"},"target":{"type":"string","title":"Target"},"source":{"type":"string","enum":["configured","suggested"],"title":"Source"},"requires_tenant_integration":{"type":"boolean","title":"Requires Tenant Integration"},"configured":{"type":"boolean","title":"Configured"},"enabled":{"type":"boolean","title":"Enabled"},"supported":{"type":"boolean","title":"Supported"},"readiness_status":{"type":"string","title":"Readiness Status"},"next_action":{"type":"string","title":"Next Action"},"action_required":{"type":"boolean","title":"Action Required"},"ready_for_route":{"type":"boolean","title":"Ready For Route"},"ready_for_operator_send":{"type":"boolean","title":"Ready For Operator Send"},"required_config_keys":{"items":{"type":"string"},"type":"array","title":"Required Config Keys"},"required_config_one_of":{"items":{"items":{"type":"string"},"type":"array"},"type":"array","title":"Required Config One Of"},"missing_config_keys":{"items":{"type":"string"},"type":"array","title":"Missing Config Keys"},"missing_config_one_of":{"items":{"items":{"type":"string"},"type":"array"},"type":"array","title":"Missing Config One Of"},"secret_required":{"type":"boolean","title":"Secret Required"},"missing_secret_ref":{"type":"boolean","title":"Missing Secret Ref","default":false},"secret_ref_present":{"type":"boolean","title":"Secret Ref Present"},"secret_resolved":{"type":"boolean","title":"Secret Resolved","default":false},"secret_provider":{"type":"string","title":"Secret Provider","default":"none"},"secret_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Error"},"secret_lookup":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Lookup"},"callback_supported":{"type":"boolean","title":"Callback Supported"},"callback_path_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callback Path Template"},"review_callback_contract":{"additionalProperties":true,"type":"object","title":"Review Callback Contract"},"setup_steps":{"items":{"type":"string"},"type":"array","title":"Setup Steps"},"operator_preflight_steps":{"items":{"type":"string"},"type":"array","title":"Operator Preflight Steps"},"hosted_oauth_supported":{"type":"boolean","title":"Hosted Oauth Supported","default":false},"provider_state_sync_supported":{"type":"boolean","title":"Provider State Sync Supported","default":false},"live_external_send_operator_only":{"type":"boolean","title":"Live External Send Operator Only","default":true},"raw_secret_material_returned":{"type":"boolean","title":"Raw Secret Material Returned","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary"}},"type":"object","required":["channel","target","source","requires_tenant_integration","configured","enabled","supported","readiness_status","next_action","action_required","ready_for_route","ready_for_operator_send","secret_required","secret_ref_present","callback_supported","claim_boundary"],"title":"TenantIntegrationSetupPlanItem"},"TenantIntegrationUpdate":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"config":{"additionalProperties":true,"type":"object","title":"Config"},"secret_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Ref","description":"Reference to a secret manager entry. Raw secret material is not accepted."},"rotate_signing_secret":{"type":"boolean","title":"Rotate Signing Secret","description":"Webhook channel only: mint and return a fresh one-time-shown signing secret, replacing the previous one. Ignored when a secret_ref is supplied.","default":false}},"type":"object","title":"TenantIntegrationUpdate"},"TenantIntegrationUpsertResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"channel":{"type":"string","title":"Channel"},"target":{"type":"string","title":"Target"},"enabled":{"type":"boolean","title":"Enabled"},"configured":{"type":"boolean","title":"Configured"},"config":{"additionalProperties":true,"type":"object","title":"Config"},"secret_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Ref"},"secret_material_stored":{"type":"boolean","title":"Secret Material Stored","default":false},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"signing_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signing Secret","description":"One-time-shown webhook signing secret (whsec_…). Shown only on the minting response; store it now."},"signing_secret_returned_once":{"type":"boolean","title":"Signing Secret Returned Once","default":false},"signing_secret_configured":{"type":"boolean","title":"Signing Secret Configured","default":false},"signing_key_derivation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signing Key Derivation","description":"How to derive the HMAC key your receiver verifies with from the shown-once signing secret."},"raw_signing_secret_stored":{"type":"boolean","title":"Raw Signing Secret Stored","default":false}},"type":"object","required":["tenant","channel","target","enabled","configured","config","secret_ref","created_at","updated_at"],"title":"TenantIntegrationUpsertResponse","description":"Upsert response: the integration item plus one-time signing-secret fields.\n\n``signing_secret`` is set ONLY on the response that minted it (webhook\nchannel, no secret_ref). It is never stored raw and never returned again —\nonly its derived signing key is kept server-side. That derived key is the\nsymmetric HMAC signing key itself (usable signing material), not a one-way\nverifier like an API-key hash; tenants who need signing material held in an\nexternal secret manager should register a ``secret_ref`` instead."},"TenantIntegrationsReadinessResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"items":{"items":{"$ref":"#/components/schemas/TenantIntegrationReadinessItem"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"ready_count":{"type":"integer","title":"Ready Count"},"raw_secret_material_returned":{"type":"boolean","title":"Raw Secret Material Returned","default":false},"live_external_send_operator_only":{"type":"boolean","title":"Live External Send Operator Only","default":true},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Integration readiness resolves secret references into safe metadata only. It does not return raw secrets, send external provider messages, or prove provider-side delivery."}},"type":"object","required":["tenant","items","count","ready_count"],"title":"TenantIntegrationsReadinessResponse"},"TenantIntegrationsResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"integrations":{"items":{"$ref":"#/components/schemas/TenantIntegrationItem"},"type":"array","title":"Integrations"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["tenant","integrations","count"],"title":"TenantIntegrationsResponse"},"TenantIntegrationsSetupPlanResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"items":{"items":{"$ref":"#/components/schemas/TenantIntegrationSetupPlanItem"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"action_required_count":{"type":"integer","title":"Action Required Count"},"ready_for_operator_send_count":{"type":"integer","title":"Ready For Operator Send Count"},"raw_secret_material_returned":{"type":"boolean","title":"Raw Secret Material Returned","default":false},"live_external_send_operator_only":{"type":"boolean","title":"Live External Send Operator Only","default":true},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Integration setup plan derives operator next actions from supported channels and tenant readiness. It does not install provider apps, perform hosted OAuth, sync provider state, send external messages, or return raw secrets."}},"type":"object","required":["tenant","items","count","action_required_count","ready_for_operator_send_count"],"title":"TenantIntegrationsSetupPlanResponse"},"TenantMeResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"name":{"type":"string","title":"Name"},"active":{"type":"boolean","title":"Active"},"policy":{"additionalProperties":true,"type":"object","title":"Policy"}},"type":"object","required":["tenant","name","active","policy"],"title":"TenantMeResponse"},"TenantPolicyActionOption":{"properties":{"action_type":{"type":"string","title":"Action Type"},"default_decision":{"type":"string","title":"Default Decision"},"decisions":{"items":{"type":"string"},"type":"array","title":"Decisions"},"route_default":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route Default"},"tenant_allowlist_can_allow":{"type":"boolean","title":"Tenant Allowlist Can Allow","default":false},"evidence_fields":{"items":{"type":"string"},"type":"array","title":"Evidence Fields"}},"type":"object","required":["action_type","default_decision","decisions"],"title":"TenantPolicyActionOption"},"TenantPolicyDiffResponse":{"properties":{"added":{"additionalProperties":true,"type":"object","title":"Added"},"removed":{"additionalProperties":true,"type":"object","title":"Removed"},"changed":{"additionalProperties":true,"type":"object","title":"Changed"},"unchanged":{"additionalProperties":true,"type":"object","title":"Unchanged"}},"type":"object","title":"TenantPolicyDiffResponse"},"TenantPolicyOptionsResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"policy_pack":{"type":"string","title":"Policy Pack"},"supported_action_types":{"items":{"$ref":"#/components/schemas/TenantPolicyActionOption"},"type":"array","title":"Supported Action Types"},"default_review_action_types":{"items":{"type":"string"},"type":"array","title":"Default Review Action Types"},"default_review_routes":{"additionalProperties":{"type":"string"},"type":"object","title":"Default Review Routes"},"required_context_fields":{"items":{"type":"string"},"type":"array","title":"Required Context Fields"}},"type":"object","required":["tenant","policy_pack","supported_action_types","default_review_action_types","default_review_routes"],"title":"TenantPolicyOptionsResponse"},"TenantPolicyPreviewResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"policy_pack":{"type":"string","title":"Policy Pack","default":"law/default-us-legal-ai-supervision"},"current_policy":{"additionalProperties":true,"type":"object","title":"Current Policy"},"proposed_policy":{"additionalProperties":true,"type":"object","title":"Proposed Policy"},"diff":{"$ref":"#/components/schemas/TenantPolicyDiffResponse"},"current_policy_hash":{"type":"string","title":"Current Policy Hash"},"proposed_policy_hash":{"type":"string","title":"Proposed Policy Hash"},"mutation_applied":{"type":"boolean","title":"Mutation Applied","default":false},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Policy preview validates and compares tenant overlay metadata only. It does not mutate tenant policy, certify compliance, inspect raw prompt/document content, or replace owner review."}},"type":"object","required":["tenant","current_policy","proposed_policy","diff","current_policy_hash","proposed_policy_hash"],"title":"TenantPolicyPreviewResponse"},"TenantPolicyReceiptItem":{"properties":{"receipt_key":{"type":"string","title":"Receipt Key"},"tenant":{"type":"string","title":"Tenant"},"policy_pack":{"type":"string","title":"Policy Pack"},"current_policy_hash":{"type":"string","title":"Current Policy Hash"},"proposed_policy_hash":{"type":"string","title":"Proposed Policy Hash"},"diff":{"$ref":"#/components/schemas/TenantPolicyDiffResponse"},"policy_changed":{"type":"boolean","title":"Policy Changed"},"mutation_applied":{"type":"boolean","title":"Mutation Applied","default":true},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"created_at":{"type":"string","title":"Created At"},"href":{"type":"string","title":"Href","default":"/tenant/policy/receipts"},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Policy receipts record tenant overlay metadata, hashes, and diffs after a successful policy write. They do not store raw prompt/document content, certify compliance, or replace owner review."}},"type":"object","required":["receipt_key","tenant","policy_pack","current_policy_hash","proposed_policy_hash","diff","policy_changed","created_at"],"title":"TenantPolicyReceiptItem"},"TenantPolicyReceiptsResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"policy_pack":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy Pack"},"count":{"type":"integer","title":"Count"},"receipts":{"items":{"$ref":"#/components/schemas/TenantPolicyReceiptItem"},"type":"array","title":"Receipts"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Policy receipts record tenant overlay metadata, hashes, and diffs after a successful policy write. They do not store raw prompt/document content, certify compliance, or replace owner review."}},"type":"object","required":["tenant","count","receipts"],"title":"TenantPolicyReceiptsResponse"},"TenantPolicyResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"policy_pack":{"type":"string","title":"Policy Pack","default":"law/default-us-legal-ai-supervision"},"policy":{"additionalProperties":true,"type":"object","title":"Policy"},"policy_receipt":{"anyOf":[{"$ref":"#/components/schemas/TenantPolicyReceiptItem"},{"type":"null"}]}},"type":"object","required":["tenant","policy"],"title":"TenantPolicyResponse"},"TenantPolicyUpdate":{"properties":{"allowed_action_types":{"items":{"type":"string"},"type":"array","title":"Allowed Action Types"},"denied_action_types":{"items":{"type":"string"},"type":"array","title":"Denied Action Types"},"require_review_action_types":{"items":{"type":"string"},"type":"array","title":"Require Review Action Types"},"review_routes":{"additionalProperties":{"type":"string"},"type":"object","title":"Review Routes"}},"type":"object","title":"TenantPolicyUpdate"},"TenantRecordsAttestationKey":{"properties":{"key":{"type":"string","title":"Key"},"retained":{"type":"integer","title":"Retained","description":"Records where this declared value is stored and readable."},"committed":{"type":"integer","title":"Committed","description":"Records where only the hash commitment of the value is stored."}},"type":"object","required":["key","retained","committed"],"title":"TenantRecordsAttestationKey"},"TenantRecordsAttestationPack":{"properties":{"pack":{"type":"string","title":"Pack"},"records":{"type":"integer","title":"Records"},"declared_keys":{"items":{"$ref":"#/components/schemas/TenantRecordsAttestationKey"},"type":"array","title":"Declared Keys"},"expired_records":{"type":"integer","title":"Expired Records"},"disposals":{"type":"integer","title":"Disposals"},"disposal_reasons":{"additionalProperties":{"type":"integer"},"type":"object","title":"Disposal Reasons","description":"Retained disposal reasons and their counts."},"disposal_reasons_committed_only":{"type":"integer","title":"Disposal Reasons Committed Only"}},"type":"object","required":["pack","records","declared_keys","expired_records","disposals","disposal_reasons","disposal_reasons_committed_only"],"title":"TenantRecordsAttestationPack"},"TenantRecordsAttestationsResponse":{"properties":{"object":{"type":"string","title":"Object","default":"records_attestations"},"tenant":{"type":"string","title":"Tenant"},"generated_at":{"type":"string","title":"Generated At"},"recorded_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recorded From"},"recorded_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recorded To"},"retention_posture":{"type":"boolean","title":"Retention Posture","description":"Whether declared metadata values are currently retained for this tenant."},"packs":{"items":{"$ref":"#/components/schemas/TenantRecordsAttestationPack"},"type":"array","title":"Packs"},"truncated":{"type":"boolean","title":"Truncated"},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Attestations are declared by the tenant and bound into sealed records — timestamped and tamper-evident, not verified by Planisphere."}},"type":"object","required":["tenant","generated_at","retention_posture","packs","truncated"],"title":"TenantRecordsAttestationsResponse"},"TenantRecordsByKeyResponse":{"properties":{"object":{"type":"string","const":"records_by_seal_key","title":"Object","default":"records_by_seal_key"},"tenant":{"type":"string","title":"Tenant"},"generated_at":{"type":"string","title":"Generated At"},"keys":{"items":{"$ref":"#/components/schemas/SealKeyRow"},"type":"array","title":"Keys"},"records_without_a_seal_key":{"type":"integer","title":"Records Without A Seal Key","description":"Records whose stored response carried no seal to read a key from.","default":0},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Which signing key minted each record, read from the seal stored at mint. It reports attribution, not validity: a record minted under a retired key remains authentic, and this report is not a verification. Verify any individual receipt with POST /v1/verify."}},"type":"object","required":["tenant","generated_at","keys"],"title":"TenantRecordsByKeyResponse"},"TenantRecordsCoverageResponse":{"properties":{"object":{"type":"string","const":"records_coverage","title":"Object","default":"records_coverage"},"tenant":{"type":"string","title":"Tenant"},"generated_at":{"type":"string","title":"Generated At"},"coverage_contract":{"type":"string","title":"Coverage Contract","default":"planisphere.coverage_report/1"},"systems":{"items":{"$ref":"#/components/schemas/SystemCoverageRow"},"type":"array","title":"Systems"},"undeclared_systems":{"items":{"type":"string"},"type":"array","title":"Undeclared Systems","description":"Systems seen in records with no declaration in force."},"records_without_a_system":{"type":"integer","title":"Records Without A System","description":"Sealed records carrying no system_id. Not attributable to a system and therefore excluded from sequence analysis entirely.","default":0},"observes_generation":{"type":"boolean","title":"Observes Generation","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Planisphere observes only what it is sent. Records prove that specific acts were attested at specific times and have not been altered since. Completeness of the record set relative to the operator's actual output volume is an OPERATOR ASSERTION. Planisphere makes that assertion explicit, dated, chained and mechanically reconcilable, and reports every gap it can detect. It does not and cannot observe generation."},"limits":{"items":{"type":"string"},"type":"array","title":"Limits"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false}},"type":"object","required":["tenant","generated_at","systems"],"title":"TenantRecordsCoverageResponse"},"TenantRecordsExpireRequest":{"properties":{"action_keys":{"items":{"type":"string"},"type":"array","maxItems":50,"minItems":1,"title":"Action Keys"},"reason":{"type":"string","maxLength":200,"title":"Reason","default":"operator_burn"}},"type":"object","required":["action_keys"],"title":"TenantRecordsExpireRequest"},"TenantRecordsExpireResponse":{"properties":{"expired":{"items":{"type":"string"},"type":"array","title":"Expired"},"already_expired":{"items":{"type":"string"},"type":"array","title":"Already Expired"},"not_found":{"items":{"type":"string"},"type":"array","title":"Not Found"},"expiry_records":{"items":{"$ref":"#/components/schemas/TenantRecordsExpiryRecord"},"type":"array","title":"Expiry Records"},"metered_actions":{"type":"integer","title":"Metered Actions"}},"type":"object","required":["expired","already_expired","not_found","expiry_records","metered_actions"],"title":"TenantRecordsExpireResponse"},"TenantRecordsExpiryRecord":{"properties":{"pack":{"type":"string","title":"Pack"},"action_key":{"type":"string","title":"Action Key"}},"type":"object","required":["pack","action_key"],"title":"TenantRecordsExpiryRecord"},"TenantRecordsExportItem":{"properties":{"receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Id"},"receipt_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Url"},"receipt_original_root":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Original Root","description":"Root of the original retained work; an export wrapper or later reconstructed packet may have a different root. The locator is unsigned."},"action_key":{"type":"string","title":"Action Key"},"seal_standing":{"type":"string","title":"Seal Standing","description":"'active' or 'expired'. Expired = the tenant sealed a disposal record revoking this receipt's evidentiary endorsement; the row, chain and signature remain and verification reports it expired.","default":"active"},"pack":{"type":"string","title":"Pack"},"action_type":{"type":"string","title":"Action Type"},"decision":{"type":"string","title":"Decision"},"status":{"type":"string","enum":["pending_review","blocked","recorded"],"title":"Status"},"anchored":{"type":"boolean","title":"Anchored","description":"Whether this record is covered by the canonical roll-up: recorded at or before the tenant chain head's latest anchored epoch cut, so an inclusion proof against an anchored root is available now. False means sealed and awaiting the next hourly roll-up.","default":false},"recorded_at":{"type":"string","title":"Recorded At","description":"Server clock at seal time (UTC RFC 3339) — the timestamp the v2 seal commits and the timestamp this export filters and orders by."},"occurred_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Occurred At","description":"Caller clock claim for record-verb events (committed into payload_hash, not asserted by the seal). None for gate actions."},"source_key":{"type":"string","title":"Source Key"},"payload_hash":{"type":"string","title":"Payload Hash"},"review_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Route"},"evidence_packet":{"$ref":"#/components/schemas/EvidencePacketStub"},"verify_request":{"additionalProperties":true,"type":"object","title":"Verify Request","description":"Ready-to-POST body for /evidence-packets/verify-seal (raw-safe). The same fields POST to /evidence-packets/seal-bundle for the offline 4-file bundle."},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false}},"type":"object","required":["action_key","pack","action_type","decision","status","recorded_at","source_key","payload_hash","evidence_packet","verify_request"],"title":"TenantRecordsExportItem"},"TenantRecordsExportResponse":{"properties":{"object":{"type":"string","const":"records_export_page","title":"Object","default":"records_export_page"},"tenant":{"type":"string","title":"Tenant"},"generated_at":{"type":"string","title":"Generated At"},"recorded_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recorded From","description":"Inclusive lower bound applied to recorded_at (UTC RFC 3339)."},"recorded_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recorded To","description":"Exclusive upper bound applied to recorded_at (UTC RFC 3339)."},"range_semantics":{"type":"string","title":"Range Semantics","default":"recorded_from <= recorded_at < recorded_to (half-open)"},"order":{"type":"string","title":"Order","default":"recorded_at ascending, action_key ascending"},"count":{"type":"integer","title":"Count"},"records":{"items":{"$ref":"#/components/schemas/TenantRecordsExportItem"},"type":"array","title":"Records"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque continuation cursor. Present when more records remain in the range; pass it back as ?cursor= to fetch the next page. Each page is self-contained (every record carries its own verify fields), so pages can be streamed to disk as they arrive."},"has_more":{"type":"boolean","title":"Has More","default":false},"verify_endpoint":{"type":"string","title":"Verify Endpoint","default":"/evidence-packets/verify-seal"},"seal_bundle_batch_endpoint":{"type":"string","title":"Seal Bundle Batch Endpoint","default":"/evidence-packets/seal-bundle/batch"},"payload_retention":{"type":"string","title":"Payload Retention","default":"Planisphere stores hash commitments only — retain your payloads to re-prove WHAT was recorded. This export re-proves that each record was sealed, when, and for whom."},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"The records export lists sealed routing, review, and record receipts for a time range. It omits raw prompt/document content and free-text review reasons, and it does not certify compliance or determine legality."}},"type":"object","required":["tenant","generated_at","count","records"],"title":"TenantRecordsExportResponse"},"TenantRecordsSummaryEventType":{"properties":{"event_type":{"type":"string","title":"Event Type","description":"The stored action_type — the gate action type or record-verb event type the rows were sealed under."},"total":{"type":"integer","title":"Total"},"by_decision":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Decision","description":"Sealed-row counts per stored decision for this event type."},"last_recorded_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Recorded At","description":"Most recent recorded_at among these rows (UTC RFC 3339)."}},"type":"object","required":["event_type","total","by_decision"],"title":"TenantRecordsSummaryEventType"},"TenantRecordsSummaryPack":{"properties":{"pack":{"type":"string","title":"Pack","description":"Pack derived from the action_key prefix over the closed pack vocabulary; action keys outside it bucket to 'other'."},"total_sealed":{"type":"integer","title":"Total Sealed"},"by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Status","description":"Counts keyed by evidence status derived from the STORED decision only (evidence_status_for_decision without review resolution): a needs_review row a reviewer has since resolved still counts as pending_review here. Per-record surfaces (the records export and packet fetch paths) are review-aware."},"first_recorded_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Recorded At","description":"Earliest recorded_at in the pack for the range (UTC RFC 3339)."},"last_recorded_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Recorded At","description":"Latest recorded_at in the pack for the range (UTC RFC 3339)."},"event_types":{"items":{"$ref":"#/components/schemas/TenantRecordsSummaryEventType"},"type":"array","title":"Event Types"},"truncated":{"type":"boolean","title":"Truncated","description":"True when the pack had more distinct event types than the event_types list cap; totals above still count every sealed row.","default":false}},"type":"object","required":["pack","total_sealed","by_status","event_types"],"title":"TenantRecordsSummaryPack"},"TenantRecordsSummaryResponse":{"properties":{"object":{"type":"string","const":"records_summary","title":"Object","default":"records_summary"},"tenant":{"type":"string","title":"Tenant"},"generated_at":{"type":"string","title":"Generated At"},"recorded_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recorded From","description":"Inclusive lower bound applied to recorded_at (UTC RFC 3339)."},"recorded_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recorded To","description":"Exclusive upper bound applied to recorded_at (UTC RFC 3339)."},"range_semantics":{"type":"string","title":"Range Semantics","default":"recorded_from <= recorded_at < recorded_to (half-open)"},"total_sealed":{"type":"integer","title":"Total Sealed"},"packs":{"items":{"$ref":"#/components/schemas/TenantRecordsSummaryPack"},"type":"array","title":"Packs"},"records_export_endpoint":{"type":"string","title":"Records Export Endpoint","default":"/tenant/exports/records"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"The records summary counts sealed receipts for a time range. Statuses derive from stored decisions without review resolution. It omits raw prompt/document content and free-text review reasons, and it does not certify compliance or determine legality."}},"type":"object","required":["tenant","generated_at","total_sealed","packs"],"title":"TenantRecordsSummaryResponse"},"TenantRetentionRuleItem":{"properties":{"pack":{"type":"string","title":"Pack"},"event_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type","description":"None means the rule covers the whole pack."},"lifespan_days":{"type":"integer","title":"Lifespan Days"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["pack","lifespan_days"],"title":"TenantRetentionRuleItem"},"TenantRetentionRuleUpdate":{"properties":{"pack":{"type":"string","title":"Pack"},"event_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"},"lifespan_days":{"anyOf":[{"type":"integer","maximum":36500.0,"minimum":1.0},{"type":"null"}],"title":"Lifespan Days","description":"Days a covered record stands; the sweep expires it within a day after that. Null clears the rule."}},"type":"object","required":["pack"],"title":"TenantRetentionRuleUpdate"},"TenantRetentionRulesResponse":{"properties":{"rules":{"items":{"$ref":"#/components/schemas/TenantRetentionRuleItem"},"type":"array","title":"Rules"},"sweep_reason":{"type":"string","title":"Sweep Reason","description":"The reason stamped on sealed disposals the retention sweep produces (retention_policy)."}},"type":"object","required":["rules","sweep_reason"],"title":"TenantRetentionRulesResponse"},"TenantSampleRecordResponse":{"properties":{"action_key":{"type":"string","title":"Action Key","description":"The sealed sample record's action key."},"pack":{"type":"string","title":"Pack"},"event_type":{"type":"string","title":"Event Type"},"sample":{"type":"boolean","title":"Sample","default":true}},"type":"object","required":["action_key","pack","event_type"],"title":"TenantSampleRecordResponse","description":"A one-click sample seal for onboarding: a real, verifiable receipt the new\nuser can open and verify, without wiring an agent or minting a key first."},"TenantUsageMeterEventItem":{"properties":{"event_id":{"type":"string","title":"Event Id"},"action_key":{"type":"string","title":"Action Key"},"api_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key Id"},"meter_event_name":{"type":"string","title":"Meter Event Name"},"usage_unit":{"type":"string","title":"Usage Unit"},"meter_value":{"type":"integer","title":"Meter Value"},"source_stamp_id":{"type":"string","title":"Source Stamp Id"},"source_attestation_root":{"type":"string","title":"Source Attestation Root"},"idempotency_key":{"type":"string","title":"Idempotency Key"},"stripe_event_identifier":{"type":"string","title":"Stripe Event Identifier"},"stripe_customer_id_present":{"type":"boolean","title":"Stripe Customer Id Present","default":false},"status":{"type":"string","enum":["pending_customer","pending_emit","emitted","failed","disabled","sandbox_settled","guard_retry","billing_sending","billing_hold"],"title":"Status"},"emission_attempt_count":{"type":"integer","title":"Emission Attempt Count","default":0},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"emitted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emitted At"},"price_applied":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Price Applied","description":"Legacy field; null after provider acceptance because invoice reconciliation is not established.","default":false},"provider_accepted":{"type":"boolean","title":"Provider Accepted","default":false},"invoice_status":{"type":"string","const":"unverified","title":"Invoice Status","default":"unverified"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"raw_secret_material_stored":{"type":"boolean","title":"Raw Secret Material Stored","default":false},"raw_api_key_stored":{"type":"boolean","title":"Raw Api Key Stored","default":false},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["event_id","action_key","meter_event_name","usage_unit","meter_value","source_stamp_id","source_attestation_root","idempotency_key","stripe_event_identifier","status"],"title":"TenantUsageMeterEventItem"},"TenantUsageResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"sandbox":{"type":"boolean","title":"Sandbox"},"actions_used":{"type":"integer","title":"Actions Used","description":"Sealed actions recorded on the usage meter ledger."},"credits_used":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Used","description":"Credits used this UTC month by a free workspace (no card on file); null once a card is added."},"credit_allowance":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credit Allowance","description":"The free plan's monthly credits; null once a card is added and usage past it is metered."},"remaining":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Remaining","description":"Free credits left this month before recording pauses; null once a card is added."},"allowance_resets":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Allowance Resets","description":"The date (UTC) the free credits reset; null once a card is added."},"cap_status":{"type":"string","enum":["uncapped","ok","warning","reached"],"title":"Cap Status","default":"uncapped"},"free_tier_monthly":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Free Tier Monthly","description":"For sandbox workspaces, the verified monthly free-credit allowance on the configured upgrade price. Null when unavailable or incompatible. For existing production workspaces, null until their actual subscription terms are independently verified; the global price is not authoritative."},"warning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Warning","description":"Set when a free workspace nears or reaches its monthly credits."},"warning_threshold":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Warning Threshold","description":"Credits used this month at which the near-allowance warning starts."},"meter_events_summary":{"additionalProperties":true,"type":"object","title":"Meter Events Summary"},"held_records":{"type":"integer","title":"Held Records","description":"Records this tenant is keeping live (active seal standing, disposals excluded). The keep-meter base — expiring a record drops it out of this count.","default":0},"keep_meter_enabled":{"type":"boolean","title":"Keep Meter Enabled","description":"Whether keeping records is metered monthly (the keep charge).","default":false},"keep_credits_monthly":{"type":"integer","title":"Keep Credits Monthly","description":"Credits accrued each month for keeping held_records live, into the same meter and free tier as creates. Zero when the keep-meter is off.","default":0},"upgrade_href":{"type":"string","title":"Upgrade Href","default":"/console#billing"},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Usage reports metered sealed actions for this tenant. It does not change billing state, certify compliance, or alter recorded evidence."}},"type":"object","required":["tenant","sandbox","actions_used"],"title":"TenantUsageResponse"},"TenantWebhookDeliveriesResponse":{"properties":{"tenant":{"type":"string","title":"Tenant"},"target":{"type":"string","title":"Target"},"items":{"items":{"$ref":"#/components/schemas/TenantWebhookDeliveryItem"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"total_count":{"type":"integer","title":"Total Count"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"status_filter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Filter"},"raw_secret_material_returned":{"type":"boolean","title":"Raw Secret Material Returned","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Delivery records report Planisphere's outbound webhook attempts and HTTP outcomes. A delivered status is a 2xx from the configured endpoint, not proof the receiver processed the event."}},"type":"object","required":["tenant","target","items","count","total_count","limit","offset"],"title":"TenantWebhookDeliveriesResponse"},"TenantWebhookDeliveryItem":{"properties":{"delivery_id":{"type":"string","title":"Delivery Id"},"event":{"type":"string","title":"Event"},"event_id":{"type":"string","title":"Event Id"},"target":{"type":"string","title":"Target"},"status":{"type":"string","enum":["pending","delivered","failed","quarantined"],"title":"Status"},"attempt_count":{"type":"integer","title":"Attempt Count","default":0},"last_attempt_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Attempt At"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["delivery_id","event","event_id","target","status"],"title":"TenantWebhookDeliveryItem"},"TrustEpochItem":{"properties":{"epoch_id":{"type":"string","title":"Epoch Id"},"epoch_seq":{"type":"integer","title":"Epoch Seq"},"canonical_root":{"type":"string","title":"Canonical Root"},"members_digest":{"type":"string","title":"Members Digest"},"n_members":{"type":"integer","title":"N Members"},"prev_epoch_digest":{"type":"string","title":"Prev Epoch Digest"},"epoch_digest":{"type":"string","title":"Epoch Digest"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["epoch_id","epoch_seq","canonical_root","members_digest","n_members","prev_epoch_digest","epoch_digest"],"title":"TrustEpochItem"},"TrustEpochsResponse":{"properties":{"object":{"type":"string","title":"Object","default":"trust_epochs"},"rollup_cadence":{"type":"string","title":"Rollup Cadence","default":"hourly"},"epochs":{"items":{"$ref":"#/components/schemas/TrustEpochItem"},"type":"array","title":"Epochs"},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Each epoch is SHA-pinned: its digest commits to its content and the previous epoch's digest, back to genesis. Digests, roots and counts only — member identities never appear on this surface."}},"type":"object","required":["epochs"],"title":"TrustEpochsResponse"},"TrustRecordAnchor":{"properties":{"epoch_seq":{"type":"integer","title":"Epoch Seq"},"canonical_root":{"type":"string","title":"Canonical Root"},"epoch_digest":{"type":"string","title":"Epoch Digest"},"anchored_at":{"type":"string","title":"Anchored At"}},"type":"object","required":["epoch_seq","canonical_root","epoch_digest","anchored_at"],"title":"TrustRecordAnchor"},"TrustRecordResponse":{"properties":{"object":{"type":"string","title":"Object","default":"trust_record"},"action_key":{"type":"string","title":"Action Key"},"exists":{"type":"boolean","title":"Exists"},"seal_standing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seal Standing"},"standing_notice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Standing Notice"},"expired_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expired At"},"expiry_action_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expiry Action Key"},"anchor":{"anyOf":[{"$ref":"#/components/schemas/TrustRecordAnchor"},{"type":"null"}]},"tenant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant","description":"Named only when the operator opted into public proof disclosure; null otherwise."},"disclosure":{"type":"string","title":"Disclosure","description":"pin_only, or opted_in when the operator discloses more.","default":"pin_only"},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"The registry answers existence, standing, and the SHA pin of the epoch that anchors this record. Everything richer is the operator's to disclose, never Planisphere's."}},"type":"object","required":["action_key","exists"],"title":"TrustRecordResponse"},"TurnRewrap":{"properties":{"action_key":{"type":"string","maxLength":180,"title":"Action Key"},"wrapped_key":{"type":"string","title":"Wrapped Key"}},"type":"object","required":["action_key","wrapped_key"],"title":"TurnRewrap"},"V1GateRequest":{"properties":{"pack":{"type":"string","enum":["law","defense","medicine","education","us-regulatory","eu-ai-act","ca-sb942","cn-ai-labelling","in-it-rules","kr-ai-framework","ai-provenance"],"title":"Pack","description":"Policy pack to gate against (replaces the legacy path prefix).","examples":["defense","law"]}},"additionalProperties":true,"type":"object","required":["pack"],"title":"V1GateRequest","description":"Body for POST /v1/gate.\n\nCarries the policy ``pack`` plus the same action fields the legacy\n``/{vertical}/proposed-action`` endpoints accept. Extra action fields are\npermitted and forwarded to the underlying request model, which performs the\nsame validation as the legacy route."},"V1RecordBatchResponse":{"properties":{"object":{"type":"string","const":"record_batch","title":"Object","default":"record_batch"},"tenant":{"type":"string","title":"Tenant"},"count":{"type":"integer","title":"Count"},"results":{"items":{"$ref":"#/components/schemas/V1RecordResponse"},"type":"array","title":"Results"},"payload_retention":{"type":"string","title":"Payload Retention","default":"Planisphere stores hash commitments only — retain your payload to re-prove WHAT was recorded."},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false}},"type":"object","required":["tenant","count","results"],"title":"V1RecordBatchResponse"},"V1RecordInclusionProofResponse":{"properties":{"object":{"type":"string","const":"record_inclusion_proof","title":"Object","default":"record_inclusion_proof"},"tenant":{"type":"string","title":"Tenant"},"action_key":{"type":"string","title":"Action Key"},"record":{"additionalProperties":true,"type":"object","title":"Record","description":"Where this record sits in the proof: its attestation_root, its tenant-chain link (seq/link_digest), and the epoch that anchors it."},"bundle":{"additionalProperties":true,"type":"object","title":"Bundle","description":"The canonical two-level inclusion bundle, verbatim. Offline-verifiable: outer Merkle proof binds the tenant chain head into canonical_root; inner_chain re-derives the tenant chain up to that head, which must contain this record's attestation_root."},"verify":{"additionalProperties":true,"type":"object","title":"Verify","description":"Server-side run of the same offline verifier (canonical_chain.verify_inclusion_bundle) over `bundle`: {ok, outer_ok, inner_ok, root_ok, reason}."},"verify_with":{"type":"string","title":"Verify With"},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"The inclusion proof shows this sealed record's attestation root was committed into the tenant evidence chain and rolled up into Planisphere's canonical root. It is an integrity record, not external notarization, a legal determination, or a compliance certification."}},"type":"object","required":["tenant","action_key","record","bundle","verify","verify_with"],"title":"V1RecordInclusionProofResponse"},"V1RecordRequest":{"properties":{"pack":{"type":"string","enum":["law","defense","medicine","education","us-regulatory","eu-ai-act","ca-sb942","cn-ai-labelling","in-it-rules","kr-ai-framework","ai-provenance"],"title":"Pack","description":"Policy pack the completed act is recorded under.","examples":["law","us-regulatory"]},"system_id":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"System Id","description":"The system whose duty this act discharges. Supply it together with system_seq when one act per output must be distinguishable from the next: both are committed into payload_hash, so two genuinely distinct acts can no longer derive the same action_key and silently collapse into one record.","examples":["imagegen-eu-prod"]},"sequence_binding":{"type":"boolean","title":"Sequence Binding","description":"system_declared only: when true, subsequent records for this system must carry system_seq. Enforcement is switched on by the operator's own declaration rather than by Planisphere, so no existing integrator is broken by a deploy — and a record that violates the declaration becomes a detectable, sealed event.","default":false},"turn_records":{"type":"boolean","title":"Turn Records","description":"system_declared only: when true, this system records whole turns as conversation-crystal ticks, and Planisphere refuses its per-event tool_used, prompt_submitted and agent_response records (409, unmetered, counted apart from failures), so a hook left behind cannot double count. Sealed with the declaration; the declaration's recorded_at is the date the system switched.","default":false},"supersedes":{"anyOf":[{"type":"string","maxLength":180},{"type":"null"}],"title":"Supersedes","description":"system_declared only: action_key of the declaration this one replaces. The superseded declaration stays in the record chain."},"starts_from_action_key":{"anyOf":[{"type":"string","maxLength":180},{"type":"null"}],"title":"Starts From Action Key","description":"action_key of the record that started a statutory clock for this act — a takedown notice, for example. When the pack declares a deadline for this event type, the elapsed interval and whether it fell inside the window are computed server-side and sealed with the record."},"system_seq":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"System Seq","description":"Monotonic per-system sequence number for this act. Requires system_id. Gaps in the sequence are what later make an incomplete record set visible; without it, an omitted record leaves no trace.","examples":[10432]},"event_type":{"type":"string","maxLength":120,"minLength":1,"title":"Event Type","description":"Event type of the completed act. Event types registered on the pack for the record verb (e.g. the eu-ai-act and ca-sb942 duty vocabularies) are valid by default; any other event type is rejected 422 with the pack's registered record vocabulary unless allow_unregistered:true is set, in which case it seals flagged event_registered=false with a prominent unregistered_event notice. Gate-vocabulary event types whose contract only ever blocks are always rejected — a completed act cannot be attested across a hard-block boundary.","examples":["output_marked","latent_disclosure_embedded"]},"occurred_at":{"type":"string","format":"date-time","title":"Occurred At","description":"Caller clock (RFC 3339) for when the act occurred. This is the caller's own claim, committed into payload_hash; the seal's recorded_at is the server clock at seal time. Must not be in the future — a completed act cannot occur after its record is sealed.","examples":["2026-07-22T17:03:11Z"]},"source_payload":{"additionalProperties":{"type":"string"},"type":"object","title":"Source Payload","description":"Hash commitments for the recorded payload (e.g. content_sha256, manifest_sha256). Values must be digests — optionally prefixed with an algorithm label — never raw content. Planisphere stores hash commitments only — retain your payload to re-prove WHAT was recorded.","examples":[{"content_sha256":"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","manifest_sha256":"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"}]},"regime_refs":{"items":{"type":"string"},"type":"array","title":"Regime Refs","description":"Optional regime/authority anchors for the evidence record. When omitted for a registered record event, defaults to the pack's declared regimes (e.g. 'EU AI Act Art. 50')."},"allow_unregistered":{"type":"boolean","title":"Allow Unregistered","description":"Explicit opt-in to seal an event_type that is not registered on the pack for the record verb. Without it, unregistered event types are rejected 422 (listing the pack's registered record vocabulary). With it, the record seals flagged event_registered=false and carries a prominent unregistered_event notice in the response and stored packet metadata.","default":false},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Optional caller metadata. Committed into payload_hash. Only key names and a canonical hash are stored, except values for keys the pack declares retainable when the workspace has turned on metadata retention."},"tick":{"anyOf":[{"$ref":"#/components/schemas/CrystalTickHeader"},{"type":"null"}],"description":"crystal_tick only: the tick header — session and turn identity (committed as digests), who authorized the turn, the prompt's salted digest, the structural root, gate fields and the turn's readable facts."},"sub_events":{"anyOf":[{"items":{"$ref":"#/components/schemas/SubEventHeader"},"type":"array","maxItems":2048},{"type":"null"}],"title":"Sub Events","description":"crystal_tick only: the turn's steps in transcript order, each a labeled salted digest. They are leaves under source_payload.sub_event_root, which the server recomputes and refuses on a mismatch. Steps are not records and meter nothing; GET /v1/records/{action_key}/sub-events/{i} proves one alone."},"content":{"anyOf":[{"$ref":"#/components/schemas/CrystalContent"},{"type":"null"}],"description":"crystal_tick only: the turn's text, encrypted on the device per step (envelope version 2), with the turn key wrapped to the group's current public key. Planisphere holds no key that opens it."}},"type":"object","required":["pack","event_type","occurred_at"],"title":"V1RecordRequest","description":"Body for POST /v1/record (and each item of POST /v1/record/batch)."},"V1RecordResponse":{"properties":{"receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Id"},"receipt_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Url"},"receipt_original_root":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Original Root"},"object":{"type":"string","const":"record","title":"Object","default":"record"},"tenant":{"type":"string","title":"Tenant"},"pack":{"type":"string","enum":["law","defense","medicine","education","us-regulatory","eu-ai-act","ca-sb942","cn-ai-labelling","in-it-rules","kr-ai-framework","ai-provenance"],"title":"Pack"},"policy_pack":{"type":"string","title":"Policy Pack"},"event_type":{"type":"string","title":"Event Type"},"event_registered":{"type":"boolean","title":"Event Registered","description":"Whether the event type is registered on the pack FOR THE RECORD VERB. Registered record event types are valid by default. False for unregistered event types AND for gate-vocabulary event types (permission events recorded here were never gated or reviewed) — neither should be presented as pack-vocabulary completed-act claims."},"status":{"type":"string","const":"recorded","title":"Status","default":"recorded"},"workflow_stage":{"type":"string","const":"recorded","title":"Workflow Stage","default":"recorded"},"action_key":{"type":"string","title":"Action Key"},"source_key":{"type":"string","title":"Source Key"},"payload_hash":{"type":"string","title":"Payload Hash"},"system_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Id"},"system_seq":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"System Seq"},"retained_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Retained Metadata","description":"Declared statutory metadata values kept for this record. Present only for keys the pack marks retainable AND when the tenant has retention enabled at issuance. Removed values are absent. Certain identity keys are excluded, but a declared key does not guarantee that its value contains no personal information."},"metadata_erased":{"type":"boolean","title":"Metadata Erased","description":"Optional readable values were removed from live storage; signed commitments remain.","default":false},"metadata_erasure_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metadata Erasure Id","description":"Identifier of the committed metadata-removal audit operation, when present."},"redacted_metadata_keys":{"items":{"type":"string"},"type":"array","title":"Redacted Metadata Keys","description":"Metadata keys whose readable values are not retained, including values subsequently removed. Their signed commitments remain."},"deadline":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Deadline","description":"Elapsed interval against a statutory window, computed from this record and the one named by starts_from_action_key, and sealed with the record. Evidence that the operator's own account is internally consistent with the window — not observation of when the act occurred."},"policy_ref":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Policy Ref","description":"Which pack policy governed this record: pack id, pack version, and a hash over the policy's normative content. Answers 'which policy was in force when this was recorded?' — a pack NAME alone cannot."},"metadata_commitment_root":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metadata Commitment Root","description":"Merkle root over one commitment per metadata key, so a single retained value can be proven against the record on its own, and the key set cannot be edited after the fact."},"first_recorded":{"type":"boolean","title":"First Recorded","description":"False when this request matched a record already sealed under the same action_key rather than minting a new one. Two distinct acts that commit identical fields derive the same action_key and are indistinguishable to Planisphere; this flag is what makes that collapse visible instead of silent. Supply system_id and system_seq to keep distinct acts distinct.","default":true},"occurred_at":{"type":"string","title":"Occurred At","description":"Caller clock claim (normalized to UTC RFC 3339)."},"recorded_at":{"type":"string","title":"Recorded At","description":"Server clock at seal time (UTC RFC 3339) — committed into the signed attestation content, distinct from occurred_at."},"regime_refs":{"items":{"type":"string"},"type":"array","title":"Regime Refs","description":"Regime/authority anchors committed into payload_hash. Registered pack events default to the pack's declared regimes when the caller supplies none."},"source_payload_commitments":{"additionalProperties":{"type":"string"},"type":"object","title":"Source Payload Commitments"},"unregistered_event":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unregistered Event","description":"Prominent notice set when an unregistered event_type was sealed via allow_unregistered:true — the receipt is a caller-supplied claim, not a pack-vocabulary duty record. None for registered record events."},"evidence_packet":{"$ref":"#/components/schemas/EvidencePacketStub"},"verify_request":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Verify Request","description":"Ready-to-POST body for POST /v1/verify (alias: /evidence-packets/verify-seal). Raw-safe: hashes and seal fields only. The same fields POST to /evidence-packets/seal-bundle for the offline 4-file bundle."},"crystal":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Crystal","description":"crystal_tick only: the tick's place in the person's chain (seq, prev), its root and the server-derived root_changed, the step root and counts, and what text was stored (ciphertext steps; the plain prompt line only when the workspace opted in)."},"payload_retention":{"type":"string","title":"Payload Retention","default":"Planisphere stores hash commitments only — retain your payload to re-prove WHAT was recorded."},"raw_content_stored":{"type":"boolean","title":"Raw Content Stored","default":false},"claim_boundary":{"type":"string","title":"Claim Boundary","default":"Planisphere records that a completed act was attested and sealed. It does not certify compliance or verify that the act itself occurred as described."}},"type":"object","required":["tenant","pack","policy_pack","event_type","event_registered","action_key","source_key","payload_hash","occurred_at","recorded_at","evidence_packet"],"title":"V1RecordResponse"},"V1ReviewDecisionRequest":{"properties":{"action_key":{"type":"string","title":"Action Key"},"reviewer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewer","description":"Who decided. IGNORED for a signed-in person — the server names them from the session, because a receipt must not take the caller's word for who was acting. Required for an API key, which authenticates a caller and names no human; that value is recorded with reviewer_basis='caller_asserted' so the receipt says plainly it is the operator's own claim. Placeholder strings are refused.","examples":["partner-or-gc"]},"decision":{"type":"string","enum":["approved","rejected","escalated"],"title":"Decision"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","description":"Optional reviewer note accepted at the API edge. Planisphere stores only reason_present and reason_hash; do not send raw client, prompt, document, or privileged content."},"mirror_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mirror Version","description":"Optional law-grading mirror version. Supply with mirror_digest and mirror_grades to bind client-side categorical review grades to the receipt."},"mirror_digest":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mirror Digest","description":"Optional digest from GET /law/grading-mirror."},"mirror_grades":{"anyOf":[{"additionalProperties":{"type":"string","enum":["PASS","PARTIAL","FAIL","NA"]},"type":"object"},{"type":"null"}],"title":"Mirror Grades","description":"Optional categorical review grades produced client-side. Raw legal text is not accepted or stored here."},"pack":{"type":"string","enum":["law","defense","medicine","education","us-regulatory","ai-provenance"],"title":"Pack"}},"type":"object","required":["action_key","decision","pack"],"title":"V1ReviewDecisionRequest","description":"``ReviewDecisionRequest`` plus the ``pack`` selector read from the body.\n\nSubclassing keeps every existing field/validation identical, so the object\ncan be handed straight to the wrapped handlers, which expect a\n``ReviewDecisionRequest``."},"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"},"VerticalPackResponse":{"properties":{"packs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Packs"}},"type":"object","required":["packs"],"title":"VerticalPackResponse"},"VerticalProposedActionRequest":{"properties":{"tenant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant","description":"Optional tenant id assertion."},"surface":{"type":"string","title":"Surface","default":"generic","examples":["browser","servicenow","generic"]},"source_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Key"},"source_payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source Payload","description":"Optional source metadata. Manifest-backed vertical endpoints store only a stable hash of this payload, not the raw payload."},"action_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Type","description":"Optional pack action type. Defaults to the pack's first supported action."},"proposed_action":{"type":"string","title":"Proposed Action","description":"The action an AI system or workflow is about to take.","examples":["Share controlled technical details with an external vendor."]},"context":{"additionalProperties":true,"type":"object","title":"Context","description":"Vertical-specific context fields required by the selected pack."},"regime_refs":{"items":{"type":"string"},"type":"array","title":"Regime Refs","description":"Optional regime/authority anchors for the evidence packet."},"redacted_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redacted Text","description":"Optional transient text for policy checks. The endpoint records a hash and flags only; it does not persist the raw text."},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["proposed_action"],"title":"VerticalProposedActionRequest"},"WebhookDeliveryEnvelope":{"properties":{"id":{"type":"string","title":"Id","description":"Per-delivery event id (also in X-Planisphere-Id)."},"event":{"type":"string","title":"Event","description":"Event name.","examples":["record.sealed","receipt.anchored","verify.failed","meter.threshold"]},"created_at":{"type":"string","title":"Created At","description":"RFC-3339 emission time."},"data":{"additionalProperties":true,"type":"object","title":"Data","description":"Event-specific payload."}},"type":"object","required":["id","event","created_at","data"],"title":"WebhookDeliveryEnvelope","description":"The signed JSON body Planisphere POSTs to a tenant's webhook URL.\n\nDelivery headers carry the signature (``X-Planisphere-Signature: t=<ts>,v1=<hmac>``),\nthe event name, a per-delivery id, and the timestamp. Verify by recomputing\n``HMAC-SHA256(secret, \"{timestamp}.{id}.{raw_body}\")`` over the exact bytes\nreceived — do not re-serialize the JSON."},"WorkflowMapResponse":{"properties":{"workflows":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Workflows"},"integration_evidence":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Integration Evidence"}},"type":"object","required":["workflows","integration_evidence"],"title":"WorkflowMapResponse"},"WorkspaceAlert":{"properties":{"id":{"type":"string","title":"Id"},"kind":{"type":"string","enum":["revoked_key","sandbox_cap","rejected","rate_limited"],"title":"Kind"},"subject":{"type":"string","title":"Subject","default":""},"count":{"type":"integer","title":"Count","description":"Refusals recorded in the last 7 days (written at most every 30 s per server)."},"first_seen":{"type":"string","title":"First Seen"},"last_seen":{"type":"string","title":"Last Seen"},"detail":{"additionalProperties":true,"type":"object","title":"Detail"},"what":{"type":"string","title":"What"},"fix":{"type":"string","title":"Fix"}},"type":"object","required":["id","kind","count","first_seen","last_seen","what","fix"],"title":"WorkspaceAlert","description":"Records a connected system sent that Planisphere refused and the system never showed (workspace_alerts)."},"Wrap":{"properties":{"recipient_kind":{"type":"string","enum":["device","team"],"title":"Recipient Kind"},"recipient_key_id":{"type":"string","pattern":"^[0-9a-f]{32}$","title":"Recipient Key Id"},"wrapped_key":{"type":"string","title":"Wrapped Key"}},"type":"object","required":["recipient_kind","recipient_key_id","wrapped_key"],"title":"Wrap"},"ProblemDetails":{"type":"object","required":["type","title","status","detail","instance"],"properties":{"type":{"type":"string","format":"uri-reference","description":"Stable problem type URI. about:blank is used for generic HTTP errors."},"title":{"type":"string","description":"Short human-readable summary for this problem type."},"status":{"type":"integer","description":"HTTP status code generated by the origin server.","minimum":100,"maximum":599},"detail":{"description":"Existing Planisphere error detail. String details are RFC 9457-native; object and array details are preserved for backward-compatible API clients.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"array","items":{}}]},"instance":{"type":"string","description":"Request path that produced this problem response."},"request_id":{"type":"string","description":"Tenant-safe request correlation id mirrored from X-Planisphere-Request-ID."},"errors":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Validation error details when request parsing fails."}},"additionalProperties":true}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"},"PlanisphereKey":{"type":"apiKey","in":"header","name":"X-Planisphere-Key"},"PlanisphereAccountSession":{"type":"apiKey","in":"cookie","name":"ps_account_session"}}}}