{"openapi":"3.1.0","info":{"title":"AiPSEO Public API","description":"Public API for AiPSEO QR Agent resources. Authenticate with the X-API-Key header. Optional client X-Request-ID values are accepted when safe; every response returns the effective X-Request-ID. PUT /v1/qr/{short_id}/paywall is a documented runtime exception without Idempotency-Key, If-Match-Version, or mutation-audit coverage.","version":"1.0.0"},"paths":{"/v1/capabilities":{"get":{"tags":["public-api"],"summary":"Get Capabilities","description":"Describe the stable owner control-plane surface available to this key.","operationId":"get_capabilities_v1_capabilities_get","parameters":[{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapabilitiesResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":[]}},"/v1/qr":{"post":{"tags":["public-api"],"summary":"Create Qr Code","description":"Create a new QR code via API.\n\nOptional ``is_active`` defaults to ``True`` for backward compatibility.\nWhen ``False``, the QR is inactive in its first committed state.","operationId":"create_qr_code_v1_qr_post","parameters":[{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Optional idempotency key for supported mutations. Accepted values match [A-Za-z0-9._:-]{1,128}. Exact replays return Idempotency-Replayed: true; fingerprint conflicts return 409 IDEMPOTENCY_CONFLICT; in-progress claims return 409 IDEMPOTENCY_IN_PROGRESS with Retry-After.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRCodeCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRCodeResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"Idempotency-Replayed":{"$ref":"#/components/headers/Idempotency-Replayed"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"409":{"description":"Idempotency conflict, in-progress claim, or resource conflict.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["qr:write"]},"get":{"tags":["public-api"],"summary":"List Qr Codes","description":"List the owner's active QR codes.","operationId":"list_qr_codes_v1_qr_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/QRCodeResponse"},"title":"Response List Qr Codes V1 Qr Get"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["qr:read"]}},"/v1/qr/by-external-reference/{external_reference}":{"get":{"tags":["public-api"],"summary":"Get Qr By External Reference","description":"Reconcile one owned QR by its safe external reference.","operationId":"get_qr_by_external_reference_v1_qr_by_external_reference__external_reference__get","parameters":[{"name":"external_reference","in":"path","required":true,"schema":{"type":"string","title":"External Reference"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRCodeResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["qr:read"]}},"/v1/qr/by-external-reference/{external_reference}/public-voice-readiness":{"get":{"tags":["public-api"],"summary":"Get Public Voice Readiness By External Reference","description":"Read-only public Property Voice readiness for one owned QR.\n\nResolves the QR by opaque external reference, evaluates fresh binding and\nsigned context readiness in memory, and returns only sanitized\nclassifications. Never creates a session, recorder, Gemini connection, or\noutcome event, and never mutates the database.","operationId":"get_public_voice_readiness_by_external_reference_v1_qr_by_external_reference__external_reference__public_voice_readiness_get","parameters":[{"name":"external_reference","in":"path","required":true,"schema":{"type":"string","title":"External Reference"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicVoiceReadinessResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["qr:read","bindings:read"]}},"/v1/qr/{short_id}":{"get":{"tags":["public-api"],"summary":"Get Qr Code","description":"Get details for one active owned QR code.","operationId":"get_qr_code_v1_qr__short_id__get","parameters":[{"name":"short_id","in":"path","required":true,"schema":{"type":"string","title":"Short Id"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRCodeResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["qr:read"]},"patch":{"tags":["public-api"],"summary":"Update Qr Code","description":"Update an owned QR code.","operationId":"update_qr_code_v1_qr__short_id__patch","parameters":[{"name":"short_id","in":"path","required":true,"schema":{"type":"string","title":"Short Id"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}},{"name":"If-Match-Version","in":"header","required":true,"description":"Required optimistic-concurrency token. Must equal the current resource_version or binding_version. Missing values return 428 RESOURCE_VERSION_REQUIRED; stale values return 409 RESOURCE_VERSION_CONFLICT.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRCodeUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRCodeResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"409":{"description":"Resource version conflict or other resource-state conflict.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"428":{"description":"If-Match-Version is required for this mutation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["qr:write"]},"delete":{"tags":["public-api"],"summary":"Delete Qr Code","description":"Soft-delete an owned QR code.","operationId":"delete_qr_code_v1_qr__short_id__delete","parameters":[{"name":"short_id","in":"path","required":true,"schema":{"type":"string","title":"Short Id"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}},{"name":"If-Match-Version","in":"header","required":true,"description":"Required optimistic-concurrency token. Must equal the current resource_version or binding_version. Missing values return 428 RESOURCE_VERSION_REQUIRED; stale values return 409 RESOURCE_VERSION_CONFLICT.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRDeactivateResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"409":{"description":"Resource version conflict or other resource-state conflict.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"428":{"description":"If-Match-Version is required for this mutation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["qr:write"]}},"/v1/qr/{short_id}/paywall":{"put":{"tags":["public-api"],"summary":"Update Qr Paywall","description":"Update paywall configuration for an owned QR code.","operationId":"update_qr_paywall_v1_qr__short_id__paywall_put","parameters":[{"name":"short_id","in":"path","required":true,"schema":{"type":"string","title":"Short Id"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaywallConfigUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaywallConfigResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["qr:write"],"x-paywall-mutation-exception":{"requires_if_match_version":false,"supports_idempotency_key":false,"increments_qr_resource_version":false,"uses_mutation_audit":false,"summary":"Current runtime exception: paywall PUT requires qr:write but does not use If-Match-Version, Idempotency-Key, QR resource_version increments, or the public mutation-audit path."}},"get":{"tags":["public-api"],"summary":"Get Qr Paywall","description":"Get paywall configuration for an owned QR code.","operationId":"get_qr_paywall_v1_qr__short_id__paywall_get","parameters":[{"name":"short_id","in":"path","required":true,"schema":{"type":"string","title":"Short Id"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaywallConfigResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["qr:read"]}},"/v1/agents":{"post":{"tags":["public-api"],"summary":"Create Agent","description":"Create an owner-scoped voice agent without exposing session evidence.","operationId":"create_agent_v1_agents_post","parameters":[{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Optional idempotency key for supported mutations. Accepted values match [A-Za-z0-9._:-]{1,128}. Exact replays return Idempotency-Replayed: true; fingerprint conflicts return 409 IDEMPOTENCY_CONFLICT; in-progress claims return 409 IDEMPOTENCY_IN_PROGRESS with Retry-After.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"Idempotency-Replayed":{"$ref":"#/components/headers/Idempotency-Replayed"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"409":{"description":"Idempotency conflict, in-progress claim, or resource conflict.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["agents:write"]},"get":{"tags":["public-api"],"summary":"List Agents","description":"List owner-scoped voice agents.","operationId":"list_agents_v1_agents_get","parameters":[{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inactive"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentResponse"},"title":"Response List Agents V1 Agents Get"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["agents:read"]}},"/v1/agents/by-external-reference/{external_reference}":{"get":{"tags":["public-api"],"summary":"Get Agent By External Reference","description":"Reconcile one owned agent by its safe external reference.","operationId":"get_agent_by_external_reference_v1_agents_by_external_reference__external_reference__get","parameters":[{"name":"external_reference","in":"path","required":true,"schema":{"type":"string","title":"External Reference"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["agents:read"]}},"/v1/agents/{agent_id}":{"get":{"tags":["public-api"],"summary":"Get Agent","description":"Read one owner-scoped agent configuration.","operationId":"get_agent_v1_agents__agent_id__get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["agents:read"]},"patch":{"tags":["public-api"],"summary":"Update Agent","description":"Patch an owner-scoped agent and regenerate greeting audio when needed.","operationId":"update_agent_v1_agents__agent_id__patch","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}},{"name":"If-Match-Version","in":"header","required":true,"description":"Required optimistic-concurrency token. Must equal the current resource_version or binding_version. Missing values return 428 RESOURCE_VERSION_REQUIRED; stale values return 409 RESOURCE_VERSION_CONFLICT.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"409":{"description":"Resource version conflict or other resource-state conflict.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"428":{"description":"If-Match-Version is required for this mutation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["agents:write"]},"delete":{"tags":["public-api"],"summary":"Deactivate Agent","description":"Deactivate an agent and safely detach it from the owner's QR codes.","operationId":"deactivate_agent_v1_agents__agent_id__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"integer","title":"Agent Id"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}},{"name":"If-Match-Version","in":"header","required":true,"description":"Required optimistic-concurrency token. Must equal the current resource_version or binding_version. Missing values return 428 RESOURCE_VERSION_REQUIRED; stale values return 409 RESOURCE_VERSION_CONFLICT.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentDeactivateResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"409":{"description":"Resource version conflict or other resource-state conflict.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"428":{"description":"If-Match-Version is required for this mutation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["agents:write"]}},"/v1/qr/{short_id}/agent":{"get":{"tags":["public-api"],"summary":"Get Qr Agent Binding","description":"Inspect the agent binding for an owned QR code.","operationId":"get_qr_agent_binding_v1_qr__short_id__agent_get","parameters":[{"name":"short_id","in":"path","required":true,"schema":{"type":"string","title":"Short Id"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRAgentBindingResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["bindings:read"]},"put":{"tags":["public-api"],"summary":"Update Qr Agent Binding","description":"Attach or replace an active agent binding on an owned QR code.\n\nThe QR may be inactive. The bound agent must still be owned and active.","operationId":"update_qr_agent_binding_v1_qr__short_id__agent_put","parameters":[{"name":"short_id","in":"path","required":true,"schema":{"type":"string","title":"Short Id"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Optional idempotency key for supported mutations. Accepted values match [A-Za-z0-9._:-]{1,128}. Exact replays return Idempotency-Replayed: true; fingerprint conflicts return 409 IDEMPOTENCY_CONFLICT; in-progress claims return 409 IDEMPOTENCY_IN_PROGRESS with Retry-After.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}},{"name":"If-Match-Version","in":"header","required":true,"description":"Required optimistic-concurrency token. Must equal the current resource_version or binding_version. Missing values return 428 RESOURCE_VERSION_REQUIRED; stale values return 409 RESOURCE_VERSION_CONFLICT.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRAgentBindingUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRAgentBindingResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"Idempotency-Replayed":{"$ref":"#/components/headers/Idempotency-Replayed"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"409":{"description":"Idempotency conflict, in-progress claim, or resource conflict.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"428":{"description":"If-Match-Version is required for this mutation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["bindings:write"]},"delete":{"tags":["public-api"],"summary":"Delete Qr Agent Binding","description":"Detach the current agent and clear the per-QR override.","operationId":"delete_qr_agent_binding_v1_qr__short_id__agent_delete","parameters":[{"name":"short_id","in":"path","required":true,"schema":{"type":"string","title":"Short Id"}},{"name":"X-Request-ID","in":"header","required":false,"description":"Optional client correlation ID. Accepted values are 1–128 characters using only ASCII letters, digits, '.', '_', ':', and '-'. Invalid values are replaced with a generated ID rather than rejected.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Optional idempotency key for supported mutations. Accepted values match [A-Za-z0-9._:-]{1,128}. Exact replays return Idempotency-Replayed: true; fingerprint conflicts return 409 IDEMPOTENCY_CONFLICT; in-progress claims return 409 IDEMPOTENCY_IN_PROGRESS with Retry-After.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","maxLength":128}},{"name":"If-Match-Version","in":"header","required":true,"description":"Required optimistic-concurrency token. Must equal the current resource_version or binding_version. Missing values return 428 RESOURCE_VERSION_REQUIRED; stale values return 409 RESOURCE_VERSION_CONFLICT.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRAgentBindingResponse"}}},"headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"Idempotency-Replayed":{"$ref":"#/components/headers/Idempotency-Replayed"}}},"422":{"description":"Request validation failed.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"401":{"description":"Authentication required or API key invalid.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"403":{"description":"Insufficient scope or unsupported capability for this operation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"404":{"description":"Owned resource was not found or is not visible.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"409":{"description":"Idempotency conflict, in-progress claim, or resource conflict.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"428":{"description":"If-Match-Version is required for this mutation.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}},"500":{"description":"Internal error with a sanitized public message.","headers":{"X-Request-ID":{"$ref":"#/components/headers/X-Request-ID"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicErrorEnvelope"}}}}},"security":[{"ApiKeyAuth":[]}],"x-required-scopes":["bindings:write"]}}},"components":{"schemas":{"AgentCreateRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"external_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Reference"},"model":{"type":"string","title":"Model","default":"gemini-3.1-flash-live-preview"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"},"greeting_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Greeting Message"},"greeting_enabled":{"type":"boolean","title":"Greeting Enabled","default":true},"trigger_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Message"},"trigger_enabled":{"type":"boolean","title":"Trigger Enabled","default":true},"voice_name":{"type":"string","title":"Voice Name","default":"Puck"},"turn_coverage":{"type":"string","title":"Turn Coverage","default":"activity_only"},"email_notifications_enabled":{"type":"boolean","title":"Email Notifications Enabled","default":false},"tools":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tools"},"extra_config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extra Config"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name"],"title":"AgentCreateRequest"},"AgentDeactivateResponse":{"properties":{"status":{"type":"string","const":"deactivated","title":"Status","default":"deactivated"},"agent_id":{"type":"integer","title":"Agent Id"},"is_active":{"type":"boolean","title":"Is Active"},"resource_version":{"type":"integer","title":"Resource Version"},"detached_qr_count":{"type":"integer","minimum":0.0,"title":"Detached Qr Count"}},"type":"object","required":["agent_id","is_active","resource_version","detached_qr_count"],"title":"AgentDeactivateResponse"},"AgentResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"external_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Reference"},"model":{"type":"string","title":"Model"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"},"greeting_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Greeting Message"},"greeting_enabled":{"type":"boolean","title":"Greeting Enabled"},"trigger_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Message"},"trigger_enabled":{"type":"boolean","title":"Trigger Enabled"},"voice_name":{"type":"string","title":"Voice Name"},"turn_coverage":{"type":"string","title":"Turn Coverage"},"email_notifications_enabled":{"type":"boolean","title":"Email Notifications Enabled"},"tools":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tools"},"extra_config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extra Config"},"is_active":{"type":"boolean","title":"Is Active"},"resource_version":{"type":"integer","title":"Resource Version"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","model","greeting_enabled","trigger_enabled","voice_name","turn_coverage","email_notifications_enabled","is_active","resource_version","created_at","updated_at"],"title":"AgentResponse"},"AgentUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt"},"greeting_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Greeting Message"},"greeting_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Greeting Enabled"},"trigger_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger Message"},"trigger_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Trigger Enabled"},"voice_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Name"},"turn_coverage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Turn Coverage"},"email_notifications_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Notifications Enabled"},"tools":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tools"},"extra_config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extra Config"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"AgentUpdateRequest"},"AvailableScopeDefinition":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"type":"object","required":["name","description"],"title":"AvailableScopeDefinition"},"CapabilitiesAuthorization":{"properties":{"effective_scopes":{"items":{"type":"string"},"type":"array","title":"Effective Scopes"},"available_scopes":{"items":{"$ref":"#/components/schemas/AvailableScopeDefinition"},"type":"array","title":"Available Scopes"}},"type":"object","required":["effective_scopes","available_scopes"],"title":"CapabilitiesAuthorization"},"CapabilitiesConcurrency":{"properties":{"resource_versions":{"type":"boolean","title":"Resource Versions"},"conditional_version_header":{"type":"string","title":"Conditional Version Header"},"stale_version_error":{"type":"string","title":"Stale Version Error"},"versioned_resource_types":{"items":{"type":"string"},"type":"array","title":"Versioned Resource Types"}},"type":"object","required":["resource_versions","conditional_version_header","stale_version_error","versioned_resource_types"],"title":"CapabilitiesConcurrency"},"CapabilitiesResources":{"properties":{"qr":{"items":{"type":"string"},"type":"array","title":"Qr"},"paywall":{"items":{"type":"string"},"type":"array","title":"Paywall"},"agents":{"items":{"type":"string"},"type":"array","title":"Agents"},"qr_agent_binding":{"items":{"type":"string"},"type":"array","title":"Qr Agent Binding"}},"type":"object","required":["qr","paywall","agents","qr_agent_binding"],"title":"CapabilitiesResources"},"CapabilitiesResponse":{"properties":{"api_version":{"type":"string","title":"Api Version"},"resources":{"$ref":"#/components/schemas/CapabilitiesResources"},"authorization":{"$ref":"#/components/schemas/CapabilitiesAuthorization"},"concurrency":{"$ref":"#/components/schemas/CapabilitiesConcurrency"},"sensitive_resources_exposed":{"items":{"type":"string"},"type":"array","title":"Sensitive Resources Exposed"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"}},"type":"object","required":["api_version","resources","authorization","concurrency","sensitive_resources_exposed","notes"],"title":"CapabilitiesResponse","description":"Bounded capability-discovery document for the public control plane."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PaywallConfigResponse":{"properties":{"paywall_enabled":{"type":"boolean","title":"Paywall Enabled"},"paywall_price_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Paywall Price Cents"},"paywall_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paywall Currency"},"paywall_product_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paywall Product Name"}},"type":"object","required":["paywall_enabled"],"title":"PaywallConfigResponse"},"PaywallConfigUpdate":{"properties":{"paywall_enabled":{"type":"boolean","title":"Paywall Enabled"},"paywall_price_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Paywall Price Cents"},"paywall_currency":{"type":"string","title":"Paywall Currency","default":"usd"},"paywall_product_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paywall Product Name"}},"type":"object","required":["paywall_enabled"],"title":"PaywallConfigUpdate"},"PublicVoiceReadinessResponse":{"properties":{"status":{"type":"string","enum":["ready","unavailable"],"title":"Status"},"public_access_supported":{"type":"boolean","title":"Public Access Supported"},"binding_marker_present":{"type":"boolean","title":"Binding Marker Present"},"binding_valid":{"type":"boolean","title":"Binding Valid"},"property_context_ready":{"type":"boolean","title":"Property Context Ready"},"context_identity_match":{"type":"boolean","title":"Context Identity Match"},"outcome_pipeline_ready":{"type":"boolean","title":"Outcome Pipeline Ready"},"session_creation_count":{"type":"integer","title":"Session Creation Count","default":0},"provider_connection_count":{"type":"integer","title":"Provider Connection Count","default":0},"database_mutation_count":{"type":"integer","title":"Database Mutation Count","default":0},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"}},"type":"object","required":["status","public_access_supported","binding_marker_present","binding_valid","property_context_ready","context_identity_match","outcome_pipeline_ready"],"title":"PublicVoiceReadinessResponse","description":"Bounded public voice-readiness observation (no activation inputs)."},"QRAgentBindingAgentResponse":{"properties":{"id":{"type":"integer","title":"Id"},"resource_version":{"type":"integer","title":"Resource Version"}},"type":"object","required":["id","resource_version"],"title":"QRAgentBindingAgentResponse"},"QRAgentBindingResponse":{"properties":{"short_id":{"type":"string","title":"Short Id"},"binding_version":{"type":"integer","title":"Binding Version"},"agent":{"anyOf":[{"$ref":"#/components/schemas/QRAgentBindingAgentResponse"},{"type":"null"}]},"has_config_override":{"type":"boolean","title":"Has Config Override","default":false},"config_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config Override"}},"type":"object","required":["short_id","binding_version"],"title":"QRAgentBindingResponse"},"QRAgentBindingUpdate":{"properties":{"agent_id":{"type":"integer","title":"Agent Id"},"config_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config Override"}},"type":"object","required":["agent_id"],"title":"QRAgentBindingUpdate"},"QRCodeCreateRequest":{"properties":{"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"external_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Reference"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["url"],"title":"QRCodeCreateRequest"},"QRCodeResponse":{"properties":{"short_id":{"type":"string","title":"Short Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"external_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Reference"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"redirect_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect Url"},"qr_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qr Image Url"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"is_active":{"type":"boolean","title":"Is Active"},"resource_version":{"type":"integer","title":"Resource Version"},"agent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"agent_enabled":{"type":"boolean","title":"Agent Enabled","default":false}},"type":"object","required":["short_id","name","redirect_url","qr_image_url","created_at","is_active","resource_version"],"title":"QRCodeResponse"},"QRCodeUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"redirect_url":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Redirect Url"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"QRCodeUpdateRequest"},"QRDeactivateResponse":{"properties":{"short_id":{"type":"string","title":"Short Id"},"is_active":{"type":"boolean","title":"Is Active"},"resource_version":{"type":"integer","title":"Resource Version"}},"type":"object","required":["short_id","is_active","resource_version"],"title":"QRDeactivateResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"PublicErrorBody":{"type":"object","title":"PublicErrorBody","required":["code","message","request_id"],"properties":{"code":{"type":"string","enum":["AUTHENTICATION_REQUIRED","BINDING_TARGET_INACTIVE","EXTERNAL_REFERENCE_CONFLICT","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSUFFICIENT_SCOPE","INTERNAL_ERROR","INVALID_API_KEY","RESOURCE_CONFLICT","RESOURCE_NOT_FOUND","RESOURCE_VERSION_CONFLICT","RESOURCE_VERSION_REQUIRED","UNSUPPORTED_CAPABILITY","VALIDATION_ERROR"],"description":"Stable public error code."},"message":{"type":"string","description":"Sanitized public error message."},"request_id":{"type":"string","description":"Effective request correlation ID."},"details":{"description":"Optional bounded field metadata. Never includes credentials, raw bodies, transcripts, or storage references.","nullable":true}}},"PublicErrorEnvelope":{"type":"object","title":"PublicErrorEnvelope","required":["error"],"properties":{"error":{"$ref":"#/components/schemas/PublicErrorBody"}}}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Owner API key. Send only in the X-API-Key request header. Required scopes are declared per operation via x-required-scopes."}},"headers":{"X-Request-ID":{"description":"Effective request correlation ID. Echoes a valid client-supplied X-Request-ID or a generated req_… value.","schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$"}},"Idempotency-Replayed":{"description":"Present with value true when an idempotent mutation returned a persisted safe replay summary.","schema":{"type":"string","enum":["true"]}},"Retry-After":{"description":"Seconds to wait before retrying an in-progress idempotent mutation.","schema":{"type":"string","enum":["2"]}}}},"servers":[{"url":"https://api.aipseo.com"}],"security":[{"ApiKeyAuth":[]}],"x-scope-definitions":[{"name":"agents:read","description":"Read owner-scoped voice agents."},{"name":"agents:write","description":"Create, update, and deactivate agents."},{"name":"bindings:read","description":"Inspect QR-to-agent bindings."},{"name":"bindings:write","description":"Attach, replace, and detach QR-agent bindings."},{"name":"qr:read","description":"Read QR codes and paywall configuration."},{"name":"qr:write","description":"Create, update, and deactivate QR codes and paywall configuration."}],"x-public-error-messages":{"AUTHENTICATION_REQUIRED":"Authentication is required.","BINDING_TARGET_INACTIVE":"The requested binding target is inactive.","EXTERNAL_REFERENCE_CONFLICT":"The external reference is already in use.","IDEMPOTENCY_CONFLICT":"The idempotency key conflicts with an earlier request.","IDEMPOTENCY_IN_PROGRESS":"The matching request is still in progress.","INSUFFICIENT_SCOPE":"The API key does not have permission for this operation.","INTERNAL_ERROR":"An internal error occurred.","INVALID_API_KEY":"Authentication failed.","RESOURCE_CONFLICT":"The requested operation conflicts with the current resource state.","RESOURCE_NOT_FOUND":"The requested resource was not found.","RESOURCE_VERSION_CONFLICT":"The supplied resource version is stale.","RESOURCE_VERSION_REQUIRED":"A current resource version is required.","UNSUPPORTED_CAPABILITY":"The requested operation is not available.","VALIDATION_ERROR":"The request is invalid."}}