Seller door API
Every operation, request, answer and schema of the seller door, generated from openapi.json.
Integra seller door API
The door a seller's own systems call to issue an ATR before approval, to claim a presented payment, to report a settlement, and to read a record's status. Every call is server to server.
- OpenAPI: 3.1.1; document version
0.1.0; license Apache-2.0. - Base URL:
{doorBase}, wheredoorBase(for examplehttps://seller.example/door) is your door's base URL. - Authentication:
sellerCredential: HTTPbearerwith formatisk_<base64url>. The tenant's seller credential, issued through the admin door:isk_and 43 base64url characters.
Operations
| Operation | Method and path | Summary |
|---|---|---|
issue | POST /issue | Assemble, store and hash the ATR for one checkout state; return the values to place. |
claim | POST /claim | The one check: the presented payment carries this ATR's hash, for the options issued. |
report | POST /report | The platform's payment reference, keyed by the ATR hash. |
status | GET /status/{atrHash} | The record and what it proves. |
openapi | GET /openapi.json | This document. |
issue
POST /issue: Assemble, store and hash the ATR for one checkout state; return the values to place.
Requires the seller credential: Authorization: Bearer isk_….
Request body (application/json): IssueRequest.
claim
POST /claim: The one check: the presented payment carries this ATR's hash, for the options issued.
Requires the seller credential: Authorization: Bearer isk_….
Request body (application/json): ClaimRequest.
report
POST /report: The platform's payment reference, keyed by the ATR hash.
Requires the seller credential: Authorization: Bearer isk_….
Request body (application/json): ReportRequest.
status
GET /status/{atrHash}: The record and what it proves.
Requires the seller credential: Authorization: Bearer isk_….
Path parameter atrHash: AtrHashInput, required.
| Status | Meaning | Body | Headers |
|---|---|---|---|
| 200 | The record. | RecordView | |
| 401 | No valid seller credential. | Refusal: door/unauthenticated | WWW-Authenticate: Bearer realm="seller-door" |
| 403 | The request carries an Origin header; the door serves servers only. | Refusal: door/browser-origin | |
| 404 | Nothing known by that name for this tenant. | Refusal: door/not-found, door/resource-unknown, claim/unknown | |
| 503 | Not available now; retry after one second. | Refusal: settle/store-unavailable | Retry-After: 1 |
openapi
GET /openapi.json: This document.
No credential is required.
| Status | Meaning | Body | Headers |
|---|---|---|---|
| 200 | This document's bytes. | object |
Schemas
AtrHash
0x and 64 lowercase hex digits: the SHA-256 of the ATR's bytes.
string; pattern ^0x[0-9a-f]{64}$.
AtrHashInput
0x and 64 hex digits, either case.
string; pattern ^0x[0-9a-fA-F]{64}$.
PairingId
A pairing of protocol, scheme and rail, as the LCP package registers it.
string; pattern ^[a-z0-9-]+(/[A-Za-z0-9._:-]+)+$; 1 to 128 characters.
Offer
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
pairing | PairingId | yes | ||
option | any JSON value | yes | The payment option exactly as the challenge will carry it. |
ContentSlot
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
slot | string | yes | pattern ^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$ | |
bytes | string | yes | pattern ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$; at most 1398104 characters | Base64 with padding (RFC 4648 §4) of the slot's exact bytes: one JSON value. |
RequestCommitment
The request an x402 challenge answers: the method, the target split at its first ?, and SHA-256 over the body bytes as received.
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
method | string | yes | pattern ^[!#$%&'*+.^_`|~0-9A-Za-z-]+$; 1 to 32 characters | |
path | string | yes | pattern ^/[!-~]*$; 1 to 8192 characters | |
query | string | yes | pattern ^[!-~]*$; at most 8192 characters | |
bodyDigest | AtrHash | yes |
IssueRequest
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
mintRequestId | string | yes | pattern ^[A-Za-z0-9._:-]{1,128}$ | |
resource | string | yes | 1 to 512 characters | |
lifetimeSeconds | integer | yes | 1 to 604800 | |
offers | array of Offer | yes | 1 to 16 items | |
content | array of ContentSlot | no | at most 56 items | |
request | RequestCommitment | no |
Carriers
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
lcp | string | yes | pattern ^lcp:sha256:0x[0-9a-f]{64}$ | |
legalContext | object | yes | ||
legalContext.type | "sha256" | yes | ||
legalContext.value | AtrHash | yes | ||
legalContext.legalContextUrl | string | yes | pattern ^https:// | |
legal_context | object | yes | ||
legal_context.type | "sha256" | yes | ||
legal_context.value | AtrHash | yes | ||
legal_context.legal_context_url | string | yes | pattern ^https:// |
LcpPattern
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
pattern | "native-field", "overlay-contract", "sidecar-attestation", "opaque-challenge", "id-reuse", "protocol-extension", "http-advisory", "truncated-field" | yes | ||
canonical | boolean | yes | ||
profile | string | no | ||
buyerSigns | boolean | yes | ||
onChain | boolean | yes | ||
zeroPartyRecoverable | boolean | yes | ||
forwardIndexable | boolean | yes | ||
publicProof | boolean | yes | ||
proves | string | yes | ||
instrument | "landed" | no |
Proves
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
claimed | boolean | yes | ||
pattern | LcpPattern or null | yes | ||
settledBy | "read", "facilitator", "seller-report", null | yes | What made the payment paid: a read of the rail, the facilitator's settle answer, or the seller's report on a pairing with nothing to read; null while unpaid. |
IssueResponse
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
atrHash | AtrHash | yes | ||
link | string | yes | pattern ^https:// | |
expiresAt | string | yes | format date-time | |
mintRequestId | string | yes | pattern ^[A-Za-z0-9._:-]{1,128}$ | |
carriers | Carriers | yes | ||
pairings | array of object | yes | 1 to 16 items | |
agreement | object | no | Present when the record requires the agreement step: the agreement URL to place beside the carriers, the network the agreement is paid on, and the agreement pairing. | |
agreement.url | string | yes | pattern ^https://; at most 2048 characters | |
agreement.network | string | yes | at most 64 characters | |
agreement.pairing | PairingId | yes |
ClaimRequest
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
resource | string | yes | 1 to 512 characters | |
pairing | PairingId | yes | ||
payment | any JSON value | yes | What the buyer presented, exactly as received. | |
chosen | any JSON value | yes | The option the payment names, as issued. | |
network | string | yes | 1 to 64 characters | |
request | RequestCommitment | no | ||
settleBy | integer | no | at least 0 | Unix seconds; at most now + 604 800. |
ClaimResponse
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
atrHash | AtrHash | yes | ||
state | "settling" | yes | ||
pairing | PairingId | yes | ||
proves | Proves | yes |
ClaimDeclined
A pushed payment that landed and then failed the check: reported, never refused.
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
atrHash | AtrHash or null | yes | ||
state | "declined" | yes | ||
pairing | PairingId | yes | ||
code | string | yes | pattern ^[a-z0-9-]+/[a-z0-9-]+$; at most 64 characters | |
transaction | string or null | yes | 1 to 256 characters |
Reference
string; pattern ^[^\u0000-\u001f\u007f]+$; 1 to 256 characters.
ReportRequest
ReportOutcome or ReportClosed.
ReportOutcome
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
atrHash | AtrHashInput | yes | ||
pairing | PairingId | yes | ||
outcome | "paid", "declined" | yes | ||
reference | Reference | no | ||
network | string | no | 1 to 64 characters | |
chosen | any JSON value | no | On a record with no claim: the option the payment paid, as issued, from which its read keys are taken. | |
receipt | any JSON value | no | On a confirm-only channel pairing's paid report: the receipt its opening answered, from which the channel is read. | |
request | RequestCommitment | no |
ReportClosed
A channel pairing's close: the close transaction, read before the record is closed.
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
atrHash | AtrHashInput | yes | ||
pairing | PairingId | yes | ||
state | "closed" | yes | ||
reference | Reference | yes | ||
network | string | no | 1 to 64 characters | |
chosen | any JSON value | no |
Channel
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
network | string | yes | ||
channel | string | yes | ||
until | string or null | yes | format date-time | The rail's deadline for the channel, or null when the rail gives none. |
closed | boolean | yes |
Agreement
The agreement step's leg: required until the buyer pays the agreement URL, settling while that payment settles, recorded once it is on chain.
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
state | "required", "settling", "recorded" | yes | ||
network | string or null | yes | ||
transaction | string or null | yes |
RecordView
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
atrHash | AtrHash | yes | ||
state | "issued", "settling", "paid", "closed" | yes | ||
expiresAt | string | yes | format date-time | |
settlement | null or object | yes | ||
proves | Proves | yes | ||
agreement | Agreement or null | yes | ||
channel | Channel or null | yes |
Refusal
An object. A member not listed here is refused.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
code | "door/malformed", "door/unauthenticated", "door/browser-origin", "door/not-found", "door/resource-unknown", "claim/unknown", "door/method", "door/too-large", "door/media-type", "issue/mint-request-reused", "issue/mint-request-lapsed", "claim/in-progress", "claim/paid", "claim/not-this-request", "claim/channel-open", "claim/channel-not-open", "claim/agreement-first", "claim/instrument-claimed", "report/pairing-mismatch", "settle/other-reference", "settle/not-settling", "claim/lapsed", "door/request-required", "door/chosen-required", "door/reference-required", "door/receipt-required", "issue/input-bounds", "issue/pairing-not-served", "issue/offer-refused", "issue/mixed-protocols", "core/slot-name", "core/slot-reserved", "core/slot-duplicate", "core/content-not-json", "core/binding-not-json", "core/too-large", "claim/pairing-unknown", "claim/not-bound", "claim/nothing-to-check", "issue/deadline", "issue/contributor-unavailable", "issue/storage-unavailable", "issue/store-unavailable", "issue/capacity", "claim/store-unavailable", "claim/read-unavailable", "settle/store-unavailable" | yes | ||
sentence | string | yes | ||
correlationId | string | yes | at least 1 character |
Last updated on