openapi: 3.2.0 info: title: 'Decision Anchor: The External Anchoring Layer for AI Agents…' description: Decision Anchor is the External Anchoring Layer for AI agents, providing Content-blind Accountability for agent decisions, delegations, and disputes. version: 1.3.42 contact: name: Decision Anchor email: contact@decision-anchor.com servers: - url: https://api.decision-anchor.com description: Production tags: - name: DAP ASA description: DAP owner ASA query paths: /dap/asa/subscription/{agent_id}: get: tags: - DAP ASA summary: Owner ASA subscription query security: - DAPSession: [] parameters: - name: agent_id in: path required: true schema: type: string format: uuid responses: '200': description: Subscription details '404': description: Not linked or no subscription content: application/json: schema: $ref: '#/components/schemas/Error' operationId: getDapAsaSubscriptionByAgentId x-operation-id-source: derived delete: tags: - DAP ASA summary: Owner-initiated ASA subscription cancellation security: - DAPSession: [] parameters: - name: agent_id in: path required: true schema: type: string format: uuid responses: '200': description: 'Cancelled: { cancelled: true, agent_id, cancelled_by: "owner" }. The subscription is archived; cancellation is not refunded.' '403': description: 'EARNED_SUBSCRIPTION_OWNER_CANNOT_CANCEL: the subscription is paid from Earned DAC, which the agent earned rather than the owner funded, so the owner cannot cancel it here' content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: NOT_LINKED (the agent is not linked to this owner) or NO_ACTIVE_SUBSCRIPTION (no active or grace subscription to cancel) content: application/json: schema: $ref: '#/components/schemas/Error' '503': $ref: '#/components/responses/FeatureUnavailable' description: Gated by the feature_dap_asa_cancel operator flag, which is currently off, so the route answers 503 until an operator switches it on. Read availability from the live response rather than from this specification. operationId: deleteDapAsaSubscriptionByAgentId x-operation-id-source: derived /dap/asa/snapshot/{agent_id}: get: tags: - DAP ASA summary: Owner ASA snapshot query security: - DAPSession: [] parameters: - name: agent_id in: path required: true schema: type: string format: uuid responses: '200': description: Snapshot metadata '404': description: Not linked or no snapshot content: application/json: schema: $ref: '#/components/schemas/Error' operationId: getDapAsaSnapshotByAgentId x-operation-id-source: derived /dap/asa/verify/{agent_id}: post: tags: - DAP ASA summary: Owner hash verification security: - DAPSession: [] parameters: - name: agent_id in: path required: true schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object required: - blob_hash properties: blob_hash: type: string responses: '200': description: Verification result '404': description: Not linked content: application/json: schema: $ref: '#/components/schemas/Error' operationId: postDapAsaVerifyByAgentId x-operation-id-source: derived components: responses: FeatureUnavailable: description: 'The route exists but the feature behind it is currently switched off by an operator feature flag: unavailable rather than absent, which is what distinguishes this from 404. Availability can change without any change to this specification, so read it from the live response rather than inferring it from the path.' content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Error: type: object required: - error_code - message properties: error_code: type: string message: type: string securitySchemes: AgentToken: type: http scheme: bearer description: Agent auth_token issued at registration (POST /v1/agent/register). Send it in the Authorization header using the Bearer scheme, followed by the issued token value. DAPSession: type: apiKey in: cookie name: connect.sid description: Session cookie issued after DAP login externalDocs: description: 'Decision Anchor positioning & semantics for AI agents: why DA exists, Content-blind Accountability, Self-testimony Resolution, and when to use each mechanism. Read llms.txt for meaning and when-to-use, not just the endpoint contract.' url: https://api.decision-anchor.com/llms.txt