{"openapi":"3.1.0","info":{"title":"Integra Lens Merch Shop","version":"1.0.0","description":"Official merchandise for Integra Lens and the Legal Context Protocol, printed to order. For demonstration only. This transaction runs on a test network with test money, and has no value. Every purchase is a transaction on Base Sepolia (`eip155:84532`), a test network, paid in its test USDC to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`, and makes its own agreement, whose hash the payment carries. The doors over HTTP: each offer's door, paid by x402 or, where its offers say so, by MPP's `evm` method; and UCP's checkout (UCP 2026-08-25, https://ucp.dev/2026-08-25/services/shopping/rest.openapi.json), paid through the x402 payment handler `com.integraledger.lcp.x402` its profile declares at https://integra-lens-merch-live.demos.integraledger.net/.well-known/ucp. MCP is at https://integra-lens-merch-live.demos.integraledger.net/mcp. How to buy, in prose: https://integra-lens-merch-live.demos.integraledger.net/llms.txt."},"servers":[{"url":"https://integra-lens-merch-live.demos.integraledger.net"}],"x-service-info":{"categories":["commerce"],"docs":{"homepage":"https://integra-lens-merch-live.demos.integraledger.net/","llms":"https://integra-lens-merch-live.demos.integraledger.net/llms.txt","apiReference":"https://integra-lens-merch-live.demos.integraledger.net/agents"}},"paths":{"/buy/lcp-logo":{"get":{"operationId":"buy_lcp_logo","summary":"Buy LCP logo (SVG)","description":"The Legal Context Protocol mark as a vector SVG file, free to download under its own licence. One cent covers the rail's payment anchor; the logo itself costs nothing. $0.01, paid as 0.000001 USDC. Paid when bought (x402 `exact`). Paid by x402 or by MPP on Base Sepolia (`eip155:84532`). For demonstration only. This transaction runs on a test network with test money, and has no value.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The signed x402 payment, base64, on the request that repeats the one answered 402.","schema":{"type":"string"}}],"x-payment-info":{"offers":[{"intent":"charge","method":"x402","amount":"1","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"LCP logo (SVG): $0.01, paid as 0.000001 USDC. x402 `exact` on Base Sepolia (`eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."},{"intent":"charge","method":"evm","amount":"1","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"LCP logo (SVG): $0.01, paid as 0.000001 USDC. MPP `evm` `charge`, credential `authorization` (EIP-3009), on Base Sepolia (chain id 84532, `eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."}]},"responses":{"200":{"description":"Paid and delivered. `PAYMENT-RESPONSE` holds the x402 settlement, base64, or `Payment-Receipt` MPP's receipt, base64url, for a payment made with MPP; the body holds the delivery and the proof's address.","headers":{"PAYMENT-RESPONSE":{"schema":{"type":"string"}},"Payment-Receipt":{"schema":{"type":"string"}}}},"202":{"description":"The payment is sent and not yet confirmed. Send the same request again, or ask the proof's record."},"400":{"description":"Refused: the request lacks what the offer asks for, or is not as this operation says."},"402":{"description":"Payment required. `PAYMENT-REQUIRED` holds the x402 version 2 `PaymentRequired`, base64; the body holds it too. Its `extensions.legalContext.info` holds the agreement's hash H and its link: fetch the link, hash the bytes with SHA-256, and sign only if they match. Send the same request again with `PAYMENT-SIGNATURE`. The same answer carries MPP's challenge, `WWW-Authenticate: Payment … method=\"evm\", intent=\"charge\"`, for the same amount of the same token to the same payee, with an agreement of its own: its `opaque` (base64url JSON) holds `legalContext`, `lcp:sha256:` and that agreement's H, and `legalContextUrl`, its link. Check it the same way, and pay with `Authorization: Payment <credential>`, an `authorization` credential (EIP-3009) as `mppx` signs it. Pay one challenge, not both.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"}},"WWW-Authenticate":{"description":"MPP's `Payment` challenge, method `evm`, intent `charge`.","schema":{"type":"string"}}}}}},"post":{"operationId":"buy_lcp_logo_post","summary":"Buy LCP logo (SVG)","description":"The Legal Context Protocol mark as a vector SVG file, free to download under its own licence. One cent covers the rail's payment anchor; the logo itself costs nothing. $0.01, paid as 0.000001 USDC. Paid when bought (x402 `exact`). Paid by x402 or by MPP on Base Sepolia (`eip155:84532`). For demonstration only. This transaction runs on a test network with test money, and has no value.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The signed x402 payment, base64, on the request that repeats the one answered 402.","schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":[],"properties":{}},"example":{}}}},"x-payment-info":{"offers":[{"intent":"charge","method":"x402","amount":"1","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"LCP logo (SVG): $0.01, paid as 0.000001 USDC. x402 `exact` on Base Sepolia (`eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."},{"intent":"charge","method":"evm","amount":"1","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"LCP logo (SVG): $0.01, paid as 0.000001 USDC. MPP `evm` `charge`, credential `authorization` (EIP-3009), on Base Sepolia (chain id 84532, `eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."}]},"responses":{"200":{"description":"Paid and delivered. `PAYMENT-RESPONSE` holds the x402 settlement, base64, or `Payment-Receipt` MPP's receipt, base64url, for a payment made with MPP; the body holds the delivery and the proof's address.","headers":{"PAYMENT-RESPONSE":{"schema":{"type":"string"}},"Payment-Receipt":{"schema":{"type":"string"}}}},"202":{"description":"The payment is sent and not yet confirmed. Send the same request again, or ask the proof's record."},"400":{"description":"Refused: the request lacks what the offer asks for, or is not as this operation says."},"402":{"description":"Payment required. `PAYMENT-REQUIRED` holds the x402 version 2 `PaymentRequired`, base64; the body holds it too. Its `extensions.legalContext.info` holds the agreement's hash H and its link: fetch the link, hash the bytes with SHA-256, and sign only if they match. Send the same request again with `PAYMENT-SIGNATURE`. The same answer carries MPP's challenge, `WWW-Authenticate: Payment … method=\"evm\", intent=\"charge\"`, for the same amount of the same token to the same payee, with an agreement of its own: its `opaque` (base64url JSON) holds `legalContext`, `lcp:sha256:` and that agreement's H, and `legalContextUrl`, its link. Check it the same way, and pay with `Authorization: Payment <credential>`, an `authorization` credential (EIP-3009) as `mppx` signs it. Pay one challenge, not both.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"}},"WWW-Authenticate":{"description":"MPP's `Payment` challenge, method `evm`, intent `charge`.","schema":{"type":"string"}}}}}}},"/buy/lens-tee":{"post":{"operationId":"buy_lens_tee_post","summary":"Buy Integra Lens t-shirt","description":"Heavyweight cotton crew-neck tee with the Integra Lens mark on the chest. White or navy, sizes S to 2XL. $28.00, paid as 0.0028 USDC. Paid when bought (x402 `exact`). Asks for: name, address, size, colour. Paid by x402 or by MPP on Base Sepolia (`eip155:84532`). For demonstration only. This transaction runs on a test network with test money, and has no value.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The signed x402 payment, base64, on the request that repeats the one answered 402.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["with"],"properties":{"with":{"type":"object","additionalProperties":false,"required":["name","address","size","colour"],"properties":{"name":{"type":"string","minLength":1,"maxLength":1000},"address":{"type":"string","minLength":1,"maxLength":1000},"size":{"type":"string","minLength":1,"maxLength":1000},"colour":{"type":"string","minLength":1,"maxLength":1000}},"description":"What the offer asks for. It is written into the agreement, which is public."},"quote":{"type":"string","description":"An agreed price's negotiation id, from the negotiation."}}},"example":{"with":{"name":"A. Buyer","address":"1 Example Street, Exampletown","size":"An example size","colour":"An example colour"}}}}},"x-payment-info":{"offers":[{"intent":"charge","method":"x402","amount":"2800","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"Integra Lens t-shirt: $28.00, paid as 0.0028 USDC. x402 `exact` on Base Sepolia (`eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."},{"intent":"charge","method":"evm","amount":"2800","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"Integra Lens t-shirt: $28.00, paid as 0.0028 USDC. MPP `evm` `charge`, credential `authorization` (EIP-3009), on Base Sepolia (chain id 84532, `eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."}]},"responses":{"200":{"description":"Paid and delivered. `PAYMENT-RESPONSE` holds the x402 settlement, base64, or `Payment-Receipt` MPP's receipt, base64url, for a payment made with MPP; the body holds the delivery and the proof's address.","headers":{"PAYMENT-RESPONSE":{"schema":{"type":"string"}},"Payment-Receipt":{"schema":{"type":"string"}}}},"202":{"description":"The payment is sent and not yet confirmed. Send the same request again, or ask the proof's record."},"400":{"description":"Refused: the request lacks what the offer asks for, or is not as this operation says."},"402":{"description":"Payment required. `PAYMENT-REQUIRED` holds the x402 version 2 `PaymentRequired`, base64; the body holds it too. Its `extensions.legalContext.info` holds the agreement's hash H and its link: fetch the link, hash the bytes with SHA-256, and sign only if they match. Send the same request again with `PAYMENT-SIGNATURE`. The same answer carries MPP's challenge, `WWW-Authenticate: Payment … method=\"evm\", intent=\"charge\"`, for the same amount of the same token to the same payee, with an agreement of its own: its `opaque` (base64url JSON) holds `legalContext`, `lcp:sha256:` and that agreement's H, and `legalContextUrl`, its link. Check it the same way, and pay with `Authorization: Payment <credential>`, an `authorization` credential (EIP-3009) as `mppx` signs it. Pay one challenge, not both.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"}},"WWW-Authenticate":{"description":"MPP's `Payment` challenge, method `evm`, intent `charge`.","schema":{"type":"string"}}}}}}},"/buy/lcp-tee":{"post":{"operationId":"buy_lcp_tee_post","summary":"Buy LCP t-shirt","description":"Heavyweight cotton crew-neck tee with the Legal Context Protocol mark on the chest. White, heather grey or navy, sizes S to 2XL. $28.00, paid as 0.0028 USDC. Paid when bought (x402 `exact`). Asks for: name, address, size, colour. Paid by x402 or by MPP on Base Sepolia (`eip155:84532`). For demonstration only. This transaction runs on a test network with test money, and has no value.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The signed x402 payment, base64, on the request that repeats the one answered 402.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["with"],"properties":{"with":{"type":"object","additionalProperties":false,"required":["name","address","size","colour"],"properties":{"name":{"type":"string","minLength":1,"maxLength":1000},"address":{"type":"string","minLength":1,"maxLength":1000},"size":{"type":"string","minLength":1,"maxLength":1000},"colour":{"type":"string","minLength":1,"maxLength":1000}},"description":"What the offer asks for. It is written into the agreement, which is public."},"quote":{"type":"string","description":"An agreed price's negotiation id, from the negotiation."}}},"example":{"with":{"name":"A. Buyer","address":"1 Example Street, Exampletown","size":"An example size","colour":"An example colour"}}}}},"x-payment-info":{"offers":[{"intent":"charge","method":"x402","amount":"2800","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"LCP t-shirt: $28.00, paid as 0.0028 USDC. x402 `exact` on Base Sepolia (`eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."},{"intent":"charge","method":"evm","amount":"2800","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"LCP t-shirt: $28.00, paid as 0.0028 USDC. MPP `evm` `charge`, credential `authorization` (EIP-3009), on Base Sepolia (chain id 84532, `eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."}]},"responses":{"200":{"description":"Paid and delivered. `PAYMENT-RESPONSE` holds the x402 settlement, base64, or `Payment-Receipt` MPP's receipt, base64url, for a payment made with MPP; the body holds the delivery and the proof's address.","headers":{"PAYMENT-RESPONSE":{"schema":{"type":"string"}},"Payment-Receipt":{"schema":{"type":"string"}}}},"202":{"description":"The payment is sent and not yet confirmed. Send the same request again, or ask the proof's record."},"400":{"description":"Refused: the request lacks what the offer asks for, or is not as this operation says."},"402":{"description":"Payment required. `PAYMENT-REQUIRED` holds the x402 version 2 `PaymentRequired`, base64; the body holds it too. Its `extensions.legalContext.info` holds the agreement's hash H and its link: fetch the link, hash the bytes with SHA-256, and sign only if they match. Send the same request again with `PAYMENT-SIGNATURE`. The same answer carries MPP's challenge, `WWW-Authenticate: Payment … method=\"evm\", intent=\"charge\"`, for the same amount of the same token to the same payee, with an agreement of its own: its `opaque` (base64url JSON) holds `legalContext`, `lcp:sha256:` and that agreement's H, and `legalContextUrl`, its link. Check it the same way, and pay with `Authorization: Payment <credential>`, an `authorization` credential (EIP-3009) as `mppx` signs it. Pay one challenge, not both.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"}},"WWW-Authenticate":{"description":"MPP's `Payment` challenge, method `evm`, intent `charge`.","schema":{"type":"string"}}}}}}},"/buy/lens-mug":{"post":{"operationId":"buy_lens_mug_post","summary":"Buy Integra Lens mug, 11 oz","description":"Glossy white ceramic mug with the Integra Lens mark on both sides. Dishwasher and microwave safe. $16.00, paid as 0.0016 USDC. Paid when bought (x402 `exact`). Asks for: name, address. Paid by x402 or by MPP on Base Sepolia (`eip155:84532`). For demonstration only. This transaction runs on a test network with test money, and has no value.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The signed x402 payment, base64, on the request that repeats the one answered 402.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["with"],"properties":{"with":{"type":"object","additionalProperties":false,"required":["name","address"],"properties":{"name":{"type":"string","minLength":1,"maxLength":1000},"address":{"type":"string","minLength":1,"maxLength":1000}},"description":"What the offer asks for. It is written into the agreement, which is public."},"quote":{"type":"string","description":"An agreed price's negotiation id, from the negotiation."}}},"example":{"with":{"name":"A. Buyer","address":"1 Example Street, Exampletown"}}}}},"x-payment-info":{"offers":[{"intent":"charge","method":"x402","amount":"1600","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"Integra Lens mug, 11 oz: $16.00, paid as 0.0016 USDC. x402 `exact` on Base Sepolia (`eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."},{"intent":"charge","method":"evm","amount":"1600","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"Integra Lens mug, 11 oz: $16.00, paid as 0.0016 USDC. MPP `evm` `charge`, credential `authorization` (EIP-3009), on Base Sepolia (chain id 84532, `eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."}]},"responses":{"200":{"description":"Paid and delivered. `PAYMENT-RESPONSE` holds the x402 settlement, base64, or `Payment-Receipt` MPP's receipt, base64url, for a payment made with MPP; the body holds the delivery and the proof's address.","headers":{"PAYMENT-RESPONSE":{"schema":{"type":"string"}},"Payment-Receipt":{"schema":{"type":"string"}}}},"202":{"description":"The payment is sent and not yet confirmed. Send the same request again, or ask the proof's record."},"400":{"description":"Refused: the request lacks what the offer asks for, or is not as this operation says."},"402":{"description":"Payment required. `PAYMENT-REQUIRED` holds the x402 version 2 `PaymentRequired`, base64; the body holds it too. Its `extensions.legalContext.info` holds the agreement's hash H and its link: fetch the link, hash the bytes with SHA-256, and sign only if they match. Send the same request again with `PAYMENT-SIGNATURE`. The same answer carries MPP's challenge, `WWW-Authenticate: Payment … method=\"evm\", intent=\"charge\"`, for the same amount of the same token to the same payee, with an agreement of its own: its `opaque` (base64url JSON) holds `legalContext`, `lcp:sha256:` and that agreement's H, and `legalContextUrl`, its link. Check it the same way, and pay with `Authorization: Payment <credential>`, an `authorization` credential (EIP-3009) as `mppx` signs it. Pay one challenge, not both.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"}},"WWW-Authenticate":{"description":"MPP's `Payment` challenge, method `evm`, intent `charge`.","schema":{"type":"string"}}}}}}},"/buy/lcp-mug":{"post":{"operationId":"buy_lcp_mug_post","summary":"Buy LCP mug, 11 oz","description":"Glossy white ceramic mug with the Legal Context Protocol mark on both sides. Dishwasher and microwave safe. $16.00, paid as 0.0016 USDC. Paid when bought (x402 `exact`). Asks for: name, address. Paid by x402 or by MPP on Base Sepolia (`eip155:84532`). For demonstration only. This transaction runs on a test network with test money, and has no value.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The signed x402 payment, base64, on the request that repeats the one answered 402.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["with"],"properties":{"with":{"type":"object","additionalProperties":false,"required":["name","address"],"properties":{"name":{"type":"string","minLength":1,"maxLength":1000},"address":{"type":"string","minLength":1,"maxLength":1000}},"description":"What the offer asks for. It is written into the agreement, which is public."},"quote":{"type":"string","description":"An agreed price's negotiation id, from the negotiation."}}},"example":{"with":{"name":"A. Buyer","address":"1 Example Street, Exampletown"}}}}},"x-payment-info":{"offers":[{"intent":"charge","method":"x402","amount":"1600","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"LCP mug, 11 oz: $16.00, paid as 0.0016 USDC. x402 `exact` on Base Sepolia (`eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."},{"intent":"charge","method":"evm","amount":"1600","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"LCP mug, 11 oz: $16.00, paid as 0.0016 USDC. MPP `evm` `charge`, credential `authorization` (EIP-3009), on Base Sepolia (chain id 84532, `eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."}]},"responses":{"200":{"description":"Paid and delivered. `PAYMENT-RESPONSE` holds the x402 settlement, base64, or `Payment-Receipt` MPP's receipt, base64url, for a payment made with MPP; the body holds the delivery and the proof's address.","headers":{"PAYMENT-RESPONSE":{"schema":{"type":"string"}},"Payment-Receipt":{"schema":{"type":"string"}}}},"202":{"description":"The payment is sent and not yet confirmed. Send the same request again, or ask the proof's record."},"400":{"description":"Refused: the request lacks what the offer asks for, or is not as this operation says."},"402":{"description":"Payment required. `PAYMENT-REQUIRED` holds the x402 version 2 `PaymentRequired`, base64; the body holds it too. Its `extensions.legalContext.info` holds the agreement's hash H and its link: fetch the link, hash the bytes with SHA-256, and sign only if they match. Send the same request again with `PAYMENT-SIGNATURE`. The same answer carries MPP's challenge, `WWW-Authenticate: Payment … method=\"evm\", intent=\"charge\"`, for the same amount of the same token to the same payee, with an agreement of its own: its `opaque` (base64url JSON) holds `legalContext`, `lcp:sha256:` and that agreement's H, and `legalContextUrl`, its link. Check it the same way, and pay with `Authorization: Payment <credential>`, an `authorization` credential (EIP-3009) as `mppx` signs it. Pay one challenge, not both.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"}},"WWW-Authenticate":{"description":"MPP's `Payment` challenge, method `evm`, intent `charge`.","schema":{"type":"string"}}}}}}},"/buy/lcp-sticker":{"post":{"operationId":"buy_lcp_sticker_post","summary":"Buy LCP holographic sticker, 3 inch","description":"Three-inch die-cut vinyl sticker with the Legal Context Protocol mark, in rainbow holographic finish. Weatherproof for a laptop or a flask. $5.00, paid as 0.0005 USDC. Paid when bought (x402 `exact`). Asks for: name, address. Paid by x402 or by MPP on Base Sepolia (`eip155:84532`). For demonstration only. This transaction runs on a test network with test money, and has no value.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The signed x402 payment, base64, on the request that repeats the one answered 402.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["with"],"properties":{"with":{"type":"object","additionalProperties":false,"required":["name","address"],"properties":{"name":{"type":"string","minLength":1,"maxLength":1000},"address":{"type":"string","minLength":1,"maxLength":1000}},"description":"What the offer asks for. It is written into the agreement, which is public."},"quote":{"type":"string","description":"An agreed price's negotiation id, from the negotiation."}}},"example":{"with":{"name":"A. Buyer","address":"1 Example Street, Exampletown"}}}}},"x-payment-info":{"offers":[{"intent":"charge","method":"x402","amount":"500","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"LCP holographic sticker, 3 inch: $5.00, paid as 0.0005 USDC. x402 `exact` on Base Sepolia (`eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."},{"intent":"charge","method":"evm","amount":"500","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"LCP holographic sticker, 3 inch: $5.00, paid as 0.0005 USDC. MPP `evm` `charge`, credential `authorization` (EIP-3009), on Base Sepolia (chain id 84532, `eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."}]},"responses":{"200":{"description":"Paid and delivered. `PAYMENT-RESPONSE` holds the x402 settlement, base64, or `Payment-Receipt` MPP's receipt, base64url, for a payment made with MPP; the body holds the delivery and the proof's address.","headers":{"PAYMENT-RESPONSE":{"schema":{"type":"string"}},"Payment-Receipt":{"schema":{"type":"string"}}}},"202":{"description":"The payment is sent and not yet confirmed. Send the same request again, or ask the proof's record."},"400":{"description":"Refused: the request lacks what the offer asks for, or is not as this operation says."},"402":{"description":"Payment required. `PAYMENT-REQUIRED` holds the x402 version 2 `PaymentRequired`, base64; the body holds it too. Its `extensions.legalContext.info` holds the agreement's hash H and its link: fetch the link, hash the bytes with SHA-256, and sign only if they match. Send the same request again with `PAYMENT-SIGNATURE`. The same answer carries MPP's challenge, `WWW-Authenticate: Payment … method=\"evm\", intent=\"charge\"`, for the same amount of the same token to the same payee, with an agreement of its own: its `opaque` (base64url JSON) holds `legalContext`, `lcp:sha256:` and that agreement's H, and `legalContextUrl`, its link. Check it the same way, and pay with `Authorization: Payment <credential>`, an `authorization` credential (EIP-3009) as `mppx` signs it. Pay one challenge, not both.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"}},"WWW-Authenticate":{"description":"MPP's `Payment` challenge, method `evm`, intent `charge`.","schema":{"type":"string"}}}}}}},"/buy/lens-sticker":{"post":{"operationId":"buy_lens_sticker_post","summary":"Buy Integra Lens matte sticker, 3 inch","description":"Three-inch die-cut vinyl sticker with the Integra Lens mark, in a matte finish. Weatherproof for a laptop or a flask. $4.00, paid as 0.0004 USDC. Paid when bought (x402 `exact`). Asks for: name, address. Paid by x402 or by MPP on Base Sepolia (`eip155:84532`). For demonstration only. This transaction runs on a test network with test money, and has no value.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The signed x402 payment, base64, on the request that repeats the one answered 402.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["with"],"properties":{"with":{"type":"object","additionalProperties":false,"required":["name","address"],"properties":{"name":{"type":"string","minLength":1,"maxLength":1000},"address":{"type":"string","minLength":1,"maxLength":1000}},"description":"What the offer asks for. It is written into the agreement, which is public."},"quote":{"type":"string","description":"An agreed price's negotiation id, from the negotiation."}}},"example":{"with":{"name":"A. Buyer","address":"1 Example Street, Exampletown"}}}}},"x-payment-info":{"offers":[{"intent":"charge","method":"x402","amount":"400","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"Integra Lens matte sticker, 3 inch: $4.00, paid as 0.0004 USDC. x402 `exact` on Base Sepolia (`eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."},{"intent":"charge","method":"evm","amount":"400","currency":"0x036CbD53842c5426634e7929541eC2318f3dCF7e","description":"Integra Lens matte sticker, 3 inch: $4.00, paid as 0.0004 USDC. MPP `evm` `charge`, credential `authorization` (EIP-3009), on Base Sepolia (chain id 84532, `eip155:84532`), in USDC (`0x036CbD53842c5426634e7929541eC2318f3dCF7e`), paid to the payee `0x4F098166790DeaBb92c2Ef4516D8C1ab88A12C6B`."}]},"responses":{"200":{"description":"Paid and delivered. `PAYMENT-RESPONSE` holds the x402 settlement, base64, or `Payment-Receipt` MPP's receipt, base64url, for a payment made with MPP; the body holds the delivery and the proof's address.","headers":{"PAYMENT-RESPONSE":{"schema":{"type":"string"}},"Payment-Receipt":{"schema":{"type":"string"}}}},"202":{"description":"The payment is sent and not yet confirmed. Send the same request again, or ask the proof's record."},"400":{"description":"Refused: the request lacks what the offer asks for, or is not as this operation says."},"402":{"description":"Payment required. `PAYMENT-REQUIRED` holds the x402 version 2 `PaymentRequired`, base64; the body holds it too. Its `extensions.legalContext.info` holds the agreement's hash H and its link: fetch the link, hash the bytes with SHA-256, and sign only if they match. Send the same request again with `PAYMENT-SIGNATURE`. The same answer carries MPP's challenge, `WWW-Authenticate: Payment … method=\"evm\", intent=\"charge\"`, for the same amount of the same token to the same payee, with an agreement of its own: its `opaque` (base64url JSON) holds `legalContext`, `lcp:sha256:` and that agreement's H, and `legalContextUrl`, its link. Check it the same way, and pay with `Authorization: Payment <credential>`, an `authorization` credential (EIP-3009) as `mppx` signs it. Pay one challenge, not both.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"}},"WWW-Authenticate":{"description":"MPP's `Payment` challenge, method `evm`, intent `charge`.","schema":{"type":"string"}}}}}}},"/test/buy/lens-tee":{"post":{"operationId":"test_buy_lens_tee","summary":"Test checkout for Integra Lens t-shirt","description":"A checkout for testing an agent: its 402 advertises a hash with one character changed, so an agent that checks signs nothing. Nothing is sold here.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["with"],"properties":{"with":{"type":"object","additionalProperties":false,"required":["name","address","size","colour"],"properties":{"name":{"type":"string","minLength":1,"maxLength":1000},"address":{"type":"string","minLength":1,"maxLength":1000},"size":{"type":"string","minLength":1,"maxLength":1000},"colour":{"type":"string","minLength":1,"maxLength":1000}},"description":"What the offer asks for. It is written into the agreement, which is public."},"quote":{"type":"string","description":"An agreed price's negotiation id, from the negotiation."}}},"example":{"with":{"name":"A. Buyer","address":"1 Example Street, Exampletown","size":"An example size","colour":"An example colour"}}}}},"responses":{"402":{"description":"The test checkout's challenge, whose hash does not match its agreement."}}}},"/negotiate/lens-tee":{"post":{"operationId":"negotiate_lens_tee","summary":"Negotiate the price of Integra Lens t-shirt","description":"Propose a price in dollars and cents. An accepted price stands for one purchase, named by the negotiation's id: as `quote` at the offer's door, or as a discount code in a UCP checkout.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"type":"string","pattern":"^(?:[1-9][0-9]{0,6}\\.[0-9]{2}|0\\.(?:0[1-9]|[1-9][0-9]))$","description":"The price the buyer proposes, in dollars and cents.","examples":["18.00","2.30"]},"text":{"type":"string","maxLength":1000,"description":"The buyer's words."},"negotiation":{"description":"The negotiation to continue; absent on the first round.","type":"string","pattern":"^neg_[A-Za-z0-9_-]{16,64}$"}},"required":["amount","text"],"additionalProperties":false}}}},"responses":{"200":{"description":"The seller's answer: accept, counter or decline, and the negotiation's id."}}}},"/test/buy/lcp-tee":{"post":{"operationId":"test_buy_lcp_tee","summary":"Test checkout for LCP t-shirt","description":"A checkout for testing an agent: its 402 advertises a hash with one character changed, so an agent that checks signs nothing. Nothing is sold here.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["with"],"properties":{"with":{"type":"object","additionalProperties":false,"required":["name","address","size","colour"],"properties":{"name":{"type":"string","minLength":1,"maxLength":1000},"address":{"type":"string","minLength":1,"maxLength":1000},"size":{"type":"string","minLength":1,"maxLength":1000},"colour":{"type":"string","minLength":1,"maxLength":1000}},"description":"What the offer asks for. It is written into the agreement, which is public."},"quote":{"type":"string","description":"An agreed price's negotiation id, from the negotiation."}}},"example":{"with":{"name":"A. Buyer","address":"1 Example Street, Exampletown","size":"An example size","colour":"An example colour"}}}}},"responses":{"402":{"description":"The test checkout's challenge, whose hash does not match its agreement."}}}},"/negotiate/lcp-tee":{"post":{"operationId":"negotiate_lcp_tee","summary":"Negotiate the price of LCP t-shirt","description":"Propose a price in dollars and cents. An accepted price stands for one purchase, named by the negotiation's id: as `quote` at the offer's door, or as a discount code in a UCP checkout.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"type":"string","pattern":"^(?:[1-9][0-9]{0,6}\\.[0-9]{2}|0\\.(?:0[1-9]|[1-9][0-9]))$","description":"The price the buyer proposes, in dollars and cents.","examples":["18.00","2.30"]},"text":{"type":"string","maxLength":1000,"description":"The buyer's words."},"negotiation":{"description":"The negotiation to continue; absent on the first round.","type":"string","pattern":"^neg_[A-Za-z0-9_-]{16,64}$"}},"required":["amount","text"],"additionalProperties":false}}}},"responses":{"200":{"description":"The seller's answer: accept, counter or decline, and the negotiation's id."}}}},"/test/buy/lens-mug":{"post":{"operationId":"test_buy_lens_mug","summary":"Test checkout for Integra Lens mug, 11 oz","description":"A checkout for testing an agent: its 402 advertises a hash with one character changed, so an agent that checks signs nothing. Nothing is sold here.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["with"],"properties":{"with":{"type":"object","additionalProperties":false,"required":["name","address"],"properties":{"name":{"type":"string","minLength":1,"maxLength":1000},"address":{"type":"string","minLength":1,"maxLength":1000}},"description":"What the offer asks for. It is written into the agreement, which is public."},"quote":{"type":"string","description":"An agreed price's negotiation id, from the negotiation."}}},"example":{"with":{"name":"A. Buyer","address":"1 Example Street, Exampletown"}}}}},"responses":{"402":{"description":"The test checkout's challenge, whose hash does not match its agreement."}}}},"/negotiate/lens-mug":{"post":{"operationId":"negotiate_lens_mug","summary":"Negotiate the price of Integra Lens mug, 11 oz","description":"Propose a price in dollars and cents. An accepted price stands for one purchase, named by the negotiation's id: as `quote` at the offer's door, or as a discount code in a UCP checkout.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"type":"string","pattern":"^(?:[1-9][0-9]{0,6}\\.[0-9]{2}|0\\.(?:0[1-9]|[1-9][0-9]))$","description":"The price the buyer proposes, in dollars and cents.","examples":["18.00","2.30"]},"text":{"type":"string","maxLength":1000,"description":"The buyer's words."},"negotiation":{"description":"The negotiation to continue; absent on the first round.","type":"string","pattern":"^neg_[A-Za-z0-9_-]{16,64}$"}},"required":["amount","text"],"additionalProperties":false}}}},"responses":{"200":{"description":"The seller's answer: accept, counter or decline, and the negotiation's id."}}}},"/test/buy/lcp-mug":{"post":{"operationId":"test_buy_lcp_mug","summary":"Test checkout for LCP mug, 11 oz","description":"A checkout for testing an agent: its 402 advertises a hash with one character changed, so an agent that checks signs nothing. Nothing is sold here.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["with"],"properties":{"with":{"type":"object","additionalProperties":false,"required":["name","address"],"properties":{"name":{"type":"string","minLength":1,"maxLength":1000},"address":{"type":"string","minLength":1,"maxLength":1000}},"description":"What the offer asks for. It is written into the agreement, which is public."},"quote":{"type":"string","description":"An agreed price's negotiation id, from the negotiation."}}},"example":{"with":{"name":"A. Buyer","address":"1 Example Street, Exampletown"}}}}},"responses":{"402":{"description":"The test checkout's challenge, whose hash does not match its agreement."}}}},"/negotiate/lcp-mug":{"post":{"operationId":"negotiate_lcp_mug","summary":"Negotiate the price of LCP mug, 11 oz","description":"Propose a price in dollars and cents. An accepted price stands for one purchase, named by the negotiation's id: as `quote` at the offer's door, or as a discount code in a UCP checkout.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"type":"string","pattern":"^(?:[1-9][0-9]{0,6}\\.[0-9]{2}|0\\.(?:0[1-9]|[1-9][0-9]))$","description":"The price the buyer proposes, in dollars and cents.","examples":["18.00","2.30"]},"text":{"type":"string","maxLength":1000,"description":"The buyer's words."},"negotiation":{"description":"The negotiation to continue; absent on the first round.","type":"string","pattern":"^neg_[A-Za-z0-9_-]{16,64}$"}},"required":["amount","text"],"additionalProperties":false}}}},"responses":{"200":{"description":"The seller's answer: accept, counter or decline, and the negotiation's id."}}}},"/test/buy/lcp-sticker":{"post":{"operationId":"test_buy_lcp_sticker","summary":"Test checkout for LCP holographic sticker, 3 inch","description":"A checkout for testing an agent: its 402 advertises a hash with one character changed, so an agent that checks signs nothing. Nothing is sold here.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["with"],"properties":{"with":{"type":"object","additionalProperties":false,"required":["name","address"],"properties":{"name":{"type":"string","minLength":1,"maxLength":1000},"address":{"type":"string","minLength":1,"maxLength":1000}},"description":"What the offer asks for. It is written into the agreement, which is public."},"quote":{"type":"string","description":"An agreed price's negotiation id, from the negotiation."}}},"example":{"with":{"name":"A. Buyer","address":"1 Example Street, Exampletown"}}}}},"responses":{"402":{"description":"The test checkout's challenge, whose hash does not match its agreement."}}}},"/negotiate/lcp-sticker":{"post":{"operationId":"negotiate_lcp_sticker","summary":"Negotiate the price of LCP holographic sticker, 3 inch","description":"Propose a price in dollars and cents. An accepted price stands for one purchase, named by the negotiation's id: as `quote` at the offer's door, or as a discount code in a UCP checkout.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"type":"string","pattern":"^(?:[1-9][0-9]{0,6}\\.[0-9]{2}|0\\.(?:0[1-9]|[1-9][0-9]))$","description":"The price the buyer proposes, in dollars and cents.","examples":["18.00","2.30"]},"text":{"type":"string","maxLength":1000,"description":"The buyer's words."},"negotiation":{"description":"The negotiation to continue; absent on the first round.","type":"string","pattern":"^neg_[A-Za-z0-9_-]{16,64}$"}},"required":["amount","text"],"additionalProperties":false}}}},"responses":{"200":{"description":"The seller's answer: accept, counter or decline, and the negotiation's id."}}}},"/test/buy/lens-sticker":{"post":{"operationId":"test_buy_lens_sticker","summary":"Test checkout for Integra Lens matte sticker, 3 inch","description":"A checkout for testing an agent: its 402 advertises a hash with one character changed, so an agent that checks signs nothing. Nothing is sold here.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["with"],"properties":{"with":{"type":"object","additionalProperties":false,"required":["name","address"],"properties":{"name":{"type":"string","minLength":1,"maxLength":1000},"address":{"type":"string","minLength":1,"maxLength":1000}},"description":"What the offer asks for. It is written into the agreement, which is public."},"quote":{"type":"string","description":"An agreed price's negotiation id, from the negotiation."}}},"example":{"with":{"name":"A. Buyer","address":"1 Example Street, Exampletown"}}}}},"responses":{"402":{"description":"The test checkout's challenge, whose hash does not match its agreement."}}}},"/negotiate/lens-sticker":{"post":{"operationId":"negotiate_lens_sticker","summary":"Negotiate the price of Integra Lens matte sticker, 3 inch","description":"Propose a price in dollars and cents. An accepted price stands for one purchase, named by the negotiation's id: as `quote` at the offer's door, or as a discount code in a UCP checkout.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"type":"string","pattern":"^(?:[1-9][0-9]{0,6}\\.[0-9]{2}|0\\.(?:0[1-9]|[1-9][0-9]))$","description":"The price the buyer proposes, in dollars and cents.","examples":["18.00","2.30"]},"text":{"type":"string","maxLength":1000,"description":"The buyer's words."},"negotiation":{"description":"The negotiation to continue; absent on the first round.","type":"string","pattern":"^neg_[A-Za-z0-9_-]{16,64}$"}},"required":["amount","text"],"additionalProperties":false}}}},"responses":{"200":{"description":"The seller's answer: accept, counter or decline, and the negotiation's id."}}}},"/test/buy/lcp-logo":{"post":{"operationId":"test_buy_lcp_logo","summary":"Test checkout for LCP logo (SVG)","description":"A checkout for testing an agent: its 402 advertises a hash with one character changed, so an agent that checks signs nothing. Nothing is sold here.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":[],"properties":{}},"example":{}}}},"responses":{"402":{"description":"The test checkout's challenge, whose hash does not match its agreement."}}}},"/checkout-sessions":{"post":{"operationId":"ucp_create_checkout","summary":"Open a UCP checkout","description":"One line, one offer, quantity 1. At `ready_for_complete` the checkout's `ucp.payment_handlers[\"com.integraledger.lcp.x402\"]` declaration holds, as its `config`, the x402 `PaymentRequired` whose `extensions.legalContext` carries H, and its `links[]` the `legal_context` link titled `lcp:sha256:` and H. For demonstration only. This transaction runs on a test network with test money, and has no value.","externalDocs":{"url":"https://ucp.dev/2026-08-25/specification/shopping/checkout/rest"},"parameters":[{"$ref":"#/components/parameters/ucp_agent"},{"$ref":"#/components/parameters/idempotency_key"},{"$ref":"#/components/parameters/request_id"},{"$ref":"#/components/parameters/signature"},{"$ref":"#/components/parameters/signature_input"},{"$ref":"#/components/parameters/content_digest"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/checkout"}}}},"responses":{"201":{"description":"The checkout, or UCP's error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/checkout_response"}}}},"401":{"description":"The platform's signature is missing or does not verify against its profile's keys."},"409":{"description":"The idempotency key was used with another body."},"422":{"description":"The platform's profile is malformed, or its UCP version is not this shop's."},"424":{"description":"The platform's profile could not be fetched."}}}},"/checkout-sessions/{id}":{"parameters":[{"$ref":"#/components/parameters/checkout_id"}],"get":{"operationId":"ucp_get_checkout","summary":"Read a UCP checkout","description":"The checkout as it stands. For demonstration only. This transaction runs on a test network with test money, and has no value.","externalDocs":{"url":"https://ucp.dev/2026-08-25/specification/shopping/checkout/rest"},"parameters":[{"$ref":"#/components/parameters/ucp_agent"},{"$ref":"#/components/parameters/request_id"},{"$ref":"#/components/parameters/signature"},{"$ref":"#/components/parameters/signature_input"},{"$ref":"#/components/parameters/content_digest"}],"responses":{"200":{"description":"The checkout, or UCP's error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/checkout_response"}}}},"401":{"description":"The platform's signature is missing or does not verify against its profile's keys."},"409":{"description":"The idempotency key was used with another body."},"422":{"description":"The platform's profile is malformed, or its UCP version is not this shop's."},"424":{"description":"The platform's profile could not be fetched."}}},"put":{"operationId":"ucp_update_checkout","summary":"Update a UCP checkout","description":"The whole checkout, as it is to be. Each change of its terms issues a new agreement, with its own H. At `ready_for_complete` the checkout's `ucp.payment_handlers[\"com.integraledger.lcp.x402\"]` declaration holds, as its `config`, the x402 `PaymentRequired` whose `extensions.legalContext` carries H, and its `links[]` the `legal_context` link titled `lcp:sha256:` and H. For demonstration only. This transaction runs on a test network with test money, and has no value.","externalDocs":{"url":"https://ucp.dev/2026-08-25/specification/shopping/checkout/rest"},"parameters":[{"$ref":"#/components/parameters/ucp_agent"},{"$ref":"#/components/parameters/idempotency_key"},{"$ref":"#/components/parameters/request_id"},{"$ref":"#/components/parameters/signature"},{"$ref":"#/components/parameters/signature_input"},{"$ref":"#/components/parameters/content_digest"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/checkout"}}}},"responses":{"200":{"description":"The checkout, or UCP's error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/checkout_response"}}}},"401":{"description":"The platform's signature is missing or does not verify against its profile's keys."},"409":{"description":"The idempotency key was used with another body."},"422":{"description":"The platform's profile is malformed, or its UCP version is not this shop's."},"424":{"description":"The platform's profile could not be fetched."}}}},"/checkout-sessions/{id}/complete":{"parameters":[{"$ref":"#/components/parameters/checkout_id"}],"post":{"operationId":"ucp_complete_checkout","summary":"Complete a UCP checkout","description":"Pay it: `payment.instruments` holds one instrument through the handler's declaration (`handler_id` `lcp_x402`, `type` `x402`), whose `credential` is `{type: \"x402\", x402Version: 2, paymentPayload, paymentRequirements}`: the x402 payment signed for the option in the handler's `config`. A failed payment is a business outcome, `payment_failed`, not an error status. For demonstration only. This transaction runs on a test network with test money, and has no value.","externalDocs":{"url":"https://ucp.dev/2026-08-25/specification/shopping/checkout/rest"},"parameters":[{"$ref":"#/components/parameters/ucp_agent"},{"$ref":"#/components/parameters/idempotency_key"},{"$ref":"#/components/parameters/request_id"},{"$ref":"#/components/parameters/signature"},{"$ref":"#/components/parameters/signature_input"},{"$ref":"#/components/parameters/content_digest"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/checkout"}}}},"responses":{"200":{"description":"The checkout, or UCP's error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/checkout_response"}}}},"401":{"description":"The platform's signature is missing or does not verify against its profile's keys."},"409":{"description":"The idempotency key was used with another body."},"422":{"description":"The platform's profile is malformed, or its UCP version is not this shop's."},"424":{"description":"The platform's profile could not be fetched."}}}},"/checkout-sessions/{id}/cancel":{"parameters":[{"$ref":"#/components/parameters/checkout_id"}],"post":{"operationId":"ucp_cancel_checkout","summary":"Cancel a UCP checkout","description":"Cancel it before it is paid. For demonstration only. This transaction runs on a test network with test money, and has no value.","externalDocs":{"url":"https://ucp.dev/2026-08-25/specification/shopping/checkout/rest"},"parameters":[{"$ref":"#/components/parameters/ucp_agent"},{"$ref":"#/components/parameters/idempotency_key"},{"$ref":"#/components/parameters/request_id"},{"$ref":"#/components/parameters/signature"},{"$ref":"#/components/parameters/signature_input"},{"$ref":"#/components/parameters/content_digest"}],"responses":{"200":{"description":"The checkout, or UCP's error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/checkout_response"}}}},"401":{"description":"The platform's signature is missing or does not verify against its profile's keys."},"409":{"description":"The idempotency key was used with another body."},"422":{"description":"The platform's profile is malformed, or its UCP version is not this shop's."},"424":{"description":"The platform's profile could not be fetched."}}}},"/orders/{id}":{"parameters":[{"$ref":"#/components/parameters/order_id"}],"get":{"operationId":"ucp_get_order","summary":"Read a UCP order","description":"The order, to the platform whose checkout made it, when the request is signed with that platform's key. Anyone else is answered the kit's summary of the delivery: its state, size and hash, never what was bought. For demonstration only. This transaction runs on a test network with test money, and has no value.","externalDocs":{"url":"https://ucp.dev/2026-08-25/specification/shopping/order/rest"},"parameters":[{"$ref":"#/components/parameters/ucp_agent"},{"$ref":"#/components/parameters/request_id"},{"$ref":"#/components/parameters/signature"},{"$ref":"#/components/parameters/signature_input"},{"$ref":"#/components/parameters/content_digest"}],"responses":{"200":{"description":"The order, or UCP's error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/order_response"}}}},"401":{"description":"The platform's signature is missing or does not verify against its profile's keys."},"409":{"description":"The idempotency key was used with another body."},"422":{"description":"The platform's profile is malformed, or its UCP version is not this shop's."},"424":{"description":"The platform's profile could not be fetched."}}}}},"components":{"parameters":{"ucp_agent":{"name":"UCP-Agent","in":"header","required":true,"description":"Your platform's profile: `profile=\"<the URL of your /.well-known/ucp>\"` (RFC 8941 dictionary). This shop fetches it, and reads its capabilities and its order capability's `webhook_url`.","schema":{"type":"string"}},"idempotency_key":{"name":"Idempotency-Key","in":"header","required":true,"description":"A UUID. The same key with the same body answers what it answered; with another body, `409`. Kept for 24 hours.","schema":{"type":"string","format":"uuid"}},"request_id":{"name":"Request-Id","in":"header","required":false,"description":"A UUID, for tracing.","schema":{"type":"string","format":"uuid"}},"signature":{"name":"Signature","in":"header","required":false,"description":"RFC 9421 HTTP Message Signature by a key in your profile's `keys[]`.","schema":{"type":"string"}},"signature_input":{"name":"Signature-Input","in":"header","required":false,"schema":{"type":"string"}},"content_digest":{"name":"Content-Digest","in":"header","required":false,"schema":{"type":"string"}},"checkout_id":{"name":"id","in":"path","required":true,"description":"The checkout session's id.","schema":{"type":"string"}},"order_id":{"name":"id","in":"path","required":true,"description":"The order's id.","schema":{"type":"string"}}},"schemas":{"checkout":{"$ref":"https://ucp.dev/2026-08-25/schemas/shopping/checkout.json"},"order":{"$ref":"https://ucp.dev/2026-08-25/schemas/shopping/order.json"},"error_response":{"$ref":"https://ucp.dev/2026-08-25/schemas/common/types/error_response.json"},"checkout_response":{"oneOf":[{"$ref":"#/components/schemas/checkout"},{"$ref":"#/components/schemas/error_response"}]},"order_response":{"oneOf":[{"$ref":"#/components/schemas/order"},{"$ref":"#/components/schemas/error_response"}]}}}}