Skip to main content
POST
Create a purchase quote

Authorizations

DPoP
string
header
required

Per-request RFC 9449 DPoP proof signed with ES256. Protected requests use Authorization: DPoP your_access_token_here. Create a new proof for the exact method and normalized target URI, and include the server nonce when challenged.

Authorization
string
header
required

OAuth 2.0 with RFC 9700 security practices. Discover exact environment endpoints from /.well-known/openid-configuration and /.well-known/oauth-authorization-server, and discover the resource from /.well-known/oauth-protected-resource. Authorization-code clients use PKCE S256, the exact environment resource, nonce with openid, and DPoP binding. Confidential clients also require PAR and private_key_jwt. Access and refresh tokens are sender-constrained with DPoP. purchases:execute is unavailable and omitted from this scope registry.

Headers

X-Request-Id
string

Optional caller request identifier. Unsafe values are replaced with a generated UUID.

Pattern: ^[A-Za-z0-9._~-]{8,128}$
Idempotency-Key
string
required

A new 256-bit random value encoded as 43 unpadded base64url characters. Reuse it only for the same request intent.

Pattern: ^[A-Za-z0-9_-]{43}$

Body

application/json

A request to observe current economics for one catalog service.

service_id
string
required

Stable public marketplace service identifier.

Required string length: 1 - 255
Pattern: ^[A-Za-z0-9][A-Za-z0-9._-]*$

Response

The durable non-executable purchase quote.

A five-minute non-executable catalog observation without provider references.

id
string<uuid>
required

Gateway-owned durable quote identifier.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
service_id
string
required

Stable public marketplace service identifier.

Required string length: 1 - 255
Pattern: ^[A-Za-z0-9][A-Za-z0-9._-]*$
capability
string
required

Stable public service capability.

Required string length: 1 - 255
Pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]*$
price
object
required

Observed catalog price.

available
boolean
required

Whether the catalog service was currently routable.

unavailable_reason
string | null
required

Safe unavailability reason, or null when available.

Pattern: ^[a-z][a-z0-9_]{0,99}$
executable
boolean
required

Always false while exact purchase execution is blocked.

quoted_at
string<date-time>
required

Local time at which the catalog economics were observed.

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
expires_at
string<date-time>
required

Local quote expiry exactly five minutes after observation.

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$