Skip to content
Integra Agentic Connectors

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}, where doorBase (for example https://seller.example/door) is your door's base URL.
  • Authentication: sellerCredential: HTTP bearer with format isk_<base64url>. The tenant's seller credential, issued through the admin door: isk_ and 43 base64url characters.

Operations

OperationMethod and pathSummary
issuePOST /issueAssemble, store and hash the ATR for one checkout state; return the values to place.
claimPOST /claimThe one check: the presented payment carries this ATR's hash, for the options issued.
reportPOST /reportThe platform's payment reference, keyed by the ATR hash.
statusGET /status/{atrHash}The record and what it proves.
openapiGET /openapi.jsonThis 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.

StatusMeaningBodyHeaders
200The ATR is in the seller's storage; place these values before approval.IssueResponse
400The body is not the operation's JSON object.Refusal: door/malformed
401No valid seller credential.Refusal: door/unauthenticatedWWW-Authenticate: Bearer realm="seller-door"
403The request carries an Origin header; the door serves servers only.Refusal: door/browser-origin
404Nothing known by that name for this tenant.Refusal: door/not-found, door/resource-unknown, claim/unknown
409The record is in a state that does not allow this.Refusal: issue/mint-request-reused, issue/mint-request-lapsed, claim/in-progress, claim/paid, claim/not-this-request, claim/channel-open, claim/channel-not-open, report/pairing-mismatch, settle/other-reference, settle/not-settling
413The body is larger than this operation accepts.Refusal: door/too-large
415The body is not application/json.Refusal: door/media-type
422The request cannot be served as sent.Refusal: 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
503Not available now; retry after one second.Refusal: issue/deadline, issue/contributor-unavailable, issue/storage-unavailable, issue/store-unavailable, issue/capacity, claim/store-unavailable, settle/store-unavailableRetry-After: 1

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.

StatusMeaningBodyHeaders
200Claimed, and the record is settling; or, for a pushed payment that landed and then failed the check, declined.ClaimResponse or ClaimDeclined
400The body is not the operation's JSON object.Refusal: door/malformed
401No valid seller credential.Refusal: door/unauthenticatedWWW-Authenticate: Bearer realm="seller-door"
403The request carries an Origin header; the door serves servers only.Refusal: door/browser-origin
404Nothing known by that name for this tenant.Refusal: door/not-found, door/resource-unknown, claim/unknown
409The record is in a state that does not allow this.Refusal: issue/mint-request-reused, issue/mint-request-lapsed, claim/in-progress, claim/paid, claim/not-this-request, claim/channel-open, claim/channel-not-open, report/pairing-mismatch, settle/other-reference, settle/not-settling, claim/agreement-first, claim/instrument-claimed
410The challenge has lapsed.Refusal: claim/lapsed
413The body is larger than this operation accepts.Refusal: door/too-large
415The body is not application/json.Refusal: door/media-type
422The request cannot be served as sent.Refusal: 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
503Not available now; retry after one second.Refusal: issue/deadline, issue/contributor-unavailable, issue/storage-unavailable, issue/store-unavailable, issue/capacity, claim/store-unavailable, claim/read-unavailable, settle/store-unavailableRetry-After: 1

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.

StatusMeaningBodyHeaders
200The record as it now stands.RecordView
202Accepted; nothing final was read yet. A settling record is finished by the seller door; an issued one is reported again later.RecordView
400The body is not the operation's JSON object.Refusal: door/malformed
401No valid seller credential.Refusal: door/unauthenticatedWWW-Authenticate: Bearer realm="seller-door"
403The request carries an Origin header; the door serves servers only.Refusal: door/browser-origin
404Nothing known by that name for this tenant.Refusal: door/not-found, door/resource-unknown, claim/unknown
409The record is in a state that does not allow this.Refusal: issue/mint-request-reused, issue/mint-request-lapsed, claim/in-progress, claim/paid, claim/not-this-request, claim/channel-open, claim/channel-not-open, report/pairing-mismatch, settle/other-reference, settle/not-settling
413The body is larger than this operation accepts.Refusal: door/too-large
415The body is not application/json.Refusal: door/media-type
422The request cannot be served as sent.Refusal: 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
503Not available now; retry after one second.Refusal: issue/deadline, issue/contributor-unavailable, issue/storage-unavailable, issue/store-unavailable, issue/capacity, claim/store-unavailable, settle/store-unavailableRetry-After: 1

status

GET /status/{atrHash}: The record and what it proves.

Requires the seller credential: Authorization: Bearer isk_….

Path parameter atrHash: AtrHashInput, required.

StatusMeaningBodyHeaders
200The record.RecordView
401No valid seller credential.Refusal: door/unauthenticatedWWW-Authenticate: Bearer realm="seller-door"
403The request carries an Origin header; the door serves servers only.Refusal: door/browser-origin
404Nothing known by that name for this tenant.Refusal: door/not-found, door/resource-unknown, claim/unknown
503Not available now; retry after one second.Refusal: settle/store-unavailableRetry-After: 1

openapi

GET /openapi.json: This document.

No credential is required.

StatusMeaningBodyHeaders
200This 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.

FieldTypeRequiredConstraintsDescription
pairingPairingIdyes
optionany JSON valueyesThe payment option exactly as the challenge will carry it.

ContentSlot

An object. A member not listed here is refused.

FieldTypeRequiredConstraintsDescription
slotstringyespattern ^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$
bytesstringyespattern ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$; at most 1398104 charactersBase64 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.

FieldTypeRequiredConstraintsDescription
methodstringyespattern ^[!#$%&'*+.^_`|~0-9A-Za-z-]+$; 1 to 32 characters
pathstringyespattern ^/[!-~]*$; 1 to 8192 characters
querystringyespattern ^[!-~]*$; at most 8192 characters
bodyDigestAtrHashyes

IssueRequest

An object. A member not listed here is refused.

FieldTypeRequiredConstraintsDescription
mintRequestIdstringyespattern ^[A-Za-z0-9._:-]{1,128}$
resourcestringyes1 to 512 characters
lifetimeSecondsintegeryes1 to 604800
offersarray of Offeryes1 to 16 items
contentarray of ContentSlotnoat most 56 items
requestRequestCommitmentno

Carriers

An object. A member not listed here is refused.

FieldTypeRequiredConstraintsDescription
lcpstringyespattern ^lcp:sha256:0x[0-9a-f]{64}$
legalContextobjectyes
legalContext.type"sha256"yes
legalContext.valueAtrHashyes
legalContext.legalContextUrlstringyespattern ^https://
legal_contextobjectyes
legal_context.type"sha256"yes
legal_context.valueAtrHashyes
legal_context.legal_context_urlstringyespattern ^https://

LcpPattern

An object. A member not listed here is refused.

FieldTypeRequiredConstraintsDescription
pattern"native-field", "overlay-contract", "sidecar-attestation", "opaque-challenge", "id-reuse", "protocol-extension", "http-advisory", "truncated-field"yes
canonicalbooleanyes
profilestringno
buyerSignsbooleanyes
onChainbooleanyes
zeroPartyRecoverablebooleanyes
forwardIndexablebooleanyes
publicProofbooleanyes
provesstringyes
instrument"landed"no

Proves

An object. A member not listed here is refused.

FieldTypeRequiredConstraintsDescription
claimedbooleanyes
patternLcpPattern or nullyes
settledBy"read", "facilitator", "seller-report", nullyesWhat 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.

FieldTypeRequiredConstraintsDescription
atrHashAtrHashyes
linkstringyespattern ^https://
expiresAtstringyesformat date-time
mintRequestIdstringyespattern ^[A-Za-z0-9._:-]{1,128}$
carriersCarriersyes
pairingsarray of objectyes1 to 16 items
agreementobjectnoPresent 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.urlstringyespattern ^https://; at most 2048 characters
agreement.networkstringyesat most 64 characters
agreement.pairingPairingIdyes

ClaimRequest

An object. A member not listed here is refused.

FieldTypeRequiredConstraintsDescription
resourcestringyes1 to 512 characters
pairingPairingIdyes
paymentany JSON valueyesWhat the buyer presented, exactly as received.
chosenany JSON valueyesThe option the payment names, as issued.
networkstringyes1 to 64 characters
requestRequestCommitmentno
settleByintegernoat least 0Unix seconds; at most now + 604 800.

ClaimResponse

An object. A member not listed here is refused.

FieldTypeRequiredConstraintsDescription
atrHashAtrHashyes
state"settling"yes
pairingPairingIdyes
provesProvesyes

ClaimDeclined

A pushed payment that landed and then failed the check: reported, never refused.

An object. A member not listed here is refused.

FieldTypeRequiredConstraintsDescription
atrHashAtrHash or nullyes
state"declined"yes
pairingPairingIdyes
codestringyespattern ^[a-z0-9-]+/[a-z0-9-]+$; at most 64 characters
transactionstring or nullyes1 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.

FieldTypeRequiredConstraintsDescription
atrHashAtrHashInputyes
pairingPairingIdyes
outcome"paid", "declined"yes
referenceReferenceno
networkstringno1 to 64 characters
chosenany JSON valuenoOn a record with no claim: the option the payment paid, as issued, from which its read keys are taken.
receiptany JSON valuenoOn a confirm-only channel pairing's paid report: the receipt its opening answered, from which the channel is read.
requestRequestCommitmentno

ReportClosed

A channel pairing's close: the close transaction, read before the record is closed.

An object. A member not listed here is refused.

FieldTypeRequiredConstraintsDescription
atrHashAtrHashInputyes
pairingPairingIdyes
state"closed"yes
referenceReferenceyes
networkstringno1 to 64 characters
chosenany JSON valueno

Channel

An object. A member not listed here is refused.

FieldTypeRequiredConstraintsDescription
networkstringyes
channelstringyes
untilstring or nullyesformat date-timeThe rail's deadline for the channel, or null when the rail gives none.
closedbooleanyes

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.

FieldTypeRequiredConstraintsDescription
state"required", "settling", "recorded"yes
networkstring or nullyes
transactionstring or nullyes

RecordView

An object. A member not listed here is refused.

FieldTypeRequiredConstraintsDescription
atrHashAtrHashyes
state"issued", "settling", "paid", "closed"yes
expiresAtstringyesformat date-time
settlementnull or objectyes
provesProvesyes
agreementAgreement or nullyes
channelChannel or nullyes

Refusal

An object. A member not listed here is refused.

FieldTypeRequiredConstraintsDescription
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
sentencestringyes
correlationIdstringyesat least 1 character
Edit on GitHub

Last updated on

On this page