{"openapi":"3.1.0","info":{"title":"BuyerProtection Trust and Order Context API","version":"1.25.0","description":"Merchant proof, versioned service-provider and data-lifecycle registers, signed official-domain manifests, merchant-scoped bank assurance envelopes, private brand-candidate alerts, human-reviewed brand incidents, new-merchant onboarding and chargeback-remediation referrals, aggregate consented cohort milestones, authenticated order context, independently verifiable issuer-signed source reconciliation, explainable operating-evidence gates, fail-closed protection capacity, private resolution, closed-case evidence packets and field-minimised commerce source events.","termsOfService":"https://buyerprotection.com.au/guarantee/terms","contact":{"name":"BuyerProtection integration review","url":"https://buyerprotection.com.au/contact?intent=enterprise"}},"servers":[{"url":"https://buyerprotection.com.au","description":"Production"}],"externalDocs":{"description":"BuyerProtection developer centre","url":"https://buyerprotection.com.au/developers"},"tags":[{"name":"Trust","description":"Public merchant status, verification and readiness"},{"name":"Orders","description":"Private Order Passport and resolution records"},{"name":"Commerce","description":"Authenticated commerce sources and reconciliation"},{"name":"Partners","description":"Consented referral and aggregate cohort reporting"},{"name":"Assurance","description":"Purpose-bound partner queries over merchant-authorised identity and commerce evidence"},{"name":"Agents","description":"Order-specific agent discovery and preview contracts"},{"name":"Brand protection","description":"Official-domain proof, private candidate alerts and human-reviewed incident workflows"},{"name":"Data governance","description":"Provider, transfer, minimisation, retention, deletion capability and unresolved approval facts"},{"name":"Administration","description":"Privileged, authenticated control-plane operations"}],"paths":{"/llms.txt":{"get":{"summary":"Read the concise BuyerProtection product, label and proof boundaries for AI systems","responses":{"200":{"description":"Plain-text product context and current stage"}},"operationId":"getLlmsTxt","tags":["Trust"]}},"/.well-known/buyerprotection/procurement.json":{"get":{"summary":"Read verified capabilities, proposed pilot shape and explicit unverified claims","responses":{"200":{"description":"Machine-readable procurement facts"}},"operationId":"getWellKnownBuyerprotectionProcurementJson","tags":["Trust"]}},"/.well-known/buyerprotection/service-providers.json":{"get":{"operationId":"getServiceProviderRegister","tags":["Data governance"],"summary":"Read the digest-bound public service-provider and data-transfer register","responses":{"200":{"description":"Runtime state, data direction, minimisation and unresolved legal/contract status without secrets"}}}},"/schemas/service-provider-register/v1":{"get":{"operationId":"getServiceProviderRegisterSchema","tags":["Data governance"],"summary":"Read the JSON Schema for the public service-provider register","responses":{"200":{"description":"Version 1 service-provider register schema"}}}},"/.well-known/buyerprotection/data-lifecycle.json":{"get":{"operationId":"getDataLifecycleRegister","tags":["Data governance"],"summary":"Read the digest-bound purpose, lifecycle, deletion-capability and backup-consequence register","responses":{"200":{"description":"Technical lifecycle facts and explicit unapproved schedules without internal paths or record counts"}}}},"/schemas/data-lifecycle-register/v1":{"get":{"operationId":"getDataLifecycleRegisterSchema","tags":["Data governance"],"summary":"Read the JSON Schema for the public data lifecycle register","responses":{"200":{"description":"Version 1 data lifecycle register schema"}}}},"/.well-known/buyerprotection/trust-centre.json":{"get":{"summary":"Read the versioned public evidence index and explicit unavailable-evidence register","responses":{"200":{"description":"Public evidence links, document states and current assurance gaps"}},"operationId":"getWellKnownBuyerprotectionTrustCentreJson","tags":["Trust"]}},"/api/v1/service-status":{"get":{"summary":"Read current public component health without private runtime configuration","responses":{"200":{"description":"Core public components are operational"},"503":{"description":"One or more core public components are degraded"}},"operationId":"getApiV1ServiceStatus","tags":["Trust"]}},"/api/v1/official-domains":{"get":{"operationId":"lookupOfficialDomain","tags":["Brand protection","Trust"],"summary":"Check whether a domain is listed in an active signed TrustedSite manifest","parameters":[{"name":"domain","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Official or Unknown result. Unknown is never an adverse verdict."},"400":{"description":"A valid domain is required"}}}},"/.well-known/trustedsite/merchants/{merchantPublicId}/official-domains.json":{"get":{"operationId":"getOfficialDomainManifest","tags":["Brand protection","Trust"],"summary":"Read one active, expiring and revocable official-domain manifest","parameters":[{"name":"merchantPublicId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Signed TSODM+JWS manifest envelope"},"404":{"description":"No active public manifest"}}}},"/api/v1/official-domain-manifests/verify":{"post":{"operationId":"verifyOfficialDomainManifest","tags":["Brand protection","Trust"],"summary":"Verify signature, expiry and current registry state for a TSODM+JWS proof","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["compact"],"properties":{"compact":{"type":"string","maxLength":64000}}}}}},"responses":{"200":{"description":"Manifest proof is valid and currently active"},"400":{"description":"Proof is invalid, revoked or superseded"},"410":{"description":"Manifest has expired"}}}},"/.well-known/buyerprotection/merchant-assurance.json":{"get":{"operationId":"getMerchantAssuranceContract","tags":["Assurance"],"summary":"Read the pre-pilot Merchant Assurance contract, state model and data boundaries","responses":{"200":{"description":"Public contract and current readiness; no partner access key or merchant data"}}}},"/api/v1/assurance/envelopes":{"post":{"operationId":"createMerchantAssuranceEnvelope","tags":["Assurance"],"summary":"Compare an explicitly scoped merchant, official domain and payment identity against current verified evidence","security":[{"assuranceBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["merchantPublicId","purpose","requestId"],"properties":{"merchantPublicId":{"type":"string","maxLength":160},"purpose":{"enum":["complaint_investigation","merchant_onboarding","payment_investigation","scam_prevention","unfamiliar_payee_review"]},"requestId":{"type":"string","minLength":8,"maxLength":160},"domain":{"type":"string","maxLength":255},"payeeName":{"type":"string","maxLength":160},"statementDescriptor":{"type":"string","maxLength":160}}}}}},"responses":{"200":{"description":"Short-lived BPMAE+JWS envelope; unknown and mismatch never constitute an adverse decision"},"401":{"description":"Partner bearer key is missing or invalid"},"403":{"description":"Purpose, merchant scope, validity window or revocation gate failed"},"429":{"description":"Per-key pre-pilot rate limit exceeded"},"503":{"description":"Partner access or Ed25519 signing is not configured"}}}},"/api/v1/institutional/session":{"get":{"operationId":"getInstitutionalSession","tags":["Assurance"],"summary":"Read the current tenant, purpose and merchant-authority bounds for an OIDC-backed institutional session","responses":{"200":{"description":"Current bounded session and authorised merchants"},"401":{"description":"No current institutional session"},"403":{"description":"Tenant or subject authority changed or was revoked"}}}},"/api/v1/institutional/assurance":{"post":{"operationId":"createInstitutionalMerchantAssurance","tags":["Assurance"],"summary":"Return a signed merchant assurance only under current tenant, subject, purpose and merchant authority","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["merchantPublicId","requestId"],"properties":{"merchantPublicId":{"type":"string","maxLength":160},"requestId":{"type":"string","maxLength":160},"domain":{"type":"string","maxLength":500},"payeeName":{"type":"string","maxLength":300},"statementDescriptor":{"type":"string","maxLength":300}}}}}},"responses":{"200":{"description":"Bounded signed assurance; no customer data or adverse decision"},"401":{"description":"No current institutional session"},"403":{"description":"A current authority gate failed"}}}},"/api/internal/admin/buyerprotection/institutional-access":{"get":{"operationId":"getInstitutionalAccessDesk","tags":["Administration"],"summary":"Read institutional tenant, pseudonymised subject and merchant-authority state","responses":{"200":{"description":"Hash-chain verified institutional access desk"},"403":{"description":"institutions:read scope required"}}},"post":{"operationId":"prepareInstitutionalTenant","tags":["Administration"],"summary":"Prepare an exact institutional OIDC tenant for independent approval","responses":{"201":{"description":"Tenant preparation appended; no access active"},"403":{"description":"institutions:prepare scope required"}}}},"/api/v1/assurance/envelopes/verify":{"post":{"operationId":"verifyMerchantAssuranceEnvelope","tags":["Assurance"],"summary":"Verify signature, expiry and current Official Registry evidence for a BPMAE+JWS envelope","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["compact"],"properties":{"compact":{"type":"string","maxLength":96000}}}}}},"responses":{"200":{"description":"Envelope signature is valid, in term and its cited registry evidence remains current"},"400":{"description":"Envelope is malformed, revoked, superseded or unsupported"},"410":{"description":"Envelope has expired"}}}},"/api/v1/merchant/brand-portfolio":{"get":{"operationId":"getMerchantBrandPortfolio","tags":["Brand protection"],"summary":"Read the authenticated merchant's versioned official portfolio","security":[{"merchantSession":[]}],"responses":{"200":{"description":"Current, active and historical portfolio versions"},"401":{"description":"Merchant authentication required"}}}},"/api/v1/merchant/brand-portfolio/versions":{"post":{"operationId":"submitMerchantBrandPortfolioVersion","tags":["Brand protection"],"summary":"Submit a new private portfolio version for authority review","security":[{"merchantSession":[]}],"responses":{"201":{"description":"Version recorded as review_pending; no public proof created"},"401":{"description":"Merchant authentication required"}}}},"/api/v1/merchant/brand-alerts":{"get":{"operationId":"listMerchantBrandAlerts","tags":["Brand protection"],"summary":"Read the merchant's private candidate inbox","security":[{"merchantSession":[]}],"responses":{"200":{"description":"Private candidates with separate discovery, relationship and classification states"},"401":{"description":"Merchant authentication required"}}}},"/api/v1/merchant/brand-alerts/{candidateId}/relationship":{"post":{"operationId":"recordMerchantBrandRelationship","tags":["Brand protection"],"summary":"Record ours, authorised partner, not ours or unsure without changing classification","security":[{"merchantSession":[]}],"parameters":[{"name":"candidateId","in":"path","required":true,"schema":{"type":"string","pattern":"^bpbc_[a-f0-9]{24}$"}}],"responses":{"201":{"description":"Relationship recorded; no public label created"},"404":{"description":"Candidate not found for this merchant"}}}},"/api/v1/merchant/brand-cases/{caseId}/appeals":{"post":{"operationId":"fileMerchantBrandIncidentAppeal","tags":["Brand protection"],"summary":"File a merchant correction or appeal against a human decision","security":[{"merchantSession":[]}],"parameters":[{"name":"caseId","in":"path","required":true,"schema":{"type":"string","pattern":"^bpbi_[a-f0-9]{24}$"}}],"responses":{"201":{"description":"Appeal recorded for independent review"},"409":{"description":"No appealable decision or another appeal is open"}}}},"/api/internal/admin/buyerprotection/official-registry/decision":{"post":{"operationId":"decideOfficialRegistryPortfolio","tags":["Administration","Brand protection"],"summary":"Activate, reject or revoke a portfolio after scoped human review","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Decision recorded; eligible monitoring may be seeded privately"},"409":{"description":"Authority or domain-control gate is incomplete"}}}},"/api/internal/admin/buyerprotection/brand-incidents/{caseId}/decisions":{"post":{"operationId":"decideBrandIncident","tags":["Administration","Brand protection"],"summary":"Record an evidence-bound human classification without public or bank publication","security":[{"bearerAuth":[]}],"parameters":[{"name":"caseId","in":"path","required":true,"schema":{"type":"string","pattern":"^bpbi_[a-f0-9]{24}$"}}],"responses":{"201":{"description":"Human decision appended"},"409":{"description":"Confirmation gate is incomplete"}}}},"/.well-known/buyerprotection/partner-distribution.json":{"get":{"summary":"Read the signed referral, merchant-consent and aggregate reporting contract","responses":{"200":{"description":"Partner distribution capabilities and explicit data and decision boundaries"}},"operationId":"getWellKnownBuyerprotectionPartnerDistributionJson","tags":["Trust"]}},"/api/v1/partner/cohorts/{cohortId}":{"get":{"summary":"Read aggregate consented milestones for one authorised partner cohort","security":[{"bearerAuth":[]}],"parameters":[{"name":"cohortId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Aggregate milestone counts only; no merchant, customer, order or payment records"},"401":{"description":"Partner reporting token required"},"403":{"description":"Partner token is invalid or cannot read this cohort"},"503":{"description":"Partner reporting registry is not configured"}},"operationId":"getApiV1PartnerCohortsByCohortId","tags":["Partners"]}},"/api/internal/admin/buyerprotection/partner-referrals":{"post":{"summary":"Issue a signed expiring onboarding or chargeback-remediation referral after commercial authority exists","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["partnerId","partnerName","cohortId","programLane"],"properties":{"partnerId":{"type":"string"},"partnerName":{"type":"string"},"cohortId":{"type":"string"},"programLane":{"type":"string","enum":["new_merchant_onboarding","chargeback_remediation"]},"expiresInDays":{"type":"integer","minimum":1,"maximum":120}}}}}},"responses":{"201":{"description":"Signed referral created and issuance recorded without storing the token"},"401":{"description":"Admin authentication required"},"403":{"description":"Admin key lacks partners:write scope"},"503":{"description":"Referral signing is not configured"}},"operationId":"postApiInternalAdminBuyerprotectionPartnerReferrals","tags":["Administration"]}},"/api/internal/admin/buyerprotection/trustedsite-verification":{"post":{"summary":"Approve or revoke public TrustedSite proof after an authorised evidence review","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Verification decision recorded"},"409":{"description":"Business identity, domain control or support-route evidence is incomplete"}},"operationId":"postApiInternalAdminBuyerprotectionTrustedsiteVerification","tags":["Administration"]}},"/api/v1/program-readiness":{"get":{"operationId":"getPublicProgramReadinessLegacy","tags":["Trust"],"summary":"Read the public programme readiness summary","responses":{"200":{"description":"Public capability states and product boundaries without private control-plane detail"}}}},"/api/v1/public-readiness":{"get":{"operationId":"getPublicProgramReadiness","tags":["Trust"],"summary":"Read the public capability and assurance summary","responses":{"200":{"description":"Public service states, assurance boundaries and evidence links"}}}},"/api/v1/security-assessment-status":{"get":{"operationId":"getSecurityAssessmentStatus","tags":["Trust"],"summary":"Verify whether an independent security assessment matches the current frozen candidate","responses":{"200":{"description":"Current candidate, assessor-registry and signed-assessment state"}}}},"/.well-known/buyerprotection/security-assessment-candidate.json":{"get":{"operationId":"getSecurityAssessmentCandidate","tags":["Trust"],"summary":"Read the current source, runtime-profile and scope digests","responses":{"200":{"description":"Frozen security-assessment candidate manifest"}}}},"/.well-known/buyerprotection/security-assessment-scope.json":{"get":{"operationId":"getSecurityAssessmentScope","tags":["Trust"],"summary":"Read the required independent test scope and acceptance gate","responses":{"200":{"description":"Canonical test scope and digest; not testing permission"}}}},"/api/internal/admin/buyerprotection/operator-session":{"get":{"operationId":"verifyOperatorConsoleIdentity","tags":["Administration"],"summary":"Verify a scoped operator key without creating a server or browser session","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Non-secret actor ID, operator label and exact scopes; the raw key is never returned"},"401":{"description":"Operator key required"},"403":{"description":"Operator key is invalid, expired or revoked"},"503":{"description":"Admin authentication or the privileged audit ledger is unavailable"}}}},"/api/internal/admin/buyerprotection/program-readiness":{"get":{"operationId":"getInternalProgramReadiness","tags":["Administration"],"summary":"Read the authenticated implementation, control and partnership blocker register","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Detailed internal readiness register"},"401":{"description":"Admin authentication required"},"403":{"description":"Admin key lacks audit read scope"}}}},"/api/internal/admin/buyerprotection/runtime-readiness":{"get":{"operationId":"getInternalRuntimeReadiness","tags":["Administration"],"summary":"Read detailed authenticated runtime and storage checks","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Detailed runtime checks are ready"},"401":{"description":"Admin authentication required"},"503":{"description":"Runtime is unavailable or admin authentication is not configured"}}}},"/api/internal/admin/buyerprotection/service-providers":{"get":{"operationId":"getInternalServiceProviderRegister","tags":["Administration","Data governance"],"summary":"Read the provider register with non-secret assurance references and accountable reviewer metadata","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Public provider facts plus internal assurance evidence references"},"401":{"description":"Admin authentication required"},"403":{"description":"Admin key lacks audit:read scope"},"503":{"description":"Privileged audit logging is unavailable"}}}},"/api/internal/admin/buyerprotection/data-lifecycle":{"get":{"operationId":"auditInternalDataLifecycle","tags":["Administration","Data governance"],"summary":"Count current stores, overdue transient records, inspection failures and active legal holds without mutation","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Runtime lifecycle audit completed"},"401":{"description":"Admin authentication required"},"403":{"description":"Admin key lacks audit:read scope"},"503":{"description":"A store, hold registry or privileged audit control failed closed"}}}},"/api/internal/admin/buyerprotection/data-lifecycle/transient-purge":{"post":{"operationId":"purgeExpiredTransientData","tags":["Administration","Data governance"],"summary":"Delete only expired sessions, one-time links, CAPTCHAs and authentication attempts under legal-hold and typed-confirmation controls","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["reason","confirmation"],"properties":{"reason":{"type":"string","minLength":20,"maxLength":500},"confirmation":{"const":"DELETE EXPIRED TRANSIENT RECORDS"}}}}}},"responses":{"200":{"description":"Guarded purge completed and a hash-chained count-only receipt was stored"},"400":{"description":"Accountable reason or exact typed confirmation is missing"},"401":{"description":"Admin authentication required"},"403":{"description":"Admin key lacks privacy:execute scope or mutation origin is invalid"},"503":{"description":"Legal-hold registry, storage or privileged audit control failed closed"}}}},"/api/internal/admin/buyerprotection/privacy-rights":{"get":{"operationId":"getPrivacyRightsDesk","tags":["Administration","Data governance"],"summary":"Read privacy cases with identity, scope, decision, execution, response and closure kept separate","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Digest-verified private privacy-rights queue"},"401":{"description":"Admin authentication required"},"403":{"description":"Admin key lacks privacy:read scope"},"503":{"description":"Privacy-rights ledger or privileged audit control failed closed"}}}},"/api/internal/admin/buyerprotection/privacy-rights/{caseId}/identity":{"post":{"operationId":"decidePrivacyRequestIdentity","tags":["Administration","Data governance"],"summary":"Record a human identity or authority decision without storing identity-document contents","security":[{"bearerAuth":[]}],"parameters":[{"name":"caseId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Identity decision recorded"},"403":{"description":"privacy:decide scope or valid mutation origin required"},"409":{"description":"Case state rejects the decision"}}}},"/api/internal/admin/buyerprotection/privacy-rights/{caseId}/scope":{"post":{"operationId":"scopePrivacyRequestRecords","tags":["Administration","Data governance"],"summary":"Bind a verified requestor to known datasets, opaque record references and provider connections","security":[{"bearerAuth":[]}],"parameters":[{"name":"caseId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Record scope and evidence digest recorded"},"403":{"description":"privacy:decide scope required"},"409":{"description":"Verified identity is missing"}}}},"/api/internal/admin/buyerprotection/privacy-rights/{caseId}/decision":{"post":{"operationId":"decidePrivacyRequestMerits","tags":["Administration","Data governance"],"summary":"Record approve, partial, refuse or withdraw with written reasons and complaint paths","security":[{"bearerAuth":[]}],"parameters":[{"name":"caseId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Human merits decision recorded"},"403":{"description":"privacy:decide scope required"},"409":{"description":"Identity or scope gate is missing"}}}},"/api/internal/admin/buyerprotection/privacy-rights/{caseId}/tasks":{"post":{"operationId":"createPrivacyExecutionTask","tags":["Administration","Data governance"],"summary":"Create a bounded live-store, provider, backup or historic-artifact task after approval","security":[{"bearerAuth":[]}],"parameters":[{"name":"caseId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Execution evidence task created; no external mutation performed"},"403":{"description":"privacy:execute scope required"},"409":{"description":"Approval gate or duplicate-task control failed"}}}},"/api/internal/admin/buyerprotection/privacy-rights/{caseId}/tasks/{taskId}/state":{"post":{"operationId":"recordPrivacyExecutionTaskState","tags":["Administration","Data governance"],"summary":"Record independently evidenced completion, legal hold, refusal or non-applicability","security":[{"bearerAuth":[]}],"parameters":[{"name":"caseId","in":"path","required":true,"schema":{"type":"string"}},{"name":"taskId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Task state and evidence digest recorded"},"403":{"description":"privacy:execute scope required"},"409":{"description":"Task is absent or already terminal"}}}},"/api/internal/admin/buyerprotection/privacy-rights/{caseId}/response":{"post":{"operationId":"recordPrivacyResponseEvidence","tags":["Administration","Data governance"],"summary":"Record response-pack digest and observed delivery state without storing the response body","security":[{"bearerAuth":[]}],"parameters":[{"name":"caseId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Response evidence recorded"},"403":{"description":"privacy:decide scope required"},"409":{"description":"Merits decision is missing"}}}},"/api/internal/admin/buyerprotection/privacy-rights/{caseId}/close":{"post":{"operationId":"closePrivacyRightsCase","tags":["Administration","Data governance"],"summary":"Close only after the decision, terminal execution tasks and confirmed response evidence reconcile","security":[{"bearerAuth":[]}],"parameters":[{"name":"caseId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Case closed with a digest-bound control summary"},"403":{"description":"privacy:decide scope required"},"409":{"description":"A decision, task or delivery gate remains open"}}}},"/api/internal/admin/buyerprotection/enterprise-authority":{"get":{"operationId":"getEnterpriseAuthorityRegister","tags":["Administration","Partners"],"summary":"Read current, expired and revoked authority-document digests for one enterprise inquiry","security":[{"bearerAuth":[]}],"parameters":[{"name":"inquiryId","in":"query","required":false,"schema":{"type":"string","pattern":"^BPE-\\d{8}-[A-F0-9]{10}$"}}],"responses":{"200":{"description":"Hash-chain verified authority register"},"403":{"description":"Admin key lacks partners:read scope"},"503":{"description":"Authority ledger failed integrity validation"}}},"post":{"operationId":"recordEnterpriseAuthorityArtifact","tags":["Administration","Partners"],"summary":"Register a document digest and bounded authority scope without storing the document body","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["inquiryId","category","title","storageRef","documentDigest","issuedBy","authorityScope","notes"],"properties":{"inquiryId":{"type":"string","pattern":"^BPE-\\d{8}-[A-F0-9]{10}$"},"category":{"enum":["counterparty_authority","cohort_authority","baseline_protocol","data_authority","stop_condition","outcome_method","independent_reviewer","executed_agreement","commercial_authority"]},"title":{"type":"string","minLength":5,"maxLength":240},"storageRef":{"type":"string","minLength":4,"maxLength":800},"documentDigest":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"issuedBy":{"type":"string","minLength":2,"maxLength":240},"authorityScope":{"type":"string","minLength":10,"maxLength":800},"merchantIds":{"type":"array","maxItems":20,"items":{"type":"string","minLength":3,"maxLength":120}},"effectiveAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"notes":{"type":"string","minLength":3,"maxLength":1200}}}}}},"responses":{"201":{"description":"Authority digest appended"},"403":{"description":"Admin key lacks partners:write scope"},"409":{"description":"Document, inquiry or authority control failed"}}}},"/api/internal/admin/buyerprotection/enterprise-authority/{artifactId}/revoke":{"post":{"operationId":"revokeEnterpriseAuthorityArtifact","tags":["Administration","Partners"],"summary":"Revoke a registered authority artifact with a separate authority reference","security":[{"bearerAuth":[]}],"parameters":[{"name":"artifactId","in":"path","required":true,"schema":{"type":"string","pattern":"^BPAU-\\d{8}-[A-F0-9]{10}$"}}],"responses":{"201":{"description":"Revocation appended; future stage use blocked"},"403":{"description":"Admin key lacks partners:write scope"},"404":{"description":"Artifact not found"}}}},"/api/internal/admin/buyerprotection/enterprise-pipeline":{"get":{"operationId":"getEnterprisePipeline","tags":["Administration","Partners"],"summary":"Read owned enterprise inquiries, response clocks and evidence-gated deal stages","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Hash-chain verified enterprise pipeline and current projections"},"403":{"description":"Admin key lacks partners:read scope"},"503":{"description":"The inquiry or pipeline ledger failed integrity validation"}}}},"/api/internal/admin/buyerprotection/enterprise-pipeline/{inquiryId}/assignment":{"post":{"operationId":"assignEnterpriseInquiry","tags":["Administration","Partners"],"summary":"Assign an accountable owner, priority and dated next action","security":[{"bearerAuth":[]}],"parameters":[{"name":"inquiryId","in":"path","required":true,"schema":{"type":"string","pattern":"^BPE-\\d{8}-[A-F0-9]{10}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["ownerName","ownerRole","priority","nextAction","nextActionDueAt","notes"],"properties":{"ownerName":{"type":"string","minLength":2,"maxLength":160},"ownerRole":{"type":"string","minLength":2,"maxLength":160},"priority":{"enum":["normal","high","critical"]},"nextAction":{"type":"string","minLength":5,"maxLength":500},"nextActionDueAt":{"type":"string","format":"date-time"},"notes":{"type":"string","minLength":3,"maxLength":1200}}}}}},"responses":{"201":{"description":"Assignment appended to the pipeline chain"},"403":{"description":"Admin key lacks partners:write scope"},"404":{"description":"Inquiry not found"}}}},"/api/internal/admin/buyerprotection/enterprise-pipeline/{inquiryId}/responses":{"post":{"operationId":"recordEnterpriseInquiryResponse","tags":["Administration","Partners"],"summary":"Record a field-minimised outbound response and its exact delivery proof layer","security":[{"bearerAuth":[]}],"parameters":[{"name":"inquiryId","in":"path","required":true,"schema":{"type":"string","pattern":"^BPE-\\d{8}-[A-F0-9]{10}$"}}],"responses":{"201":{"description":"Response evidence appended without storing the message body"},"400":{"description":"Response state, purpose or evidence is invalid"},"403":{"description":"Admin key lacks partners:write scope"}}}},"/api/internal/admin/buyerprotection/enterprise-pipeline/{inquiryId}/stage":{"post":{"operationId":"advanceEnterpriseInquiryStage","tags":["Administration","Partners"],"summary":"Advance one deal only through registered authority digests and the allowed state transition","security":[{"bearerAuth":[]}],"parameters":[{"name":"inquiryId","in":"path","required":true,"schema":{"type":"string","pattern":"^BPE-\\d{8}-[A-F0-9]{10}$"}}],"responses":{"201":{"description":"Stage transition appended"},"403":{"description":"Admin key lacks partners:write scope"},"409":{"description":"Owner, transition or stage-specific evidence gate failed"}}}},"/api/internal/admin/buyerprotection/security-assessments":{"get":{"operationId":"getInternalSecurityAssessments","tags":["Administration"],"summary":"Read current and stale signed security-assessment states","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Security assessment status for the current candidate"},"403":{"description":"Admin key lacks security-assessments:read scope"}}},"post":{"operationId":"ingestIndependentSecurityAssessment","tags":["Administration"],"summary":"Verify and store assessor-signed claims for the exact current candidate","security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Signature, key, candidate, scope, findings and retest state validated and stored"},"403":{"description":"Admin key lacks security-assessments:ingest scope"},"409":{"description":"Assessment ID conflicts or a newer assessor record already exists"},"422":{"description":"Claims, candidate, scope, material findings or signature validation failed"},"503":{"description":"No approved independent assessor registry is configured"}}}},"/api/internal/admin/buyerprotection/shadow-pilot/{merchantId}":{"get":{"summary":"Build the current private shadow-pilot control pack for one merchant","security":[{"bearerAuth":[]}],"parameters":[{"name":"merchantId","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":200}}],"responses":{"200":{"description":"Current admission gates, daily evidence, false-positive measures, stop conditions and zero-default value boundary"},"401":{"description":"Admin authentication required"},"403":{"description":"Admin key lacks pilot:read scope"}},"operationId":"getApiInternalAdminBuyerprotectionShadowPilotByMerchantId","tags":["Administration"]}},"/api/internal/admin/buyerprotection/shadow-pilot/{merchantId}/snapshot":{"post":{"summary":"Record a tamper-evident shadow-pilot control snapshot after operator evidence review","security":[{"bearerAuth":[]}],"parameters":[{"name":"merchantId","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["controlEvidence"],"properties":{"controlEvidence":{"type":"object","additionalProperties":false,"required":["duplicateDeliveryProofRef","revocationProofRef","redactionProofRef","rollbackProofRef"],"properties":{"duplicateDeliveryProofRef":{"type":"string"},"revocationProofRef":{"type":"string"},"redactionProofRef":{"type":"string"},"rollbackProofRef":{"type":"string"},"baselineProtocolRef":{"type":"string"},"independentReviewerRef":{"type":"string"}}},"controlFindings":{"type":"object","additionalProperties":false,"properties":{"publicPartnerClaimDetected":{"type":"boolean"},"unauthorisedPartnerDisclosure":{"type":"boolean"},"revocationOrDeletionFailure":{"type":"boolean"}}}}}}}},"responses":{"201":{"description":"Snapshot appended and the per-merchant digest chain verified"},"400":{"description":"Control pack or evidence reference is invalid"},"401":{"description":"Admin authentication required"},"403":{"description":"Admin key lacks pilot:decide scope"}},"operationId":"postApiInternalAdminBuyerprotectionShadowPilotByMerchantIdSnapshot","tags":["Administration"]}},"/api/v1/merchant-trust":{"get":{"summary":"Check the current public merchant-trust record","parameters":[{"name":"domain","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current merchant-trust result"}},"operationId":"getApiV1MerchantTrust","tags":["Trust"]}},"/api/v1/merchant-trust/verify":{"post":{"summary":"Verify a legacy HMAC or public-key BuyerProtection merchant credential and its revocation state","responses":{"200":{"description":"Credential signature valid, in term and not revoked"},"400":{"description":"Credential missing or malformed"},"410":{"description":"Credential expired or revoked"},"503":{"description":"Public verification key unavailable"}},"operationId":"postApiV1MerchantTrustVerify","tags":["Trust"]}},"/api/v1/commerce-reconciliation/verify":{"post":{"summary":"Verify BuyerProtection's Ed25519 receipt over an exact supplied Shopify reconciliation checkpoint","responses":{"200":{"description":"Issuer signature and checkpoint digest are valid; decisionWindowComplete remains a separate result"},"400":{"description":"Proof or supplied checkpoint is malformed, mismatched or tampered"},"503":{"description":"Public verification key unavailable"}},"operationId":"postApiV1CommerceReconciliationVerify","tags":["Commerce"]}},"/.well-known/jwks.json":{"get":{"summary":"Read the current BuyerProtection Ed25519 public verification key","responses":{"200":{"description":"Public OKP JWK set for independent signature verification"}},"operationId":"getWellKnownJwksJson","tags":["Trust"]}},"/.well-known/buyerprotection/revocations.json":{"get":{"summary":"Read the public merchant-credential revocation list","responses":{"200":{"description":"Current issuer revocations; expiry and signature checks remain required"}},"operationId":"getWellKnownBuyerprotectionRevocationsJson","tags":["Trust"]}},"/.well-known/buyerprotection/reviewers.json":{"get":{"summary":"Read approved independent-reviewer Ed25519 public keys and validity windows","responses":{"200":{"description":"Public reviewer registry; listing does not represent an endorsement"}},"operationId":"getWellKnownBuyerprotectionReviewersJson","tags":["Trust"]}},"/.well-known/buyerprotection/review-methods.json":{"get":{"summary":"Read versioned financial-attribution methods and their immutable digests","responses":{"200":{"description":"Public method registry; publication does not imply partner approval"}},"operationId":"getWellKnownBuyerprotectionReviewMethodsJson","tags":["Trust"]}},"/.well-known/buyerprotection/admin-audit-checkpoint.json":{"get":{"summary":"Read the current signed head of the privileged-access hash chain","responses":{"200":{"description":"Chain-valid checkpoint signed by BuyerProtection's public Ed25519 key"},"503":{"description":"Audit chain integrity failed"}},"operationId":"getWellKnownBuyerprotectionAdminAuditCheckpointJson","tags":["Trust"]}},"/api/internal/admin/buyerprotection/audit":{"get":{"summary":"Verify the private privileged-access hash chain","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Event count, head digest and current chain-integrity state"},"401":{"description":"Admin authentication required"},"403":{"description":"Admin key lacks audit:read scope"},"503":{"description":"Audit event could not be appended or chain integrity failed"}},"operationId":"getApiInternalAdminBuyerprotectionAudit","tags":["Administration"]}},"/api/internal/admin/buyerprotection/billing-review":{"get":{"operationId":"getBuyerProtectionBillingReview","tags":["Administration","Billing"],"summary":"Read hash-chained provider events and separately reviewed bank-settlement evidence","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Billing event and settlement queues with distinct provider-paid and bank-reconciled states"},"401":{"description":"Admin authentication required"},"403":{"description":"Admin key lacks billing:read scope"},"503":{"description":"Billing event or settlement chain failed integrity validation"}}}},"/api/internal/admin/buyerprotection/billing-settlements":{"get":{"operationId":"getBuyerProtectionBillingSettlements","tags":["Administration","Billing"],"summary":"Read prepared, reconciled, rejected, reversed and stop-required payout settlements","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Hash-chain verified settlement desk"},"403":{"description":"billing:read scope required"}}},"post":{"operationId":"prepareBuyerProtectionBillingSettlement","tags":["Administration","Billing"],"summary":"Bind one exact payout.paid event to field-minimised posted-bank evidence without reconciling it","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["payoutEventId","amountMinor","currency","evidenceType","evidenceReference","evidenceDigest","statementLineDigest","receivingAccountEvidenceDigest","bankEntryStatus","settledAt","notes"],"properties":{"payoutEventId":{"type":"string","pattern":"^evt_[A-Za-z0-9_]+$"},"amountMinor":{"type":"integer","minimum":1},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"evidenceType":{"enum":["bank_statement","bank_feed","bank_portal_export","synthetic_fixture"]},"evidenceReference":{"type":"string","minLength":4,"maxLength":500},"evidenceDigest":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"statementLineDigest":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"receivingAccountEvidenceDigest":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"bankEntryStatus":{"const":"posted"},"settledAt":{"type":"string","format":"date-time"},"notes":{"type":"string","minLength":20,"maxLength":1200}}}}}},"responses":{"201":{"description":"Settlement preparation appended; review still required"},"403":{"description":"billing:prepare scope required"},"409":{"description":"Payout or amount/currency evidence does not match"}}}},"/api/internal/admin/buyerprotection/billing-settlements/{settlementId}/decision":{"post":{"operationId":"decideBuyerProtectionBillingSettlement","tags":["Administration","Billing"],"summary":"Require a different operator to reconcile, reject or request more bank evidence","security":[{"bearerAuth":[]}],"parameters":[{"name":"settlementId","in":"path","required":true,"schema":{"type":"string","pattern":"^BPST-\\d{8}-[A-F0-9]{10}$"}}],"responses":{"201":{"description":"Separate review decision appended"},"403":{"description":"billing:reconcile scope required"},"409":{"description":"Self-review, stale preparation or incomplete attestations blocked"}}}},"/api/internal/admin/buyerprotection/billing-settlements/{settlementId}/reversal":{"post":{"operationId":"recordBuyerProtectionBillingSettlementReversal","tags":["Administration","Billing"],"summary":"Invalidate current reliance when a reconciled bank entry is reversed or recalled","security":[{"bearerAuth":[]}],"parameters":[{"name":"settlementId","in":"path","required":true,"schema":{"type":"string","pattern":"^BPST-\\d{8}-[A-F0-9]{10}$"}}],"responses":{"201":{"description":"Reversal evidence appended and current reconciliation removed"},"403":{"description":"billing:reconcile scope required"},"409":{"description":"Current reconciled settlement required"}}}},"/api/v1/commerce/connectors":{"get":{"operationId":"getMerchantCommerceConnectors","tags":["Commerce"],"summary":"Read the authenticated merchant's connector, observation, descriptor and pilot state","security":[{"merchantSession":[]}],"responses":{"200":{"description":"Field-minimised connector and observation state; never returns an access token or automated protection approval"},"401":{"description":"Authenticated merchant session required"}}}},"/api/webhooks/shopify":{"post":{"operationId":"receiveShopifyWebhook","tags":["Commerce"],"summary":"Receive a verified, deduplicated Shopify commerce source event","parameters":[{"name":"X-Shopify-Hmac-Sha256","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-Shopify-Shop-Domain","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-Shopify-Topic","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-Shopify-Webhook-Id","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Verified delivery acknowledged"},"401":{"description":"Shopify HMAC invalid"},"404":{"description":"Shop is not connected"},"410":{"description":"Connection is no longer active"},"503":{"description":"Connector credentials are not configured"}}}},"/api/integrations/commerce/merchant-feed":{"post":{"operationId":"pushBuyerProtectionMerchantCommerceFeed","tags":["Commerce"],"summary":"Receive an authority-bound signed merchant commerce snapshot without requiring merchant DNS","parameters":[{"name":"X-BuyerProtection-Source-Domain","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-BuyerProtection-Feed-Token","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-BuyerProtection-Timestamp","in":"header","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"X-BuyerProtection-Content-Sha256","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-BuyerProtection-Signature","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Signed minimised batch accepted as merchant-asserted evidence; independent corroboration remains required"},"400":{"description":"Contract, evidence window, pagination or field boundary invalid"},"401":{"description":"Token, digest, signature or timestamp invalid"},"404":{"description":"No active authority-bound connection exists for the source domain"},"409":{"description":"The connection is not configured for outbound push"},"413":{"description":"Batch exceeds the bounded request size"}}}},"/api/internal/admin/buyerprotection/shopify-reconcile":{"post":{"summary":"Refresh due public-app authority and reconcile each due Shopify evidence window","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Every due store completed a bounded field-minimised reconciliation"},"401":{"description":"Admin authentication required"},"403":{"description":"Admin key lacks commerce:decide scope"},"503":{"description":"Public app runtime is unconfigured or at least one due store failed closed"}},"operationId":"postApiInternalAdminBuyerprotectionShopifyReconcile","tags":["Administration"]}},"/api/internal/admin/buyerprotection/merchant-api-connections":{"post":{"operationId":"registerBuyerProtectionMerchantApiConnection","tags":["Administration","Commerce"],"summary":"Install or rotate an authorised read-only merchant evidence connection","security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Encrypted custom merchant connection registered; secrets are never returned"},"400":{"description":"Domain authority, versioned consent or connector fields are invalid"},"401":{"description":"Admin authentication required"},"403":{"description":"Admin key lacks commerce:decide scope"},"404":{"description":"Merchant account does not exist"},"409":{"description":"Source domain is already claimed by another merchant"}}}},"/api/shopify/app/context":{"get":{"summary":"Read the embedded public app state after Shopify session-token verification","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Shop-bound minimised evidence, observation and Shopify App Pricing state"},"401":{"description":"Shopify session token missing or invalid"},"503":{"description":"Separate public app runtime is not configured"}},"operationId":"getApiShopifyAppContext","tags":["Commerce"]}},"/api/shopify/app/descriptor":{"post":{"summary":"Submit the embedded merchant's statement descriptor for separate review","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Merchant-asserted descriptor stored"},"401":{"description":"Shopify session token missing or invalid"},"409":{"description":"Descriptor collision requires operator review"}},"operationId":"postApiShopifyAppDescriptor","tags":["Commerce"]}},"/api/shopify/app/evidence-review":{"post":{"summary":"Request private evidence measurement with current versioned merchant consent","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["consentAccepted","consentVersion"],"properties":{"consentAccepted":{"type":"boolean","const":true},"consentVersion":{"type":"string","const":"2026-08-15"}}}}}},"responses":{"200":{"description":"Versioned consent and review request recorded; no automatic protection approval"},"400":{"description":"Current versioned shadow-pilot consent is missing"},"401":{"description":"Shopify session token missing or invalid"},"409":{"description":"Active source or evidence gate is incomplete"}},"operationId":"postApiShopifyAppEvidenceReview","tags":["Commerce"]}},"/api/shopify/app/evidence-review/withdraw":{"post":{"summary":"Withdraw the embedded merchant from private evidence measurement","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Withdrawal recorded; a future request requires fresh consent"},"401":{"description":"Shopify session token missing or invalid"},"404":{"description":"No private measurement request exists"},"409":{"description":"The request is already closed"}},"operationId":"postApiShopifyAppEvidenceReviewWithdraw","tags":["Commerce"]}},"/api/webhooks/shopify/public":{"post":{"operationId":"receiveShopifyPublicAppWebhook","tags":["Commerce"],"summary":"Receive a signed field-minimised event from the separate public Shopify app","parameters":[{"name":"X-Shopify-Hmac-Sha256","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-Shopify-Shop-Domain","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-Shopify-Topic","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-Shopify-Webhook-Id","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Verified delivery acknowledged"},"401":{"description":"Public app webhook HMAC invalid"},"404":{"description":"Shop is not connected through the public app"},"503":{"description":"Public app runtime is not configured"}}}},"/api/v1/agent/protection-quotes/example":{"get":{"summary":"Read the non-chargeable agent protection quote example","responses":{"200":{"description":"Example only; cannot take payment or activate protection"}},"operationId":"getApiV1AgentProtectionQuotesExample","tags":["Agents"]}},"/api/v1/agent/protection-quotes":{"post":{"summary":"Request an authenticated, order-specific protection decision","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":12}}],"responses":{"201":{"description":"Quote created"},"401":{"description":"Agent API key required"},"409":{"description":"Idempotency conflict"},"503":{"description":"Agent API not configured"}},"operationId":"postApiV1AgentProtectionQuotes","tags":["Agents"]}},"/api/v1/agent/protection-quotes/{quoteId}/authorize":{"post":{"summary":"Record explicit principal authority and open transaction-scoped checkout","security":[{"bearerAuth":[]}],"parameters":[{"name":"quoteId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorization recorded and checkout created"},"409":{"description":"Quote is not chargeable"},"503":{"description":"Secure checkout unavailable; no payment taken"}},"operationId":"postApiV1AgentProtectionQuotesByQuoteIdAuthorize","tags":["Agents"]}},"/api/v1/agent/protection-quotes/{quoteId}":{"get":{"summary":"Read the current state of one client-owned agent quote","security":[{"bearerAuth":[]}],"parameters":[{"name":"quoteId","in":"path","required":true,"schema":{"type":"string","pattern":"^bpq_[a-f0-9]{24}$"}}],"responses":{"200":{"description":"Current quote, authority, payment and passport state"},"404":{"description":"Quote not found for this API client"}},"operationId":"getApiV1AgentProtectionQuotesByQuoteId","tags":["Agents"]}},"/api/v1/agent/protection-quotes/{quoteId}/activate":{"post":{"summary":"Issue a signed Order Passport after verified payment and a current eligible decision","security":[{"bearerAuth":[]}],"parameters":[{"name":"quoteId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Order Passport issued"},"409":{"description":"Verified payment or current guarantee state required"}},"operationId":"postApiV1AgentProtectionQuotesByQuoteIdActivate","tags":["Agents"]}},"/api/v1/order-passport/demo":{"get":{"summary":"Read the signed, expiring Order Passport demonstration","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Demonstration Order Passport; never customer data"},"401":{"description":"Invalid or tampered token"},"410":{"description":"Expired token"}},"operationId":"getApiV1OrderPassportDemo","tags":["Orders"]}},"/api/v1/order-passport":{"get":{"summary":"Read a private merchant-issued Order Passport using its signed expiring token","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Field-minimised merchant-supplied order context"},"401":{"description":"Invalid or tampered token"},"404":{"description":"Passport not found or no longer active"},"410":{"description":"Expired token"}},"operationId":"getApiV1OrderPassport","tags":["Orders"]}},"/api/v1/resolution-case":{"get":{"summary":"Read a private resolution case using its signed expiring token","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private case state, merchant actions and buyer outcome options"},"401":{"description":"Invalid or tampered token"},"404":{"description":"Case not found"},"410":{"description":"Expired token"}},"operationId":"getApiV1ResolutionCase","tags":["Orders"]}},"/api/v1/evidence-packets/example":{"get":{"summary":"Read a synthetic closed-case evidence packet","responses":{"200":{"description":"Example only; contains no customer, merchant or payment data"}},"operationId":"getApiV1EvidencePacketsExample","tags":["Orders"]}},"/api/v1/evidence-packets/{caseId}":{"get":{"summary":"Export the source-linked packet for a closed merchant-owned case","parameters":[{"name":"caseId","in":"path","required":true,"schema":{"type":"string","pattern":"^bprc_[a-f0-9]{24}$"}}],"responses":{"200":{"description":"Closed case, source event digests, final buyer state and zero-by-default financial attribution"},"401":{"description":"Authenticated merchant session required"},"404":{"description":"Case not found for this merchant"},"409":{"description":"Case is not closed and cannot be exported"}},"operationId":"getApiV1EvidencePacketsByCaseId","tags":["Orders"]}},"/api/internal/admin/buyerprotection/evidence-packets/{caseId}/reviewer-attestations":{"post":{"summary":"Validate and store a reviewer-signed reconciliation for one exact packet digest","security":[{"bearerAuth":[]}],"parameters":[{"name":"caseId","in":"path","required":true,"schema":{"type":"string","pattern":"^bprc_[a-f0-9]{24}$"}}],"responses":{"201":{"description":"Reviewer signature, claims, scope and attribution math validated and stored"},"401":{"description":"Admin authentication required"},"409":{"description":"Closed packet unavailable or submitted review is stale"},"422":{"description":"Signature, digest, reviewer, scope or attribution validation failed"},"503":{"description":"No approved reviewer public-key registry is configured"}},"operationId":"postApiInternalAdminBuyerprotectionEvidencePacketsByCaseIdReviewerAttestations","tags":["Administration"]}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"},"assuranceBearer":{"type":"http","scheme":"bearer","description":"Named partner key bound to exact merchants, purposes and validity dates"},"merchantSession":{"type":"apiKey","in":"cookie","name":"trustedsite_au_session"}}}}