{"components":{"schemas":{"Problem":{"properties":{"error":{"type":"string"},"error_code":{"type":"string"},"ok":{"type":"boolean"},"problem":{"properties":{"detail":{"type":"string"},"instance":{"type":"string"},"request_id":{"type":["string","null"]},"status":{"type":"integer"},"title":{"type":"string"},"type":{"type":"string"}},"required":["type","title","status","detail"],"type":"object"}},"required":["ok","error","problem"],"type":"object"}},"securitySchemes":{"bearerAuth":{"bearerFormat":"API token","scheme":"bearer","type":"http"}}},"info":{"description":"Versioned OpenAPI publication for ReturnMyShit v1 endpoints.","summary":"Owner, operations, and mobile parity APIs.","title":"ReturnMyShit API","version":"v1"},"openapi":"3.1.0","paths":{"/api/v1/auth/sessions":{"get":{"operationId":"listAuthSessions","responses":{"200":{"description":"Session list"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"}},"summary":"List auth sessions"}},"/api/v1/auth/sessions/risk-signals":{"get":{"operationId":"listAuthSessionRiskSignals","responses":{"200":{"description":"Risk signal payload"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"}},"summary":"Session risk/anomaly signals"}},"/api/v1/auth/sessions/{session_id}/revoke":{"post":{"operationId":"revokeAuthSession","parameters":[{"in":"path","name":"session_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Revocation accepted"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Session not found"}},"summary":"Revoke one auth session"}},"/api/v1/capabilities":{"get":{"operationId":"capabilityDiscovery","responses":{"200":{"description":"Capability payload"}},"summary":"Capability discovery by client profile"}},"/api/v1/capabilities/changefeed":{"get":{"operationId":"capabilityChangefeed","responses":{"200":{"description":"Capability changefeed payload"}},"summary":"Capability contract changefeed since version"}},"/api/v1/capabilities/changefeed/rss":{"get":{"operationId":"capabilityChangefeedRss","responses":{"200":{"description":"Capability changefeed RSS"}},"summary":"Capability contract changefeed RSS feed"}},"/api/v1/capabilities/compatibility":{"get":{"operationId":"capabilityCompatibilityMatrix","responses":{"200":{"description":"Capability compatibility matrix payload"}},"summary":"Capability compatibility matrix by profile/client version"}},"/api/v1/capabilities/endpoint-alias-detector":{"get":{"operationId":"capabilityEndpointAliasDetector","responses":{"200":{"description":"Capabilities endpoint alias detector payload"}},"summary":"Detect deprecated capabilities endpoint aliases"}},"/api/v1/capabilities/endpoint-alias-detector/suppressions":{"delete":{"operationId":"clearCapabilityEndpointAliasDetectorSuppressions","responses":{"200":{"description":"Capabilities endpoint alias suppression clear payload"}},"summary":"Clear endpoint alias detector suppressions"},"get":{"operationId":"capabilityEndpointAliasDetectorSuppressions","responses":{"200":{"description":"Capabilities endpoint alias suppression list payload"}},"summary":"List endpoint alias detector suppressions (active or include_expired)"},"post":{"operationId":"upsertCapabilityEndpointAliasDetectorSuppressions","responses":{"200":{"description":"Capabilities endpoint alias suppression upsert payload"}},"summary":"Create endpoint alias detector suppressions with expiry metadata"}},"/api/v1/capabilities/endpoint-alias-detector/suppressions/ack":{"post":{"operationId":"capabilityEndpointAliasDetectorSuppressionsAck","responses":{"200":{"description":"Capabilities endpoint alias suppression ack payload"}},"summary":"Acknowledge endpoint alias suppression digest rows"}},"/api/v1/capabilities/endpoint-alias-detector/suppressions/digest":{"get":{"operationId":"capabilityEndpointAliasDetectorSuppressionsDigest","responses":{"200":{"description":"Capabilities endpoint alias suppression digest payload"}},"summary":"List endpoint alias suppressions expiring soon with ack state"}},"/api/v1/capabilities/endpoint-alias-detector/suppressions/history":{"get":{"operationId":"capabilityEndpointAliasDetectorSuppressionsHistory","responses":{"200":{"description":"Capabilities endpoint alias suppression history payload"}},"summary":"Export endpoint alias suppression history (csv|md)"}},"/api/v1/capabilities/openapi-parity-audit":{"get":{"operationId":"capabilityOpenapiParityAudit","responses":{"200":{"description":"Capabilities/OpenAPI parity audit payload"}},"summary":"Audit capabilities endpoint map against published OpenAPI paths"}},"/api/v1/capabilities/openapi-parity-audit/baselines":{"get":{"operationId":"capabilityOpenapiParityBaselines","responses":{"200":{"description":"Capabilities/OpenAPI parity baseline list payload"}},"summary":"List capabilities/OpenAPI parity baselines"},"post":{"operationId":"capabilityOpenapiParityBaselinePin","responses":{"200":{"description":"Capabilities/OpenAPI parity baseline pin payload"}},"summary":"Pin capabilities/OpenAPI parity baseline for profile"}},"/api/v1/capabilities/openapi-parity-audit/baselines/drift":{"get":{"operationId":"capabilityOpenapiParityBaselineDrift","responses":{"200":{"description":"Capabilities/OpenAPI parity baseline drift payload"}},"summary":"Compare current parity audit against pinned baseline"}},"/api/v1/capabilities/openapi-parity-audit/history":{"get":{"operationId":"capabilityOpenapiParityAuditHistory","responses":{"200":{"description":"Capabilities/OpenAPI parity trend payload"}},"summary":"Capabilities/OpenAPI parity trend history"}},"/api/v1/capabilities/openapi-parity-audit/history/export":{"get":{"operationId":"capabilityOpenapiParityAuditHistoryExport","responses":{"200":{"description":"Capabilities/OpenAPI parity trend export payload"}},"summary":"Export capabilities/OpenAPI parity trend history (csv|md) with daily severity histogram"}},"/api/v1/capabilities/openapi-parity-audit/severity-policy":{"get":{"operationId":"capabilityOpenapiParitySeverityPolicy","responses":{"200":{"description":"Capabilities/OpenAPI parity severity policy payload"}},"summary":"Read capabilities/OpenAPI parity severity policy"},"post":{"operationId":"updateCapabilityOpenapiParitySeverityPolicy","responses":{"200":{"description":"Capabilities/OpenAPI parity severity policy update payload"}},"summary":"Update capabilities/OpenAPI parity severity policy"}},"/api/v1/capabilities/openapi-parity-audit/severity-policy/simulate":{"get":{"operationId":"capabilityOpenapiParitySeverityPolicySimulate","responses":{"200":{"description":"Capabilities/OpenAPI parity severity policy simulation payload"}},"summary":"Simulate parity severity outcomes for threshold policies over history windows"},"post":{"operationId":"capabilityOpenapiParitySeverityPolicySimulatePost","responses":{"200":{"description":"Capabilities/OpenAPI parity severity policy simulation payload"}},"summary":"Simulate parity severity outcomes for multiple threshold scenarios"}},"/api/v1/contracts/snapshots/ios-bootstrap":{"get":{"operationId":"iosContractSnapshotFixture","responses":{"200":{"description":"Contract snapshot fixture payload"}},"summary":"Generate iOS/API contract snapshot fixture payload for SDK tests"}},"/api/v1/contracts/snapshots/ios-bootstrap/compare":{"get":{"operationId":"iosContractSnapshotCompare","parameters":[{"in":"query","name":"format","schema":{"enum":["json","md"],"type":"string"}}],"responses":{"200":{"description":"Contract snapshot compare payload"}},"summary":"Compare iOS bootstrap contract snapshot fixture against published checksum"}},"/api/v1/contracts/snapshots/ios-bootstrap/publish":{"get":{"operationId":"iosContractSnapshotPublishRegistry","responses":{"200":{"description":"Contract snapshot publish registry payload"}},"summary":"List published iOS contract snapshot registry (latest|pinned)"},"post":{"operationId":"publishIosContractSnapshotFixture","responses":{"200":{"description":"Contract snapshot publish payload"}},"summary":"Publish iOS contract snapshot fixture to registry"}},"/api/v1/contracts/snapshots/ios-bootstrap/registry-retention":{"get":{"operationId":"iosContractSnapshotRegistryRetentionPreview","responses":{"200":{"description":"Contract snapshot registry retention preview payload"}},"summary":"Preview iOS contract snapshot registry retention policy (keep_latest_n)"},"post":{"operationId":"iosContractSnapshotRegistryRetentionApply","responses":{"200":{"description":"Contract snapshot registry retention apply payload"}},"summary":"Apply iOS contract snapshot registry retention policy (dry_run|apply)"}},"/api/v1/contracts/snapshots/ios-bootstrap/validate":{"post":{"operationId":"validateIosContractSnapshotFixture","parameters":[{"in":"query","name":"policy_profile","schema":{"enum":["strict","compat"],"type":"string"}},{"in":"query","name":"format","schema":{"enum":["json","csv","md"],"type":"string"}}],"responses":{"200":{"description":"Contract snapshot validation payload"}},"summary":"Validate iOS contract snapshot fixture schema and checksum"}},"/api/v1/contracts/snapshots/ios-bootstrap/validate/policy-profiles":{"get":{"operationId":"iosContractSnapshotValidatorPolicyProfiles","responses":{"200":{"description":"Contract snapshot validator policy profile payload"}},"summary":"List iOS contract snapshot validator policy profiles"}},"/api/v1/contracts/snapshots/ios-bootstrap/validate/schema":{"get":{"operationId":"iosContractSnapshotValidatorSchema","parameters":[{"in":"query","name":"format","schema":{"enum":["json","schema"],"type":"string"}}],"responses":{"200":{"description":"Contract snapshot validator schema payload"}},"summary":"Export iOS contract snapshot validator JSON schema"}},"/api/v1/dashboard/workspaces":{"get":{"operationId":"listDashboardWorkspaces","responses":{"200":{"description":"Workspace rows"}},"summary":"List dashboard workspaces"},"post":{"operationId":"upsertDashboardWorkspace","responses":{"200":{"description":"Workspace saved"}},"summary":"Create or update dashboard workspace"}},"/api/v1/events/stream":{"get":{"operationId":"eventStream","responses":{"200":{"description":"Event envelope"}},"summary":"Typed event stream envelope"}},"/api/v1/growth/late-return-heatmap/anomalies/assignment":{"post":{"operationId":"growthHeatmapAnomalyAssignment","responses":{"200":{"description":"Anomaly assignment payload"}},"summary":"Assign/claim a heatmap anomaly operator lane"}},"/api/v1/growth/late-return-heatmap/anomalies/push-bridge":{"post":{"operationId":"growthHeatmapAnomalyPushBridge","responses":{"200":{"description":"Anomaly push bridge payload"}},"summary":"Bridge heatmap anomalies into mobile push inbox"}},"/api/v1/growth/late-return-heatmap/anomalies/sla-calendar-token":{"post":{"operationId":"issueGrowthHeatmapSlaCalendarToken","responses":{"200":{"description":"Heatmap SLA calendar token payload"}},"summary":"Issue signed heatmap SLA calendar feed token"}},"/api/v1/growth/late-return-heatmap/anomalies/sla-calendar-tokens":{"delete":{"operationId":"revokeGrowthHeatmapSlaCalendarToken","responses":{"200":{"description":"Heatmap SLA calendar token revoke payload"}},"summary":"Revoke heatmap SLA calendar feed token"},"get":{"operationId":"listGrowthHeatmapSlaCalendarTokens","responses":{"200":{"description":"Heatmap SLA calendar token list payload"}},"summary":"List heatmap SLA calendar feed token lifecycle rows"}},"/api/v1/growth/late-return-heatmap/anomalies/sla-digest":{"get":{"operationId":"growthHeatmapAnomalySlaDigest","parameters":[{"in":"query","name":"format","schema":{"enum":["json","ics"],"type":"string"}}],"responses":{"200":{"description":"Anomaly SLA digest payload"}},"summary":"Heatmap anomaly SLA + escalation digest"}},"/api/v1/growth/late-return-heatmap/anomalies/state":{"post":{"operationId":"growthHeatmapAnomalyState","responses":{"200":{"description":"Anomaly state payload"}},"summary":"Set heatmap anomaly operator state (ack/snooze/clear)"}},"/api/v1/growth/late-return-heatmap/borrowers/{borrower_user_id}":{"get":{"operationId":"growthHeatmapBorrowerDrilldown","parameters":[{"in":"path","name":"borrower_user_id","required":true,"schema":{"minimum":1,"type":"integer"}},{"in":"query","name":"compare_mode","schema":{"enum":["single","triple"],"type":"string"}},{"in":"query","name":"compare_previous","schema":{"type":"boolean"}},{"in":"query","name":"seasonal_days","schema":{"maximum":3650,"minimum":30,"type":"integer"}},{"in":"query","name":"seasonal_offset_days","schema":{"maximum":365,"minimum":-365,"type":"integer"}}],"responses":{"200":{"description":"Borrower drilldown payload"}},"summary":"Borrower late-return drilldown"}},"/api/v1/growth/referral-credits/backtest-cross-model-validator":{"get":{"operationId":"referralBacktestCrossModelValidator","responses":{"200":{"description":"Referral backtest cross-model validator payload"}},"summary":"Cross-model referral backtest divergence validator"}},"/api/v1/growth/referral-credits/backtest-cross-model-validator/drilldown":{"get":{"operationId":"referralBacktestCrossModelValidatorDrilldown","responses":{"200":{"description":"Referral backtest cross-model drilldown payload"}},"summary":"Invite-level referral cross-model divergence drilldown"}},"/api/v1/growth/referral-credits/backtest-cross-model-validator/drilldown/bulk":{"post":{"operationId":"referralBacktestCrossModelValidatorDrilldownBulk","responses":{"200":{"description":"Referral backtest cross-model drilldown bulk payload"}},"summary":"Bulk referral cross-model divergence drilldown"}},"/api/v1/growth/referral-credits/backtest-signed-export":{"get":{"operationId":"referralBacktestSignedExport","parameters":[{"in":"query","name":"format","schema":{"enum":["json","csv"],"type":"string"}}],"responses":{"200":{"description":"Referral backtest signed export payload"}},"summary":"Referral backtest signed export artifact"}},"/api/v1/growth/referral-credits/backtest-signed-export/signing-keys":{"get":{"operationId":"referralBacktestSignedExportSigningKeys","responses":{"200":{"description":"Referral backtest signed-export signing-key inventory payload"}},"summary":"Referral backtest signed-export signature key inventory"}},"/api/v1/growth/referral-credits/backtest-signed-export/signing-keys/lifecycle":{"post":{"operationId":"referralBacktestSignedExportSigningKeysLifecycle","responses":{"200":{"description":"Referral backtest signing-key lifecycle payload"}},"summary":"Manage referral backtest signing-key lifecycle"}},"/api/v1/growth/referral-credits/backtest-signed-export/signing-keys/policy":{"get":{"operationId":"referralBacktestSignedExportSigningPolicy","responses":{"200":{"description":"Referral backtest signing policy payload"}},"summary":"Read referral backtest signing policy"},"post":{"operationId":"referralBacktestSignedExportSigningPolicyUpdate","responses":{"200":{"description":"Referral backtest signing policy update payload"}},"summary":"Update referral backtest signing policy"}},"/api/v1/growth/referral-credits/backtest-signed-export/signing-keys/policy/history":{"get":{"operationId":"referralBacktestSignedExportSigningPolicyHistory","parameters":[{"in":"query","name":"limit","schema":{"maximum":500,"minimum":1,"type":"integer"}},{"in":"query","name":"format","schema":{"enum":["json","csv","md"],"type":"string"}}],"responses":{"200":{"description":"Referral signed-export signature policy history payload"}},"summary":"List referral signed-export signature policy history"}},"/api/v1/growth/referral-credits/backtest-signed-export/signing-keys/rotation-digest":{"get":{"operationId":"referralBacktestSignedExportSigningKeyRotationDigest","responses":{"200":{"description":"Referral signing key rotation digest payload"}},"summary":"Referral signing key rotation digest and expiring notice"}},"/api/v1/growth/referral-credits/backtest-signed-export/verify":{"post":{"operationId":"referralBacktestSignedExportVerify","responses":{"200":{"description":"Referral backtest signed export verification payload"}},"summary":"Verify referral backtest signed export artifact"}},"/api/v1/growth/referral-credits/simulation-templates":{"delete":{"operationId":"deleteReferralSimulationTemplate","responses":{"200":{"description":"Referral simulation template delete payload"}},"summary":"Delete referral simulation template"},"get":{"operationId":"referralSimulationTemplates","responses":{"200":{"description":"Referral simulation template list payload"}},"summary":"List referral simulation templates"},"post":{"operationId":"upsertReferralSimulationTemplate","responses":{"200":{"description":"Referral simulation template upsert payload"}},"summary":"Upsert referral simulation template"}},"/api/v1/growth/referral-credits/simulation-templates/history":{"get":{"operationId":"referralSimulationTemplateHistory","responses":{"200":{"description":"Referral simulation template history payload"}},"summary":"List referral simulation template version history and compare snapshots"}},"/api/v1/growth/referral-credits/simulation-templates/review":{"post":{"operationId":"reviewReferralSimulationTemplate","responses":{"200":{"description":"Referral simulation template workflow payload"}},"summary":"Apply dual-approval workflow action for referral simulation template"}},"/api/v1/growth/referral-credits/simulation-templates/rollback":{"post":{"operationId":"rollbackReferralSimulationTemplate","responses":{"200":{"description":"Referral simulation template rollback payload"}},"summary":"Rollback referral simulation template to a prior version_id"}},"/api/v1/items":{"get":{"operationId":"listItems","parameters":[{"in":"query","name":"pagination_mode","schema":{"enum":["page","cursor"],"type":"string"}},{"in":"query","name":"cursor","schema":{"minimum":0,"type":"integer"}},{"in":"query","name":"per_page","schema":{"maximum":200,"minimum":1,"type":"integer"}},{"in":"query","name":"q","schema":{"type":"string"}}],"responses":{"200":{"description":"Items response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"}},"summary":"List owner inventory"}},"/api/v1/items/{item_id}/social-export/bundle-verify":{"post":{"operationId":"socialExportBundleVerify","parameters":[{"in":"path","name":"item_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Social-export bundle verification payload"}},"summary":"Verify uploaded social-export bundle artifact"}},"/api/v1/items/{item_id}/social-export/ingest":{"post":{"operationId":"socialExportBundleIngest","parameters":[{"in":"path","name":"item_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Social-export bundle ingest payload"}},"summary":"Ingest and canonical-parse uploaded social-export bundle"}},"/api/v1/items/{item_id}/social-export/ingest/chunk":{"post":{"operationId":"socialExportBundleChunkIngest","parameters":[{"in":"path","name":"item_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Social-export chunk ingest payload"}},"summary":"Upload one social-export bundle chunk with resume metadata"}},"/api/v1/items/{item_id}/social-export/ingest/finalize":{"post":{"operationId":"socialExportBundleChunkFinalize","parameters":[{"in":"path","name":"item_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Social-export chunk finalize payload"}},"summary":"Finalize chunked social-export ingest with checksum verification"}},"/api/v1/items/{item_id}/social-export/verify":{"post":{"operationId":"socialExportVerify","parameters":[{"in":"path","name":"item_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Social-export verification payload"}},"summary":"Verify detached social-export signature payload"}},"/api/v1/items/{item_id}/story-share/manifest-verify":{"post":{"operationId":"storyGraphManifestVerify","parameters":[{"in":"path","name":"item_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Story-graph manifest verification payload"}},"summary":"Verify story-graph render manifest signature + checksum"}},"/api/v1/loans/{loan_id}/external-share-links/auto-expire-sweep":{"post":{"operationId":"externalShareLinkAutoExpireSweep","parameters":[{"in":"path","name":"loan_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Auto-expire sweep payload"}},"summary":"Run external-link auto-expire sweep"}},"/api/v1/loans/{loan_id}/external-share-links/digest":{"get":{"operationId":"externalShareLinkDigest","parameters":[{"in":"path","name":"loan_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Lifecycle digest payload"}},"summary":"External link lifecycle digest"}},"/api/v1/loans/{loan_id}/external-share-links/digest/baselines":{"get":{"operationId":"externalShareLinkDigestBaselines","parameters":[{"in":"path","name":"loan_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Digest baseline list payload"}},"summary":"List external-link digest baselines"},"post":{"operationId":"createExternalShareLinkDigestBaseline","parameters":[{"in":"path","name":"loan_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Digest baseline snapshot payload"}},"summary":"Create external-link digest baseline snapshot"}},"/api/v1/loans/{loan_id}/external-share-links/digest/baselines/drift-alert":{"get":{"operationId":"externalShareLinkDigestBaselineDriftAlert","responses":{"200":{"description":"Digest baseline drift alert payload"}},"summary":"Detect digest baseline drift against current lifecycle digest"}},"/api/v1/loans/{loan_id}/external-share-links/digest/baselines/drift-alert/actions":{"post":{"operationId":"externalShareLinkDigestBaselineDriftAlertAction","responses":{"200":{"description":"Digest baseline drift workflow action payload"}},"summary":"Apply digest baseline drift workflow action (ack|snooze|clear)"}},"/api/v1/loans/{loan_id}/external-share-links/digest/baselines/drift-alert/push-bridge":{"post":{"operationId":"externalShareLinkDigestBaselineDriftAlertPushBridge","responses":{"200":{"description":"Digest baseline drift push bridge payload"}},"summary":"Bridge critical digest baseline drift alerts to owner push inbox"}},"/api/v1/loans/{loan_id}/external-share-links/digest/baselines/drift-alert/ticket-bridge":{"post":{"operationId":"externalShareLinkDigestBaselineDriftAlertTicketBridge","responses":{"200":{"description":"Digest baseline drift ticket bridge payload"}},"summary":"Bridge critical digest baseline drift alerts into ticket workflow payloads"}},"/api/v1/loans/{loan_id}/external-share-links/digest/baselines/pin":{"post":{"operationId":"pinExternalShareLinkDigestBaseline","parameters":[{"in":"path","name":"loan_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Digest baseline pin payload"}},"summary":"Pin or unpin digest baseline with note metadata"}},"/api/v1/loans/{loan_id}/external-share-links/digest/baselines/retention":{"get":{"operationId":"previewExternalShareLinkDigestBaselineRetention","responses":{"200":{"description":"Digest baseline retention preview payload"}},"summary":"Preview digest baseline retention/archive candidates"},"post":{"operationId":"applyExternalShareLinkDigestBaselineRetention","responses":{"200":{"description":"Digest baseline retention apply payload"}},"summary":"Apply digest baseline retention/archive policy"}},"/api/v1/loans/{loan_id}/external-share-links/digest/compare":{"get":{"operationId":"externalShareLinkDigestCompare","parameters":[{"in":"path","name":"loan_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Lifecycle digest compare payload"}},"summary":"Compare current external-link digest against prior signature window"}},"/api/v1/loans/{loan_id}/external-share-links/inventory":{"get":{"operationId":"externalShareLinkInventory","parameters":[{"in":"path","name":"loan_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Nonce inventory payload"}},"summary":"External link nonce inventory"}},"/api/v1/loans/{loan_id}/external-share-links/webhook-ledger":{"get":{"operationId":"externalShareLinkWebhookLedger","parameters":[{"in":"path","name":"loan_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Webhook delivery ledger payload"}},"summary":"External-link webhook delivery ledger export"}},"/api/v1/loans/{loan_id}/external-share-links/webhook-ledger/dead-letter-triage":{"get":{"operationId":"externalShareLinkWebhookDeadLetterTriage","responses":{"200":{"description":"Webhook dead-letter triage payload"}},"summary":"List webhook dead-letter triage board by taxonomy/owner/age"}},"/api/v1/loans/{loan_id}/external-share-links/webhook-ledger/retry":{"post":{"operationId":"externalShareLinkWebhookRetry","parameters":[{"in":"path","name":"loan_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Webhook ledger retry payload"}},"summary":"Replay failed external-link webhook ledger rows"}},"/api/v1/loans/{loan_id}/external-share-links/webhook-ledger/retry-keys":{"get":{"operationId":"externalShareLinkWebhookRetryKeySearch","responses":{"200":{"description":"Webhook retry-key search payload"}},"summary":"Search webhook retry-key lineage"}},"/api/v1/marketplace/contracts":{"get":{"operationId":"marketplaceContracts","responses":{"200":{"description":"Marketplace contract payload"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"}},"summary":"Marketplace contract metadata"}},"/api/v1/marketplace/schema":{"get":{"operationId":"marketplaceSchema","responses":{"200":{"description":"Marketplace schema payload"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"}},"summary":"Marketplace schema overview"}},"/api/v1/messages/attachment-mime-overrides":{"delete":{"operationId":"deleteAttachmentMimeOverride","responses":{"200":{"description":"MIME override delete payload"}},"summary":"Delete attachment MIME override policy"},"get":{"operationId":"listAttachmentMimeOverrides","responses":{"200":{"description":"MIME override payload"}},"summary":"List attachment MIME override policies"},"post":{"operationId":"upsertAttachmentMimeOverride","responses":{"200":{"description":"MIME override upsert payload"}},"summary":"Upsert attachment MIME override policy"}},"/api/v1/messages/attachment-mime-overrides/diff":{"get":{"operationId":"attachmentMimeOverrideDiff","responses":{"200":{"description":"MIME override diff payload"}},"summary":"Diff attachment MIME override effective policy before/after"}},"/api/v1/messages/attachment-mime-overrides/explain":{"get":{"operationId":"attachmentMimeOverrideExplain","responses":{"200":{"description":"MIME policy explain payload"}},"summary":"Explain effective attachment MIME policy merge precedence"}},"/api/v1/messages/translation-glossary-profiles":{"delete":{"operationId":"deleteTranslationGlossaryProfile","responses":{"200":{"description":"Glossary profile delete payload"}},"summary":"Delete translation glossary profile"},"get":{"operationId":"translationGlossaryProfiles","responses":{"200":{"description":"Glossary profile payload"}},"summary":"Translation glossary profiles"},"post":{"operationId":"upsertTranslationGlossaryProfile","responses":{"200":{"description":"Glossary profile upsert payload"}},"summary":"Upsert translation glossary profile"}},"/api/v1/messages/translation-glossary-profiles/export":{"get":{"operationId":"exportTranslationGlossaryProfiles","responses":{"200":{"description":"Glossary export payload"}},"summary":"Export translation glossary profiles"}},"/api/v1/messages/translation-glossary-profiles/import":{"post":{"operationId":"importTranslationGlossaryProfiles","responses":{"200":{"description":"Glossary import payload"}},"summary":"Import translation glossary profiles"}},"/api/v1/messages/translation-glossary-profiles/snapshots":{"get":{"operationId":"translationGlossarySnapshots","responses":{"200":{"description":"Glossary snapshot list payload"}},"summary":"List translation glossary snapshots"},"post":{"operationId":"createTranslationGlossarySnapshot","responses":{"200":{"description":"Glossary snapshot create payload"}},"summary":"Create translation glossary snapshot"}},"/api/v1/messages/translation-glossary-profiles/snapshots/diff":{"get":{"operationId":"translationGlossarySnapshotDiff","responses":{"200":{"description":"Glossary snapshot diff payload"}},"summary":"Diff two translation glossary snapshots"}},"/api/v1/messages/translation-glossary-profiles/snapshots/rollback":{"post":{"operationId":"rollbackTranslationGlossarySnapshot","responses":{"200":{"description":"Glossary snapshot rollback payload"}},"summary":"Rollback translation glossary profiles from snapshot"}},"/api/v1/messages/translation-provider-health":{"get":{"operationId":"translationProviderHealth","responses":{"200":{"description":"Translation provider health payload"}},"summary":"Translation provider health telemetry"}},"/api/v1/messages/translation-provider-health/anomaly-suppressions":{"delete":{"operationId":"deleteTranslationProviderAnomalySuppression","responses":{"200":{"description":"Translation anomaly suppression clear payload"}},"summary":"Clear translation provider anomaly suppression window"},"get":{"operationId":"translationProviderAnomalySuppressions","responses":{"200":{"description":"Translation anomaly suppression payload"}},"summary":"List translation provider anomaly suppression windows"},"post":{"operationId":"setTranslationProviderAnomalySuppression","responses":{"200":{"description":"Translation anomaly suppression set payload"}},"summary":"Create/update translation provider anomaly suppression window"}},"/api/v1/messages/translation-provider-health/anomaly-suppressions/auto-ack-policy":{"get":{"operationId":"translationProviderAnomalySuppressionAutoAckPolicy","responses":{"200":{"description":"Translation suppression auto-ack policy payload"}},"summary":"Read translation suppression auto-ack policy"},"post":{"operationId":"updateTranslationProviderAnomalySuppressionAutoAckPolicy","responses":{"200":{"description":"Translation suppression auto-ack policy update payload"}},"summary":"Update translation suppression auto-ack policy"}},"/api/v1/messages/translation-provider-health/anomaly-suppressions/auto-renew-policy":{"get":{"operationId":"translationProviderAnomalySuppressionAutoRenewPolicy","responses":{"200":{"description":"Translation suppression auto-renew policy payload"}},"summary":"Read translation suppression auto-renew policy"},"post":{"operationId":"updateTranslationProviderAnomalySuppressionAutoRenewPolicy","responses":{"200":{"description":"Translation suppression auto-renew policy update payload"}},"summary":"Update translation suppression auto-renew policy"}},"/api/v1/messages/translation-provider-health/anomaly-suppressions/auto-renew-scheduler-digest":{"get":{"operationId":"translationProviderAnomalySuppressionAutoRenewSchedulerDigest","responses":{"200":{"description":"Translation suppression auto-renew scheduler digest payload"}},"summary":"Translation suppression auto-renew scheduler digest"}},"/api/v1/messages/translation-provider-health/anomaly-suppressions/auto-renew-scheduler-run":{"post":{"operationId":"translationProviderAnomalySuppressionAutoRenewSchedulerRun","responses":{"200":{"description":"Translation suppression auto-renew run payload"}},"summary":"Execute translation suppression auto-renew scheduler"}},"/api/v1/messages/translation-provider-health/anomaly-suppressions/expiring-digest-delivery":{"get":{"operationId":"translationProviderAnomalySuppressionExpiringDigestDelivery","responses":{"200":{"description":"Translation suppression expiring digest delivery payload"}},"summary":"Preview translation suppression expiring digest delivery lanes"},"post":{"operationId":"dispatchTranslationProviderAnomalySuppressionExpiringDigestDelivery","responses":{"200":{"description":"Translation suppression expiring digest dispatch payload"}},"summary":"Dispatch translation suppression expiring digest delivery lanes"}},"/api/v1/messages/translation-provider-health/anomaly-suppressions/expiring-digest-delivery/ack":{"post":{"operationId":"ackTranslationProviderAnomalySuppressionExpiringDigestDelivery","responses":{"200":{"description":"Translation suppression expiring digest acknowledgment payload"}},"summary":"Acknowledge translation suppression expiring digest delivery receipt"}},"/api/v1/messages/translation-provider-health/anomaly-suppressions/expiring-digest-delivery/ack-sla":{"get":{"operationId":"translationProviderAnomalySuppressionExpiringDigestAckSla","responses":{"200":{"description":"Translation expiring digest ack SLA payload"}},"summary":"Translation expiring digest delivery ack SLA digest"}},"/api/v1/messages/translation-provider-health/anomaly-suppressions/expiring-digest-delivery/ack-sla/webhook-preview":{"get":{"operationId":"translationProviderAnomalySuppressionExpiringDigestAckSlaWebhookPreview","responses":{"200":{"description":"Translation expiring digest ack-SLA webhook preview payload"}},"summary":"Preview translation expiring digest ack-SLA webhook payload"}},"/api/v1/messages/translation-provider-health/anomaly-suppressions/expiring-digest-delivery/ack-sla/webhook-receipts":{"get":{"operationId":"translationProviderAnomalySuppressionExpiringDigestAckSlaWebhookReceipts","responses":{"200":{"description":"Translation expiring digest ack-SLA webhook receipts payload"}},"summary":"List translation expiring digest ack-SLA webhook delivery receipts"},"post":{"operationId":"translationProviderAnomalySuppressionExpiringDigestAckSlaWebhookReceiptsPost","responses":{"200":{"description":"Translation expiring digest ack-SLA webhook receipt payload"}},"summary":"Record translation expiring digest ack-SLA webhook delivery receipt"}},"/api/v1/messages/translation-provider-health/circuit-breaker-overrides":{"delete":{"operationId":"deleteTranslationProviderCircuitBreakerOverride","responses":{"200":{"description":"Translation circuit-breaker override clear payload"}},"summary":"Clear translation provider circuit-breaker override"},"get":{"operationId":"translationProviderCircuitBreakerOverrides","responses":{"200":{"description":"Translation circuit-breaker override payload"}},"summary":"List translation provider circuit-breaker override state"},"post":{"operationId":"setTranslationProviderCircuitBreakerOverride","responses":{"200":{"description":"Translation circuit-breaker override set payload"}},"summary":"Set translation provider circuit-breaker override"}},"/api/v1/messages/translation-provider-health/cohort-performance":{"get":{"operationId":"translationProviderRolloutCohortPerformance","responses":{"200":{"description":"Translation rollout cohort performance payload"}},"summary":"Translation provider rollout cohort performance lane"}},"/api/v1/messages/translation-provider-health/cohort-performance/anomaly-detector":{"get":{"operationId":"translationProviderRolloutCohortAnomalyDetector","responses":{"200":{"description":"Translation rollout cohort anomaly payload"}},"summary":"Translation rollout cohort anomaly detector"}},"/api/v1/messages/translation-provider-health/cohort-performance/timeseries":{"get":{"operationId":"translationProviderRolloutCohortPerformanceTimeseries","parameters":[{"in":"query","name":"lane","schema":{"type":"string"}},{"in":"query","name":"days","schema":{"maximum":3650,"minimum":1,"type":"integer"}},{"in":"query","name":"format","schema":{"enum":["csv","md"],"type":"string"}}],"responses":{"200":{"description":"Translation rollout cohort performance timeseries payload"}},"summary":"Translation provider rollout cohort performance timeseries export"}},"/api/v1/missing/{report_id}/workflow":{"get":{"operationId":"getMissingReportWorkflow","parameters":[{"in":"path","name":"report_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Workflow payload"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Admin required"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Missing report not found"}},"summary":"Read missing-report responder workflow"},"post":{"operationId":"updateMissingReportWorkflow","parameters":[{"in":"path","name":"report_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Updated workflow payload"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Validation error"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Admin required"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Missing report not found"}},"summary":"Update missing-report responder workflow"}},"/api/v1/mobile/attachment-policy-capabilities":{"get":{"operationId":"mobileAttachmentPolicyCapabilities","responses":{"200":{"description":"Attachment capability payload"}},"summary":"Mobile attachment policy capability bootstrap"}},"/api/v1/mobile/camera-quality-check":{"post":{"operationId":"mobileCameraQualityCheck","responses":{"200":{"description":"Quality evaluation payload"}},"summary":"Evaluate mobile camera frame quality hints before upload"}},"/api/v1/mobile/field-audit/checkin":{"post":{"operationId":"mobileFieldAuditCheckin","responses":{"200":{"description":"Field-audit check-in recorded"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"}},"summary":"Submit field-audit check-in from mobile clients"}},"/api/v1/mobile/growth/offline-cache-contract":{"get":{"operationId":"mobileGrowthOfflineCacheContract","responses":{"200":{"description":"Offline cache contract payload"}},"summary":"Mobile growth offline-cache manifest contract"}},"/api/v1/mobile/growth/offline-cache-delta":{"get":{"operationId":"mobileGrowthOfflineCacheDelta","parameters":[{"in":"query","name":"cache_key","schema":{"type":"string"}},{"in":"query","name":"client_cache_key","schema":{"type":"string"}}],"responses":{"200":{"description":"Offline cache delta payload"}},"summary":"Mobile growth offline-cache delta-sync payload"}},"/api/v1/mobile/growth/push-channel-policy":{"delete":{"operationId":"deleteMobileGrowthPushChannelPolicy","responses":{"200":{"description":"Push channel policy delete payload"}},"summary":"Delete mobile push channel quiet-hours override"},"get":{"operationId":"mobileGrowthPushChannelPolicy","responses":{"200":{"description":"Push channel policy payload"}},"summary":"List per-channel mobile push quiet-hours overrides"},"post":{"operationId":"upsertMobileGrowthPushChannelPolicy","responses":{"200":{"description":"Push channel policy upsert payload"}},"summary":"Upsert mobile push channel quiet-hours override"}},"/api/v1/mobile/growth/push-summary":{"get":{"operationId":"mobileGrowthPushSummary","parameters":[{"in":"query","name":"locale","schema":{"enum":["en","es"],"type":"string"}},{"in":"query","name":"channel","schema":{"enum":["push","email","in_app"],"type":"string"}}],"responses":{"200":{"description":"Push summary payload"}},"summary":"Mobile growth push summary payload"}},"/api/v1/mobile/ios/app-clip-contract":{"get":{"operationId":"iosAppClipContract","responses":{"200":{"description":"App Clip contract payload"}},"summary":"iOS App Clip fallback contract"}},"/api/v1/mobile/ios/biometric-stepup-contract":{"get":{"operationId":"iosBiometricStepupContract","responses":{"200":{"description":"Biometric step-up contract payload"}},"summary":"iOS biometric step-up contract"}},"/api/v1/mobile/ios/biometric-stepup/challenge":{"post":{"operationId":"iosBiometricStepupChallenge","responses":{"200":{"description":"Biometric challenge payload"}},"summary":"Issue iOS biometric step-up challenge"}},"/api/v1/mobile/ios/bootstrap-bundle":{"get":{"operationId":"iosBootstrapBundle","parameters":[{"in":"query","name":"sections","schema":{"type":"string"}},{"in":"query","name":"app_version","schema":{"type":"string"}},{"in":"query","name":"channel","schema":{"type":"string"}},{"in":"query","name":"days","schema":{"maximum":3650,"minimum":7,"type":"integer"}}],"responses":{"200":{"description":"iOS bootstrap bundle payload"}},"summary":"iOS bootstrap bundle (partial sections supported: compatibility/changefeed/ops)"}},"/api/v1/mobile/ios/bootstrap-bundle/delta":{"get":{"operationId":"iosBootstrapBundleDelta","responses":{"200":{"description":"iOS bootstrap delta payload"}},"summary":"iOS bootstrap bundle delta lane by since_checksum"}},"/api/v1/mobile/ios/bootstrap-bundle/delta/baseline":{"get":{"operationId":"iosBootstrapBundleDeltaBaseline","responses":{"200":{"description":"iOS bootstrap delta baseline payload"}},"summary":"iOS bootstrap delta baseline-by-checksum diagnostics"}},"/api/v1/mobile/ios/bootstrap-bundle/delta/change-summary":{"get":{"operationId":"iosBootstrapBundleDeltaChangeSummary","responses":{"200":{"description":"iOS bootstrap delta change-summary payload"}},"summary":"iOS bootstrap delta change-summary lane (added|removed|changed field map)"}},"/api/v1/mobile/ios/bootstrap-bundle/section-digests":{"get":{"operationId":"iosBootstrapBundleSectionDigests","responses":{"200":{"description":"iOS bootstrap section digest manifest payload"}},"summary":"iOS bootstrap section-level digest manifest"}},"/api/v1/mobile/ios/bootstrap-bundle/signed":{"get":{"operationId":"iosBootstrapBundleSigned","responses":{"200":{"description":"Signed iOS bootstrap bundle artifact payload"}},"summary":"Signed iOS bootstrap bundle artifact"}},"/api/v1/mobile/ios/bootstrap-bundle/signed/verify":{"post":{"operationId":"iosBootstrapBundleSignedVerify","responses":{"200":{"description":"Bootstrap signed artifact verification payload"}},"summary":"Verify iOS bootstrap bundle signed artifact checksum/signature"}},"/api/v1/mobile/ios/bootstrap-bundle/signed/verify-batch":{"post":{"operationId":"iosBootstrapBundleSignedVerifyBatch","parameters":[{"in":"query","name":"format","schema":{"enum":["json","csv","md"],"type":"string"}}],"responses":{"200":{"description":"Batch verification payload"}},"summary":"Batch-verify signed iOS bootstrap artifacts"}},"/api/v1/mobile/ios/bootstrap-bundle/signed/verify-batch/jobs":{"post":{"operationId":"iosBootstrapBundleSignedVerifyBatchJob","responses":{"200":{"description":"iOS bootstrap verify-batch job payload"}},"summary":"Enqueue async iOS bootstrap verify-batch job"}},"/api/v1/mobile/ios/bootstrap-bundle/signed/verify-batch/jobs/{job_token}":{"get":{"operationId":"iosBootstrapBundleSignedVerifyBatchJobStatus","responses":{"200":{"description":"iOS bootstrap verify-batch job status payload"}},"summary":"Get async iOS bootstrap verify-batch job status"}},"/api/v1/mobile/ios/bootstrap-bundle/signed/verify-batch/jobs/{job_token}/cancel":{"post":{"operationId":"iosBootstrapBundleSignedVerifyBatchJobCancel","responses":{"200":{"description":"iOS bootstrap verify-batch job cancel payload"}},"summary":"Cancel async iOS bootstrap verify-batch job"}},"/api/v1/mobile/ios/bootstrap-bundle/signed/verify-batch/jobs/{job_token}/download":{"get":{"operationId":"iosBootstrapBundleSignedVerifyBatchJobDownload","responses":{"200":{"description":"iOS bootstrap verify-batch job artifact"}},"summary":"Download async iOS bootstrap verify-batch job artifact"}},"/api/v1/mobile/ios/bootstrap-bundle/signed/verify-batch/jobs/{job_token}/retry":{"post":{"operationId":"iosBootstrapBundleSignedVerifyBatchJobRetry","responses":{"200":{"description":"iOS bootstrap verify-batch job retry payload"}},"summary":"Retry async iOS bootstrap verify-batch job"}},"/api/v1/mobile/ios/bootstrap-bundle/signing-keys":{"get":{"operationId":"iosBootstrapBundleSigningKeys","responses":{"200":{"description":"iOS bootstrap signing key inventory payload"}},"summary":"iOS bootstrap signing key inventory (active|next|retired)"}},"/api/v1/mobile/ios/bootstrap-bundle/signing-keys/lifecycle":{"post":{"operationId":"iosBootstrapBundleSigningKeysLifecycle","responses":{"200":{"description":"iOS bootstrap signing-key lifecycle payload"}},"summary":"Submit/confirm iOS bootstrap signing-key lifecycle actions (schedule_rotate|retire)"}},"/api/v1/mobile/ios/growth-contract":{"get":{"operationId":"iosGrowthContract","responses":{"200":{"description":"Growth contract payload"}},"summary":"iOS growth analytics contract"}},"/api/v1/mobile/ios/growth-contract/compatibility":{"get":{"operationId":"iosGrowthContractCompatibility","responses":{"200":{"description":"Growth compatibility payload"}},"summary":"iOS growth contract compatibility matrix"}},"/api/v1/mobile/ios/growth-contract/rollout-policy":{"get":{"operationId":"iosGrowthContractRolloutPolicy","responses":{"200":{"description":"Growth rollout policy payload"}},"summary":"iOS growth rollout feature-gate policy"}},"/api/v1/mobile/ios/growth-contract/signed-schema":{"get":{"operationId":"iosGrowthContractSignedSchema","responses":{"200":{"description":"Signed schema payload"}},"summary":"Signed JSON schema for iOS growth contract codegen verification"}},"/api/v1/mobile/ios/growth-contract/signed-schema/verify":{"post":{"operationId":"iosGrowthContractSignedSchemaVerify","responses":{"200":{"description":"Signed schema verification payload"}},"summary":"Verify iOS signed growth schema checksum and signature"}},"/api/v1/mobile/ios/growth-contract/test-vectors":{"get":{"operationId":"iosGrowthContractTestVectors","responses":{"200":{"description":"Growth contract test vectors payload"}},"summary":"iOS/mobile growth contract test vectors for SDK CI"}},"/api/v1/mobile/ios/growth-contract/versions":{"get":{"operationId":"iosGrowthContractVersions","responses":{"200":{"description":"Growth contract version history payload"}},"summary":"iOS growth contract version history"}},"/api/v1/mobile/ios/live-activities-contract":{"get":{"operationId":"iosLiveActivitiesContract","responses":{"200":{"description":"Live Activities contract payload"}},"summary":"iOS Live Activities contract"}},"/api/v1/mobile/ios/quick-return-contract":{"get":{"operationId":"iosQuickReturnContract","parameters":[{"in":"query","name":"loan_id","schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Quick-return contract payload"}},"summary":"iOS quick-return flow contract"}},"/api/v1/mobile/ios/safe-mode-policy":{"get":{"operationId":"iosSafeModePolicy","responses":{"200":{"description":"Safe-mode policy payload"}},"summary":"iOS shared-device safe-mode policy"}},"/api/v1/mobile/ios/secure-attachment-staging-contract":{"get":{"operationId":"iosAttachmentStagingContract","responses":{"200":{"description":"Attachment staging contract payload"}},"summary":"iOS secure attachment staging contract"}},"/api/v1/mobile/ios/widget-contract":{"get":{"operationId":"iosWidgetContract","responses":{"200":{"description":"Widget contract payload"}},"summary":"iOS widget contract"}},"/api/v1/mobile/offline-conflicts/{operation_uuid}/resolve":{"post":{"operationId":"mobileOfflineConflictResolve","parameters":[{"in":"path","name":"operation_uuid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Offline conflict resolved"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Operation not found"}},"summary":"Resolve a mobile offline conflict operation"}},"/api/v1/mobile/offline-queue":{"get":{"operationId":"listMobileOfflineQueue","responses":{"200":{"description":"Offline queue list"}},"summary":"List mobile offline queue operations"},"post":{"operationId":"upsertMobileOfflineQueueOperation","responses":{"200":{"description":"Offline queue operation saved"}},"summary":"Create or upsert a mobile offline queue operation"}},"/api/v1/mobile/offline-queue/{operation_uuid}/action":{"post":{"operationId":"mobileOfflineQueueAction","parameters":[{"in":"path","name":"operation_uuid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Offline queue action applied"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Operation not found"}},"summary":"Apply action to a mobile offline queue operation"}},"/api/v1/mobile/push-inbox":{"get":{"operationId":"mobilePushInbox","parameters":[{"in":"query","name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"in":"query","name":"cursor","schema":{"minimum":0,"type":"integer"}}],"responses":{"200":{"description":"Push inbox feed payload"}},"summary":"List mobile push inbox events"}},"/api/v1/mobile/push-inbox/{event_id}/ack":{"post":{"operationId":"mobilePushInboxAck","parameters":[{"in":"path","name":"event_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Push inbox event acknowledged"}},"summary":"Acknowledge mobile push inbox event"}},"/api/v1/mobile/push-inbox/{event_id}/read":{"post":{"operationId":"mobilePushInboxMarkRead","parameters":[{"in":"path","name":"event_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Push inbox event read state updated"}},"summary":"Mark mobile push inbox event as read"}},"/api/v1/mutations/bulk":{"post":{"operationId":"bulkMutations","responses":{"200":{"description":"Mutation results"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Idempotency conflict"}},"summary":"Execute idempotent bulk mutations"}},"/api/v1/ops/correlation-traces/{trace_id}":{"get":{"operationId":"opsCorrelationTraceLookup","parameters":[{"in":"path","name":"trace_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Ops correlation trace lookup payload"}},"summary":"Lookup linked cross-lane artifacts by ops correlation trace ID"}},"/api/v1/ops/correlation-traces/{trace_id}/bundle":{"get":{"operationId":"opsCorrelationTraceBundle","parameters":[{"in":"path","name":"trace_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"days","schema":{"maximum":3650,"minimum":7,"type":"integer"}}],"responses":{"200":{"description":"Ops correlation trace bundle ZIP"}},"summary":"Download cross-lane export bundle for an ops correlation trace ID"}},"/api/v1/ops/correlation-traces/{trace_id}/bundle/jobs":{"post":{"operationId":"opsCorrelationTraceBundleAsyncEnqueue","responses":{"200":{"description":"Ops correlation trace async bundle job payload"}},"summary":"Enqueue async cross-lane bundle export job for a correlation trace"}},"/api/v1/ops/correlation-traces/{trace_id}/bundle/jobs/{job_token}":{"get":{"operationId":"opsCorrelationTraceBundleAsyncStatus","responses":{"200":{"description":"Ops correlation trace async bundle job status payload"}},"summary":"Get async cross-lane bundle job status"}},"/api/v1/ops/correlation-traces/{trace_id}/bundle/jobs/{job_token}/download":{"get":{"operationId":"opsCorrelationTraceBundleAsyncDownload","responses":{"200":{"description":"Ops correlation trace async bundle ZIP"}},"summary":"Download async cross-lane bundle job artifact"}},"/api/v1/ops/correlation-traces/{trace_id}/graph":{"get":{"operationId":"opsCorrelationTraceGraph","parameters":[{"in":"path","name":"trace_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"in":"query","name":"format","schema":{"enum":["json","graphml","svg"],"type":"string"}},{"in":"query","name":"lanes","schema":{"type":"string"}}],"responses":{"200":{"description":"Ops correlation trace lineage graph payload"}},"summary":"Return lineage DAG across referral/timeline/drift/retry artifacts for a correlation trace"}},"/api/v1/ops/cross-surface-digest":{"get":{"operationId":"opsCrossSurfaceDigest","responses":{"200":{"description":"Cross-surface operations digest payload"}},"summary":"Cross-surface operations digest (baseline/SLA/retry/translation/policy)"}},"/api/v1/ops/cross-surface-digest/subscriptions":{"delete":{"operationId":"deleteOpsCrossSurfaceDigestSubscription","responses":{"200":{"description":"Digest subscription delete payload"}},"summary":"Delete a cross-surface digest alert subscription"},"get":{"operationId":"opsCrossSurfaceDigestSubscriptions","responses":{"200":{"description":"Digest subscription payload"}},"summary":"List cross-surface digest alert subscriptions"},"post":{"operationId":"upsertOpsCrossSurfaceDigestSubscription","responses":{"200":{"description":"Digest subscription upsert payload"}},"summary":"Create or update a cross-surface digest alert subscription"}},"/api/v1/ops/cross-surface-digest/subscriptions/test-send":{"post":{"operationId":"opsCrossSurfaceDigestSubscriptionTestSend","responses":{"200":{"description":"Digest subscription test-send payload"}},"summary":"Run cross-surface digest subscription test-send simulation"}},"/api/v1/ops/error-fingerprints":{"get":{"operationId":"listOpsErrorFingerprints","responses":{"200":{"description":"Fingerprint feed"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Admin required"}},"summary":"List grouped error fingerprints"}},"/api/v1/ops/error-fingerprints/suppressions":{"get":{"operationId":"listErrorFingerprintSuppressions","responses":{"200":{"description":"Suppression rows"}},"summary":"List suppression rules"},"post":{"operationId":"upsertErrorFingerprintSuppression","responses":{"200":{"description":"Suppression rule persisted"}},"summary":"Create/update suppression rule"}},"/api/v1/ops/external-baseline-retention-scheduler":{"get":{"operationId":"opsExternalBaselineRetentionScheduler","responses":{"200":{"description":"External baseline retention scheduler payload"}},"summary":"Get external baseline retention scheduler configuration and run history"},"post":{"operationId":"upsertOrRunOpsExternalBaselineRetentionScheduler","responses":{"200":{"description":"External baseline retention scheduler result payload"}},"summary":"Upsert or run external baseline retention scheduler"}},"/api/v1/ops/unlock-queue/staffing-recommender":{"get":{"operationId":"unlockQueueStaffingRecommender","responses":{"200":{"description":"Staffing recommendation payload"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Admin required"}},"summary":"Unlock queue staffing recommendation"}},"/api/v1/rate-limit/introspect":{"get":{"operationId":"rateLimitIntrospect","responses":{"200":{"description":"Rate-limit payload"}},"summary":"Inspect current token rate-limit usage"}},"/api/v1/search/universal":{"get":{"operationId":"universalSearch","responses":{"200":{"description":"Search results"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"}},"summary":"Unified cross-object search"}},"/api/v1/sync/checkpoint/ack":{"post":{"operationId":"ackSyncCheckpoint","responses":{"200":{"description":"Checkpoint acknowledged"}},"summary":"Acknowledge sync checkpoint"}},"/api/v1/sync/checkpoint/create":{"post":{"operationId":"createSyncCheckpoint","responses":{"200":{"description":"Checkpoint created"}},"summary":"Create sync checkpoint"}},"/api/v1/sync/checkpoint/diff":{"post":{"operationId":"diffSyncCheckpoint","responses":{"200":{"description":"Checkpoint diff"}},"summary":"Diff from checkpoint"}},"/api/v1/uploads/signed-url":{"post":{"operationId":"issueSignedUploadUrl","responses":{"200":{"description":"Upload URL contract"}},"summary":"Issue signed upload URL contracts"}},"/api/v1/users/{user_id}/loan-timeline":{"get":{"operationId":"apiUserLoanTimeline","parameters":[{"in":"path","name":"user_id","required":true,"schema":{"minimum":1,"type":"integer"}},{"in":"query","name":"format","schema":{"enum":["json","csv","ics","md","leaderboard_csv","leaderboard_md"],"type":"string"}}],"responses":{"200":{"description":"Timeline payload"}},"summary":"User loan timeline (token)"}},"/api/v1/users/{user_id}/loan-timeline/chronic-waivers":{"delete":{"operationId":"deleteTimelineChronicWaiver","responses":{"200":{"description":"Timeline chronic waiver delete payload"}},"summary":"Delete chronic tardiness waiver"},"get":{"operationId":"timelineChronicWaivers","responses":{"200":{"description":"Timeline chronic waiver payload"}},"summary":"List chronic tardiness waiver receipts"},"post":{"operationId":"upsertTimelineChronicWaiver","responses":{"200":{"description":"Timeline chronic waiver upsert payload"}},"summary":"Upsert chronic tardiness waiver"}},"/api/v1/users/{user_id}/loan-timeline/chronic-waivers/notifier-actions":{"get":{"operationId":"timelineChronicWaiverNotifierActionHistory","responses":{"200":{"description":"Timeline waiver notifier history payload"}},"summary":"List timeline waiver notifier action history"},"post":{"operationId":"timelineChronicWaiverNotifierAction","responses":{"200":{"description":"Timeline waiver notifier action payload"}},"summary":"Apply timeline waiver notifier action (send_now|mute|ack)"}},"/api/v1/users/{user_id}/loan-timeline/chronic-waivers/notifier-actions/escalation-simulator":{"get":{"operationId":"timelineChronicWaiverNotifierEscalationSimulator","responses":{"200":{"description":"Timeline waiver notifier escalation simulator payload"}},"summary":"Preview notifier escalation outcomes with unavailable channels and simulated deferral counts"},"post":{"operationId":"timelineChronicWaiverNotifierEscalationSimulatorPost","responses":{"200":{"description":"Timeline waiver notifier escalation simulator payload"}},"summary":"Run notifier escalation simulation with request payload overrides"}},"/api/v1/users/{user_id}/loan-timeline/chronic-waivers/notifier-actions/test-send":{"get":{"operationId":"timelineChronicWaiverNotifierTestSendPreview","responses":{"200":{"description":"Timeline waiver notifier test-send preview payload"}},"summary":"Preview timeline waiver notifier test-send recipients and reasons"},"post":{"operationId":"timelineChronicWaiverNotifierTestSend","responses":{"200":{"description":"Timeline waiver notifier test-send payload"}},"summary":"Run timeline waiver notifier test-send simulation"}},"/api/v1/users/{user_id}/loan-timeline/chronic-waivers/notifier-digest-preview":{"get":{"operationId":"timelineChronicWaiverNotifierDigestPreview","responses":{"200":{"description":"Timeline waiver notifier digest preview payload"}},"summary":"Preview timeline waiver notifier digest artifact (dedupe keys + manifest)"},"post":{"operationId":"timelineChronicWaiverNotifierDigestPreviewPost","responses":{"200":{"description":"Timeline waiver notifier digest preview payload"}},"summary":"Build timeline waiver notifier digest artifact using request payload"}},"/api/v1/users/{user_id}/loan-timeline/chronic-waivers/notifier-digest-preview/compare":{"get":{"operationId":"timelineChronicWaiverNotifierDigestPreviewCompare","parameters":[{"in":"query","name":"format","schema":{"enum":["json","csv","md","bundle"],"type":"string"}}],"responses":{"200":{"description":"Timeline waiver notifier digest preview compare payload"}},"summary":"Compare current timeline waiver notifier digest preview against previous bundle key"},"post":{"operationId":"timelineChronicWaiverNotifierDigestPreviewComparePost","parameters":[{"in":"query","name":"format","schema":{"enum":["json","csv","md","bundle"],"type":"string"}}],"responses":{"200":{"description":"Timeline waiver notifier digest preview compare payload"}},"summary":"Compare timeline waiver notifier digest preview using request payload"}},"/api/v1/users/{user_id}/loan-timeline/chronic-waivers/notifier-digest-preview/compare/baselines":{"get":{"operationId":"timelineChronicWaiverNotifierDigestCompareBaselines","responses":{"200":{"description":"Timeline waiver notifier digest compare baseline list payload"}},"summary":"List/pin timeline waiver notifier digest-compare baselines"},"post":{"operationId":"timelineChronicWaiverNotifierDigestCompareBaselinePin","responses":{"200":{"description":"Timeline waiver notifier digest compare baseline pin payload"}},"summary":"Pin timeline waiver notifier digest-compare baseline"}},"/api/v1/users/{user_id}/loan-timeline/chronic-waivers/notifier-digest-preview/compare/threshold-alerts":{"get":{"operationId":"timelineChronicWaiverNotifierDigestCompareThresholdAlerts","responses":{"200":{"description":"Timeline waiver notifier digest compare threshold alerts payload"}},"summary":"Preview digest-compare threshold alerts for timeline notifier"},"post":{"operationId":"timelineChronicWaiverNotifierDigestCompareThresholdAlertsPost","responses":{"200":{"description":"Timeline waiver notifier digest compare threshold alerts payload"}},"summary":"Evaluate digest-compare threshold alerts with payload overrides"}},"/api/v1/users/{user_id}/loan-timeline/chronic-waivers/notifier-digest-preview/compare/threshold-alerts/webhook-preview":{"get":{"operationId":"timelineChronicWaiverNotifierDigestCompareThresholdAlertsWebhookPreview","responses":{"200":{"description":"Timeline waiver digest-compare threshold alert webhook preview payload"}},"summary":"Preview timeline waiver digest-compare threshold alert webhook payload"},"post":{"operationId":"timelineChronicWaiverNotifierDigestCompareThresholdAlertsWebhookPreviewPost","responses":{"200":{"description":"Timeline waiver digest-compare threshold alert webhook preview payload"}},"summary":"Preview timeline waiver digest-compare threshold alert webhook payload (POST)"}},"/api/v1/users/{user_id}/loan-timeline/chronic-waivers/notifier-digest-preview/compare/verify-bundle":{"post":{"operationId":"timelineChronicWaiverNotifierDigestPreviewCompareVerifyBundle","responses":{"200":{"description":"Timeline waiver notifier digest compare bundle verification payload"}},"summary":"Verify timeline waiver notifier digest compare bundle signature"}},"/api/v1/users/{user_id}/loan-timeline/chronic-waivers/notifier-preferences":{"get":{"operationId":"timelineChronicWaiverNotifierPreferences","responses":{"200":{"description":"Timeline waiver notifier preferences payload"}},"summary":"Get timeline waiver notifier channel preferences"},"post":{"operationId":"setTimelineChronicWaiverNotifierPreferences","responses":{"200":{"description":"Timeline waiver notifier preferences update payload"}},"summary":"Set timeline waiver notifier channel preferences"}},"/api/v1/users/{user_id}/loan-timeline/chronic-waivers/notifier-preferences/holiday-policy":{"get":{"operationId":"timelineChronicWaiverNotifierHolidayPolicyExport","responses":{"200":{"description":"Timeline notifier holiday policy export payload"}},"summary":"Export timeline notifier holiday quiet-hours policy as JSON"},"post":{"operationId":"timelineChronicWaiverNotifierHolidayPolicyImport","responses":{"200":{"description":"Timeline notifier holiday policy import payload"}},"summary":"Import timeline notifier holiday quiet-hours policy (merge|replace)"}},"/api/v1/users/{user_id}/loan-timeline/leaderboard-fairness-profile":{"get":{"operationId":"timelineLeaderboardFairnessProfile","responses":{"200":{"description":"Timeline leaderboard fairness profile payload"}},"summary":"Get persisted timeline leaderboard fairness profile"},"post":{"operationId":"setTimelineLeaderboardFairnessProfile","responses":{"200":{"description":"Timeline leaderboard fairness profile update payload"}},"summary":"Set timeline leaderboard fairness profile override"}}},"security":[{"bearerAuth":[]}],"servers":[{"url":"https://borrowmyshit.org"}],"x-rms-api-version":"v1","x-rms-generated-at":"2026-05-05T15:41:25.081082+00:00"}
