{"openapi":"3.1.0","info":{"title":"Spoolis public API","version":"1.0.0","description":"Spoolis compiles transaction intent, verifies delivered work, and issues a signed Outcome Receipt using schema spoolis/outcome-receipt@1. The receipt is the public, portable artifact and can be verified with @spoolis/receipt-verifier. A lower-level signed attestation remains available for in-band integrations."},"servers":[{"url":"https://spoolis.com"}],"paths":{"/api/v1/keys/exchange":{"post":{"operationId":"exchangeApiKeyGrant","summary":"Exchange an API key grant","description":"Exchanges a short-lived, single-use grant for its bound API key. Owner grants mint verify scope. Spool invitations mint counterparty scope bound to one Spool. No Clerk session is required.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["grant_token"],"properties":{"grant_token":{"type":"string","pattern":"^spg_[0-9A-Za-z]{32}$"}}},"example":{"grant_token":"spg_0123456789ABCDEFGHIJKLMNOPQRSTUV"}}}},"responses":{"201":{"description":"Scoped API key, shown once"},"400":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/spools":{"post":{"operationId":"createSpool","summary":"Create a Spool","description":"Creates a proposed Spool from a strict canonical request.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSpoolRequest"},"example":{"type":"agent_task","parties":[{"role":"buyer","kind":"agent","display_name":"Buyer"},{"role":"provider","kind":"agent","display_name":"Provider"}],"value":{"amount_cents":2,"currency":"USD"},"deliverable":{"type":"dataset","title":"Company records","description":"Two company records","attributes":{"format":"json"}},"terms":[{"text":"Provide two records","provenance":{"source":"user_added"}}],"conditions":[{"description":"Exactly two rows","required":true,"verification_method":"deterministic","deterministic_check":{"checker":"row_count","expected":2}}]}}}},"responses":{"201":{"description":"Created Spool"},"400":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/spools/{id}":{"get":{"operationId":"getSpool","summary":"Get a Spool","description":"Returns a Spool visible to the authenticated party.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^spl_"}}],"responses":{"200":{"description":"Canonical Spool","content":{"application/json":{"example":{"id":"spl_example","type":"agent_task","status":{"agreement":"proposed","fulfillment":"pending","verification":"pending","settlement":"uncommitted","outcome":"active"},"economics":{"allowed_actions":["accept","decline","commit"]}}}}},"400":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/spools/{id}/invite":{"post":{"operationId":"createCounterpartyInvite","summary":"Create a counterparty invitation","description":"The initiator uses a full-scope key to create a 15-minute, single-use grant bound to one active Spool with one unassigned counterparty slot.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^spl_"}}],"responses":{"201":{"description":"One-time counterparty grant token, expiry, and exchange URL"},"400":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/spools/{id}/events":{"get":{"operationId":"getSpoolEvents","summary":"List Spool events","description":"Returns the ordered lifecycle event history.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^spl_"}}],"responses":{"200":{"description":"Event array","content":{"application/json":{"example":[{"type":"spool.created","at":"2026-08-12T12:00:00.000Z"}]}}},"400":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/spools/{id}/{action}":{"post":{"operationId":"actOnSpool","summary":"Act on a Spool","description":"Performs one documented lifecycle action using the action-specific body. Counterparty keys can accept, decline, and submit evidence only on their bound active Spool. They cannot create, commit, fund, verify, or list events. Verify-scoped keys can submit evidence and run verification before settlement is committed. Abandon, commit, provider payout onboarding, and verification that would release a committed settlement require a full-scope key. Abandon is available to either party only while the outcome is active and settlement is uncommitted. Verification includes the Outcome Receipt and its lower-level attestation when signing is configured.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^spl_"}},{"name":"action","in":"path","required":true,"schema":{"type":"string","enum":["propose","accept","decline","cancel","abandon","commit","evidence","verify","complete","onboard-provider"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EvidenceRequest"},{"type":"object"}]},"example":{"condition_id":"cond_example","type":"dataset","source":"inline rows","metadata":{"rows":[{"id":"1","name":"Example Corp"}]}}}}},"responses":{"200":{"description":"Updated Spool"},"400":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/receipts/{id}/status":{"get":{"operationId":"getReceiptStatus","summary":"Get Outcome Receipt status","description":"Optional online status layer for an Outcome Receipt. Offline signature verification is sufficient on its own and does not depend on this endpoint or Spoolis uptime. Active, corrected, and revoked are live online states. Authorized operators manage corrected and revoked overrides with advisory reasons. Either override makes verifier policy invalid without changing offline signature authenticity or automatically reversing payment. No account or API key is required.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^ocr_[a-f0-9]{24}$"}}],"responses":{"200":{"description":"Receipt status","content":{"application/json":{"example":{"receipt_id":"ocr_0123456789abcdef01234567","status":"active","advisories":[],"checked_at":"2026-08-15T12:00:00.000Z"}}}},"404":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/attestations/verify":{"post":{"operationId":"verifyAttestation","summary":"Verify an attestation","description":"Checks the lower-level signed verdict beneath an Outcome Receipt, including its signature, trust set, expiry, digests, and amount bounds.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationAttestation"},"example":{"id":"att_example","environment":"demo","spoolId":"spl_example","result":"pass","signature":"base64-signature","approvedAmount":"0.02","maximumAmount":"0.02"}}}},"responses":{"200":{"description":"Verification result"},"400":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/sandbox/session":{"get":{"operationId":"getSandboxSession","summary":"Get sandbox session state","description":"Returns the remaining limits and active demo Spools for a sandbox bearer token.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Current sandbox session state"},"400":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"operationId":"mintSandboxSession","summary":"Mint a sandbox session","description":"Creates a short-lived, budget-limited demo session.","responses":{"200":{"description":"Sandbox bearer token","content":{"application/json":{"example":{"token":"sandbox-token","expires_at":"2026-08-12T13:00:00.000Z","limits":{"compiles":2,"spools":2,"verifies":2}}}}},"400":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/sandbox/compile":{"post":{"operationId":"compileSandboxSpool","summary":"Compile a sandbox Spool","description":"Compiles exact transaction intent into a demo Spool. Optional unitization must reconcile total units and unit amount with the compiled amount and stay within the configured demo record limit.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["source"],"properties":{"source":{"type":"string","minLength":1},"economics":{"type":"object","additionalProperties":false,"properties":{"unitization":{"type":"object","additionalProperties":false,"required":["total_units","unit_amount_cents"],"properties":{"total_units":{"type":"integer","minimum":1},"unit_amount_cents":{"type":"integer","minimum":1}}}}},"conditions":{"type":"array","items":{"type":"object","required":["description","required","verification_method"],"properties":{"description":{"type":"string"},"required":{"type":"boolean"},"verification_method":{"type":"string"},"deterministic_check":{"type":"object"}}}},"declared_actor_type":{}}},"example":{"source":"Buy 10 records for $10.00.","economics":{"unitization":{"total_units":10,"unit_amount_cents":100}},"conditions":[{"description":"Exactly 10 records","required":true,"verification_method":"deterministic","deterministic_check":{"checker":"row_count","expected":10}},{"description":"Each record must include id and status","required":true,"verification_method":"deterministic","deterministic_check":{"checker":"completeness","required_fields":["id","status"]}}]}}}},"responses":{"201":{"description":"Compiled demo Spool"},"400":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/sandbox/spools/{id}/{action}":{"post":{"operationId":"actOnSandboxSpool","summary":"Act on a sandbox Spool","description":"Models demo acceptance, submits evidence rows, confirms, or verifies a demo Spool. Verification returns a demo attestation. Unitized verification also returns a signed demo Outcome Receipt with units and proportional earned value.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^spl_"}},{"name":"action","in":"path","required":true,"schema":{"type":"string","enum":["accept","evidence","confirm","verify"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EvidenceRequest"},{"type":"object"}]},"example":{"condition_id":"cond_example","type":"dataset","source":"inline rows","metadata":{"rows":[{"name":"Example Corp"},{"name":"Example Labs"}]}}}}},"responses":{"200":{"description":"Sandbox action result"},"400":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Machine-readable API error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"ApiError":{"type":"object","required":["error","code","retryable","remediation"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["ambiguity_required","configuration_unavailable","compile_failed","forbidden","input_too_large","internal_error","invalid_json","invalid_state","limit_reached","rate_limited","sandbox_resting","settlement_unavailable","session_expired","spool_not_found","store_conflict","trusted_key_unavailable","unknown_action","unauthenticated","validation_failed"]},"retryable":{"type":"boolean"},"remediation":{"type":"string"},"field":{"type":"string"},"docs":{"type":"string","format":"uri"}}},"CreateSpoolRequest":{"type":"object","additionalProperties":false,"required":["parties","value","deliverable","terms","conditions"],"properties":{"type":{"type":"string","enum":["goods_in_person","service","digital","agent_task"],"default":"service"},"parties":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"object","additionalProperties":false,"required":["role","kind","display_name"],"properties":{"role":{"type":"string","enum":["buyer","seller","client","provider"]},"kind":{"type":"string","enum":["human","agent","org","service"]},"display_name":{"type":"string","minLength":1,"maxLength":120},"contact":{"type":"string"},"account_id":{"type":"string"},"settlement_address":{"type":"string","pattern":"^wallet:eip155:42431:0x[a-fA-F0-9]{40}$"},"stripe_account_id":{"type":"string","pattern":"^acct_"}}}},"value":{"type":"object","additionalProperties":false,"required":["amount_cents","currency"],"properties":{"amount_cents":{"type":"integer","minimum":1},"currency":{"const":"USD"},"rail_preference":{"type":"string"}}},"deliverable":{"type":"object","additionalProperties":false,"required":["type","title","description","attributes"],"properties":{"type":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"attributes":{"type":"object","additionalProperties":{"type":"string"}}}},"terms":{"type":"array","minItems":1,"items":{"type":"object","required":["text","provenance"],"properties":{"text":{"type":"string"},"provenance":{"type":"object"}}}},"conditions":{"type":"array","items":{"type":"object","required":["description","required","verification_method"],"properties":{"description":{"type":"string"},"required":{"type":"boolean"},"verification_method":{"type":"string"},"deterministic_check":{"type":"object"}}}},"economics":{"type":"object"}}},"EvidenceRequest":{"type":"object","additionalProperties":false,"required":["condition_id","type","source"],"properties":{"condition_id":{"type":"string","pattern":"^cond_"},"type":{"type":"string","enum":["photo","text","file","url","dataset","confirmation"]},"source":{"type":"string"},"metadata":{"type":"object","default":{}}}},"VerificationAttestation":{"type":"object","additionalProperties":false,"required":["id","environment","spoolId","compilationVersion","verificationPlanVersion","result","approvedAmount","maximumAmount","assetOrCurrency","payerPartyId","providerPartyId","conditionResults","evidenceDigest","verificationDigest","issuedAt","expiresAt","nonce","signingKeyId","signature"],"properties":{"id":{"type":"string","pattern":"^att_"},"environment":{"type":"string","enum":["production","demo"]},"spoolId":{"type":"string","pattern":"^spl_"},"compilationVersion":{"type":"string"},"verificationPlanVersion":{"type":"string"},"result":{"type":"string","enum":["pass","partial","fail","uncertain"]},"approvedAmount":{"type":"string"},"maximumAmount":{"type":"string"},"assetOrCurrency":{"type":"string"},"payerPartyId":{"type":"string"},"providerPartyId":{"type":"string"},"providerDestination":{"type":"string"},"conditionResults":{"type":"array","items":{"type":"object"}},"evidenceDigest":{"type":"string"},"verificationDigest":{"type":"string"},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"nonce":{"type":"string"},"signingKeyId":{"type":"string"},"signature":{"type":"string"}}}}}}