Rye

Rye Checkout Intents API

The Checkout Intents API from Rye — 6 operation(s) for checkout intents.

OpenAPI Specification

rye-checkout-intents-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Universal Checkout Betas Checkout Intents API
  version: 1.0.5
  description: 'Turn any product URL into a completed checkout. Instantly retrieve price, tax, and shipping for any product, and let users buy without ever leaving your native AI experience.


    View the [Rye API docs](https://docs.rye.com).'
  termsOfService: https://rye.com/terms-of-service
  license:
    name: UNLICENSED
  contact:
    name: Rye
    email: dev@rye.com
    url: https://docs.rye.com
servers:
- url: https://staging.api.rye.com
tags:
- name: Checkout Intents
paths:
  /api/v1/checkout-intents:
    get:
      operationId: ListCheckoutIntents
      responses:
        '200':
          description: Paginated checkout intents response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutIntentListResponse'
        '401':
          description: Authentication Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateError'
      description: 'Retrieve a paginated list of checkout intents


        Enables developers to query checkout intents associated with their account, with filters and cursor-based pagination.'
      summary: List checkout intents
      tags:
      - Checkout Intents
      security:
      - bearerAuth:
        - checkout_intents:read
      parameters:
      - description: Maximum number of results to return (default 100)
        in: query
        name: limit
        required: false
        schema:
          format: int32
          type: integer
          minimum: 1
          maximum: 100
        example: 20
      - in: query
        name: after
        required: false
        schema:
          type: string
      - in: query
        name: before
        required: false
        schema:
          type: string
      - in: query
        name: id
        required: false
        schema:
          default: []
          type: array
          items:
            type: string
      - in: query
        name: state
        required: false
        schema:
          default: []
          type: array
          items:
            $ref: '#/components/schemas/CheckoutIntentState'
      x-codeSamples:
      - lang: JavaScript
        source: "import CheckoutIntents from 'checkout-intents';\n\nconst client = new CheckoutIntents({\n  apiKey: process.env['CHECKOUT_INTENTS_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const checkoutIntent of client.checkoutIntents.list()) {\n  console.log(checkoutIntent);\n}"
      - lang: Python
        source: "import os\nfrom checkout_intents import CheckoutIntents\n\nclient = CheckoutIntents(\n    api_key=os.environ.get(\"CHECKOUT_INTENTS_API_KEY\"),  # This is the default and can be omitted\n)\npage = client.checkout_intents.list()\npage = page.data[0]\nprint(page)"
      - lang: Java
        source: "package com.rye.example;\n\nimport com.rye.client.CheckoutIntentsClient;\nimport com.rye.client.okhttp.CheckoutIntentsOkHttpClient;\nimport com.rye.models.checkoutintents.CheckoutIntentListPage;\nimport com.rye.models.checkoutintents.CheckoutIntentListParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        CheckoutIntentsClient client = CheckoutIntentsOkHttpClient.fromEnv();\n\n        CheckoutIntentListPage page = client.checkoutIntents().list();\n    }\n}"
      - lang: cURL
        source: "curl https://staging.api.rye.com/api/v1/checkout-intents \\\n    -H \"Authorization: Bearer $CHECKOUT_INTENTS_API_KEY\""
    post:
      operationId: CreateCheckoutIntent
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutIntent'
        '401':
          description: Authentication Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RuntimeError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AmazonUnavailableError'
      description: Create a checkout intent with the given request body.
      summary: Create checkout intent
      tags:
      - Checkout Intents
      security:
      - bearerAuth:
        - checkout_intents:write
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckoutIntentPostParams'
      x-codeSamples:
      - lang: JavaScript
        source: "import CheckoutIntents from 'checkout-intents';\n\nconst client = new CheckoutIntents({\n  apiKey: process.env['CHECKOUT_INTENTS_API_KEY'], // This is the default and can be omitted\n});\n\nconst checkoutIntent = await client.checkoutIntents.create({\n  buyer: {\n    address1: '123 Main St',\n    city: 'New York',\n    country: 'US',\n    email: 'john.doe@example.com',\n    firstName: 'John',\n    lastName: 'Doe',\n    phone: '1234567890',\n    postalCode: '10001',\n    province: 'NY',\n  },\n  productUrl: 'https://www.amazon.com/dp/B0DFC9MT8Q',\n  quantity: 1,\n});\n\nconsole.log(checkoutIntent);"
      - lang: Python
        source: "import os\nfrom checkout_intents import CheckoutIntents\n\nclient = CheckoutIntents(\n    api_key=os.environ.get(\"CHECKOUT_INTENTS_API_KEY\"),  # This is the default and can be omitted\n)\ncheckout_intent = client.checkout_intents.create(\n    buyer={\n        \"address1\": \"123 Main St\",\n        \"city\": \"New York\",\n        \"country\": \"US\",\n        \"email\": \"john.doe@example.com\",\n        \"first_name\": \"John\",\n        \"last_name\": \"Doe\",\n        \"phone\": \"1234567890\",\n        \"postal_code\": \"10001\",\n        \"province\": \"NY\",\n    },\n    product_url=\"https://www.amazon.com/dp/B0DFC9MT8Q\",\n    quantity=1,\n)\nprint(checkout_intent)"
      - lang: Java
        source: "package com.rye.example;\n\nimport com.rye.client.CheckoutIntentsClient;\nimport com.rye.client.okhttp.CheckoutIntentsOkHttpClient;\nimport com.rye.models.checkoutintents.Buyer;\nimport com.rye.models.checkoutintents.CheckoutIntent;\nimport com.rye.models.checkoutintents.CheckoutIntentCreateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        CheckoutIntentsClient client = CheckoutIntentsOkHttpClient.fromEnv();\n\n        CheckoutIntentCreateParams params = CheckoutIntentCreateParams.builder()\n            .buyer(Buyer.builder()\n                .address1(\"123 Main St\")\n                .city(\"New York\")\n                .country(\"US\")\n                .email(\"john.doe@example.com\")\n                .firstName(\"John\")\n                .lastName(\"Doe\")\n                .phone(\"1234567890\")\n                .postalCode(\"10001\")\n                .province(\"NY\")\n                .build())\n            .productUrl(\"https://www.amazon.com/dp/B0DFC9MT8Q\")\n            .quantity(1)\n            .build();\n        CheckoutIntent checkoutIntent = client.checkoutIntents().create(params);\n    }\n}"
      - lang: cURL
        source: "curl https://staging.api.rye.com/api/v1/checkout-intents \\\n    -H 'Content-Type: application/json' \\\n    -H \"Authorization: Bearer $CHECKOUT_INTENTS_API_KEY\" \\\n    -d '{\n          \"buyer\": {\n            \"address1\": \"123 Main St\",\n            \"city\": \"New York\",\n            \"country\": \"US\",\n            \"email\": \"john.doe@example.com\",\n            \"firstName\": \"John\",\n            \"lastName\": \"Doe\",\n            \"phone\": \"1234567890\",\n            \"postalCode\": \"10001\",\n            \"province\": \"NY\"\n          },\n          \"productUrl\": \"https://www.amazon.com/dp/B0DFC9MT8Q\",\n          \"quantity\": 1,\n          \"referenceId\": \"order-1234\"\n        }'"
  /api/v1/checkout-intents/{id}:
    get:
      operationId: GetCheckoutIntent
      responses:
        '200':
          description: Checkout intent information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutIntent'
        '401':
          description: Authentication Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
      description: 'Retrieve a checkout intent by id


        Returns checkout intent information if the lookup succeeds.'
      summary: Retrieve checkout intent
      tags:
      - Checkout Intents
      security:
      - bearerAuth:
        - checkout_intents:read
      parameters:
      - description: The id of the checkout intent to look up
        in: path
        name: id
        required: true
        schema:
          type: string
      x-codeSamples:
      - lang: JavaScript
        source: "import CheckoutIntents from 'checkout-intents';\n\nconst client = new CheckoutIntents({\n  apiKey: process.env['CHECKOUT_INTENTS_API_KEY'], // This is the default and can be omitted\n});\n\nconst checkoutIntent = await client.checkoutIntents.retrieve('id');\n\nconsole.log(checkoutIntent);"
      - lang: Python
        source: "import os\nfrom checkout_intents import CheckoutIntents\n\nclient = CheckoutIntents(\n    api_key=os.environ.get(\"CHECKOUT_INTENTS_API_KEY\"),  # This is the default and can be omitted\n)\ncheckout_intent = client.checkout_intents.retrieve(\n    \"id\",\n)\nprint(checkout_intent)"
      - lang: Java
        source: "package com.rye.example;\n\nimport com.rye.client.CheckoutIntentsClient;\nimport com.rye.client.okhttp.CheckoutIntentsOkHttpClient;\nimport com.rye.models.checkoutintents.CheckoutIntent;\nimport com.rye.models.checkoutintents.CheckoutIntentRetrieveParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        CheckoutIntentsClient client = CheckoutIntentsOkHttpClient.fromEnv();\n\n        CheckoutIntent checkoutIntent = client.checkoutIntents().retrieve(\"id\");\n    }\n}"
      - lang: cURL
        source: "curl https://staging.api.rye.com/api/v1/checkout-intents/$ID \\\n    -H \"Authorization: Bearer $CHECKOUT_INTENTS_API_KEY\""
  /api/v1/checkout-intents/{id}/order:
    get:
      operationId: GetCheckoutIntentOrder
      responses:
        '200':
          description: The order
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
        '401':
          description: Authentication Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
      description: 'Retrieve the order associated with a checkout intent.


        Returns the single order created when the checkout intent reached the

        `completed` state. 404 if the intent has not produced an order yet.'
      summary: Retrieve order
      tags:
      - Checkout Intents
      security:
      - bearerAuth:
        - checkout_intents:read
      parameters:
      - description: The id of the checkout intent to look up
        in: path
        name: id
        required: true
        schema:
          type: string
      x-codeSamples:
      - lang: JavaScript
        source: "import CheckoutIntents from 'checkout-intents';\n\nconst client = new CheckoutIntents({\n  apiKey: process.env['CHECKOUT_INTENTS_API_KEY'], // This is the default and can be omitted\n});\n\nconst order = await client.checkoutIntents.retrieveOrder('id');\n\nconsole.log(order.id);"
      - lang: Python
        source: "import os\nfrom checkout_intents import CheckoutIntents\n\nclient = CheckoutIntents(\n    api_key=os.environ.get(\"CHECKOUT_INTENTS_API_KEY\"),  # This is the default and can be omitted\n)\norder = client.checkout_intents.retrieve_order(\n    \"id\",\n)\nprint(order.id)"
      - lang: Java
        source: "package com.rye.example;\n\nimport com.rye.client.CheckoutIntentsClient;\nimport com.rye.client.okhttp.CheckoutIntentsOkHttpClient;\nimport com.rye.models.checkoutintents.CheckoutIntentRetrieveOrderParams;\nimport com.rye.models.orders.Order;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        CheckoutIntentsClient client = CheckoutIntentsOkHttpClient.fromEnv();\n\n        Order order = client.checkoutIntents().retrieveOrder(\"id\");\n    }\n}"
      - lang: cURL
        source: "curl https://staging.api.rye.com/api/v1/checkout-intents/$ID/order \\\n    -H \"Authorization: Bearer $CHECKOUT_INTENTS_API_KEY\""
  /api/v1/checkout-intents/{id}/confirm:
    post:
      operationId: ConfirmCheckoutIntent
      responses:
        '200':
          description: The confirmed checkout intent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutIntent'
        '401':
          description: Authentication Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidCheckoutIntentStateError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RuntimeError'
      description: 'Confirm a checkout intent with provided payment information


        Confirm means we have buyer''s name, address and payment info, so we can

        move forward to place the order.'
      summary: Confirm checkout intent
      tags:
      - Checkout Intents
      security:
      - bearerAuth:
        - checkout_intents:write
      parameters:
      - description: The id of the checkout intent to confirm
        in: path
        name: id
        required: true
        schema:
          type: string
      requestBody:
        description: The request body containing the payment information
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckoutIntentConfirmParams'
              description: ''
      x-codeSamples:
      - lang: JavaScript
        source: "import CheckoutIntents from 'checkout-intents';\n\nconst client = new CheckoutIntents({\n  apiKey: process.env['CHECKOUT_INTENTS_API_KEY'], // This is the default and can be omitted\n});\n\nconst checkoutIntent = await client.checkoutIntents.confirm('id', {\n  paymentMethod: { stripeToken: 'tok_1RkrWWHGDlstla3f1Fc7ZrhH', type: 'stripe_token' },\n});\n\nconsole.log(checkoutIntent);"
      - lang: Python
        source: "import os\nfrom checkout_intents import CheckoutIntents\n\nclient = CheckoutIntents(\n    api_key=os.environ.get(\"CHECKOUT_INTENTS_API_KEY\"),  # This is the default and can be omitted\n)\ncheckout_intent = client.checkout_intents.confirm(\n    id=\"id\",\n    payment_method={\n        \"stripe_token\": \"tok_1RkrWWHGDlstla3f1Fc7ZrhH\",\n        \"type\": \"stripe_token\",\n    },\n)\nprint(checkout_intent)"
      - lang: Java
        source: "package com.rye.example;\n\nimport com.rye.client.CheckoutIntentsClient;\nimport com.rye.client.okhttp.CheckoutIntentsOkHttpClient;\nimport com.rye.models.checkoutintents.CheckoutIntent;\nimport com.rye.models.checkoutintents.CheckoutIntentConfirmParams;\nimport com.rye.models.checkoutintents.PaymentMethod;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        CheckoutIntentsClient client = CheckoutIntentsOkHttpClient.fromEnv();\n\n        CheckoutIntentConfirmParams params = CheckoutIntentConfirmParams.builder()\n            .id(\"id\")\n            .paymentMethod(PaymentMethod.StripeTokenPaymentMethod.builder()\n                .stripeToken(\"tok_1RkrWWHGDlstla3f1Fc7ZrhH\")\n                .type(PaymentMethod.StripeTokenPaymentMethod.Type.STRIPE_TOKEN)\n                .build())\n            .build();\n        CheckoutIntent checkoutIntent = client.checkoutIntents().confirm(params);\n    }\n}"
      - lang: cURL
        source: "curl https://staging.api.rye.com/api/v1/checkout-intents/$ID/confirm \\\n    -H 'Content-Type: application/json' \\\n    -H \"Authorization: Bearer $CHECKOUT_INTENTS_API_KEY\" \\\n    -d '{\n          \"paymentMethod\": {\n            \"stripeToken\": \"tok_1RkrWWHGDlstla3f1Fc7ZrhH\",\n            \"type\": \"stripe_token\"\n          }\n        }'"
  /api/v1/checkout-intents/{id}/shipments:
    get:
      operationId: GetShipments
      responses:
        '200':
          description: Shipments list response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentsListResponse'
        '401':
          description: Authentication Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateError'
      description: List shipments for a checkout intent
      summary: List shipments for checkout intent
      tags:
      - Checkout Intents
      security:
      - bearerAuth:
        - checkout_intents:read
      parameters:
      - description: The id of the checkout intent
        in: path
        name: id
        required: true
        schema:
          type: string
      - description: Maximum number of results to return (default 100)
        in: query
        name: limit
        required: false
        schema:
          format: int32
          type: integer
          minimum: 1
          maximum: 100
        example: 20
      - in: query
        name: after
        required: false
        schema:
          type: string
      - in: query
        name: before
        required: false
        schema:
          type: string
      x-codeSamples:
      - lang: JavaScript
        source: "import CheckoutIntents from 'checkout-intents';\n\nconst client = new CheckoutIntents({\n  apiKey: process.env['CHECKOUT_INTENTS_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const shipment of client.checkoutIntents.shipments.list('id')) {\n  console.log(shipment);\n}"
      - lang: Python
        source: "import os\nfrom checkout_intents import CheckoutIntents\n\nclient = CheckoutIntents(\n    api_key=os.environ.get(\"CHECKOUT_INTENTS_API_KEY\"),  # This is the default and can be omitted\n)\npage = client.checkout_intents.shipments.list(\n    id=\"id\",\n)\npage = page.data[0]\nprint(page)"
      - lang: Java
        source: "package com.rye.example;\n\nimport com.rye.client.CheckoutIntentsClient;\nimport com.rye.client.okhttp.CheckoutIntentsOkHttpClient;\nimport com.rye.models.checkoutintents.shipments.ShipmentListPage;\nimport com.rye.models.checkoutintents.shipments.ShipmentListParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        CheckoutIntentsClient client = CheckoutIntentsOkHttpClient.fromEnv();\n\n        ShipmentListPage page = client.checkoutIntents().shipments().list(\"id\");\n    }\n}"
      - lang: cURL
        source: "curl https://staging.api.rye.com/api/v1/checkout-intents/$ID/shipments \\\n    -H \"Authorization: Bearer $CHECKOUT_INTENTS_API_KEY\""
  /api/v1/checkout-intents/purchase:
    post:
      operationId: Purchase
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutIntent'
        '401':
          description: Authentication Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RuntimeError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AmazonUnavailableError'
      description: 'Create a checkout intent and immediately trigger the purchase workflow.


        This is a "fire-and-forget" endpoint that combines create + confirm in one step.

        The workflow handles offer retrieval, payment authorization, and order placement

        asynchronously. Poll the GET endpoint to check status.'
      summary: Purchase product
      tags:
      - Checkout Intents
      security:
      - bearerAuth:
        - checkout_intents:write
      parameters: []
      requestBody:
        description: The request body containing the checkout intent purchase parameters
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckoutIntentPurchaseParams'
              description: ''
      x-codeSamples:
      - lang: JavaScript
        source: "import CheckoutIntents from 'checkout-intents';\n\nconst client = new CheckoutIntents({\n  apiKey: process.env['CHECKOUT_INTENTS_API_KEY'], // This is the default and can be omitted\n});\n\nconst checkoutIntent = await client.checkoutIntents.purchase({\n  buyer: {\n    address1: '123 Main St',\n    city: 'New York',\n    country: 'US',\n    email: 'john.doe@example.com',\n    firstName: 'John',\n    lastName: 'Doe',\n    phone: '1234567890',\n    postalCode: '10001',\n    province: 'NY',\n  },\n  paymentMethod: { stripeToken: 'tok_1RkrWWHGDlstla3f1Fc7ZrhH', type: 'stripe_token' },\n  productUrl: 'https://www.amazon.com/dp/B0DFC9MT8Q',\n  quantity: 1,\n});\n\nconsole.log(checkoutIntent);"
      - lang: Python
        source: "import os\nfrom checkout_intents import CheckoutIntents\n\nclient = CheckoutIntents(\n    api_key=os.environ.get(\"CHECKOUT_INTENTS_API_KEY\"),  # This is the default and can be omitted\n)\ncheckout_intent = client.checkout_intents.purchase(\n    buyer={\n        \"address1\": \"123 Main St\",\n        \"city\": \"New York\",\n        \"country\": \"US\",\n        \"email\": \"john.doe@example.com\",\n        \"first_name\": \"John\",\n        \"last_name\": \"Doe\",\n        \"phone\": \"1234567890\",\n        \"postal_code\": \"10001\",\n        \"province\": \"NY\",\n    },\n    payment_method={\n        \"stripe_token\": \"tok_1RkrWWHGDlstla3f1Fc7ZrhH\",\n        \"type\": \"stripe_token\",\n    },\n    product_url=\"https://www.amazon.com/dp/B0DFC9MT8Q\",\n    quantity=1,\n)\nprint(checkout_intent)"
      - lang: Java
        source: "package com.rye.example;\n\nimport com.rye.client.CheckoutIntentsClient;\nimport com.rye.client.okhttp.CheckoutIntentsOkHttpClient;\nimport com.rye.models.checkoutintents.Buyer;\nimport com.rye.models.checkoutintents.CheckoutIntent;\nimport com.rye.models.checkoutintents.CheckoutIntentPurchaseParams;\nimport com.rye.models.checkoutintents.PaymentMethod;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        CheckoutIntentsClient client = CheckoutIntentsOkHttpClient.fromEnv();\n\n        CheckoutIntentPurchaseParams params = CheckoutIntentPurchaseParams.builder()\n            .buyer(Buyer.builder()\n                .address1(\"123 Main St\")\n                .city(\"New York\")\n                .country(\"US\")\n                .email(\"john.doe@example.com\")\n                .firstName(\"John\")\n                .lastName(\"Doe\")\n                .phone(\"1234567890\")\n                .postalCode(\"10001\")\n                .province(\"NY\")\n                .build())\n            .paymentMethod(PaymentMethod.StripeTokenPaymentMethod.builder()\n                .stripeToken(\"tok_1RkrWWHGDlstla3f1Fc7ZrhH\")\n                .type(PaymentMethod.StripeTokenPaymentMethod.Type.STRIPE_TOKEN)\n                .build())\n            .productUrl(\"https://www.amazon.com/dp/B0DFC9MT8Q\")\n            .quantity(1)\n            .build();\n        CheckoutIntent checkoutIntent = client.checkoutIntents().purchase(params);\n    }\n}"
      - lang: cURL
        source: "curl https://staging.api.rye.com/api/v1/checkout-intents/purchase \\\n    -H 'Content-Type: application/json' \\\n    -H \"Authorization: Bearer $CHECKOUT_INTENTS_API_KEY\" \\\n    -d '{\n          \"buyer\": {\n            \"address1\": \"123 Main St\",\n            \"city\": \"New York\",\n            \"country\": \"US\",\n            \"email\": \"john.doe@example.com\",\n            \"firstName\": \"John\",\n            \"lastName\": \"Doe\",\n            \"phone\": \"1234567890\",\n            \"postalCode\": \"10001\",\n            \"province\": \"NY\"\n          },\n          \"paymentMethod\": {\n            \"stripeToken\": \"tok_1RkrWWHGDlstla3f1Fc7ZrhH\",\n            \"type\": \"stripe_token\"\n          },\n          \"productUrl\": \"https://www.amazon.com/dp/B0DFC9MT8Q\",\n          \"quantity\": 1,\n          \"referenceId\": \"order-1234\"\n        }'"
components:
  schemas:
    AuthenticationError:
      properties:
        name:
          type: string
        message:
          type: string
        stack:
          type: string
      required:
      - name
      - message
      type: object
      additionalProperties: false
    PaymentMethod:
      anyOf:
      - $ref: '#/components/schemas/StripeTokenPaymentMethod'
      - $ref: '#/components/schemas/BasisTheoryPaymentMethod'
      - $ref: '#/components/schemas/DrawdownPaymentMethod'
      - $ref: '#/components/schemas/X402PaymentMethod'
    AmazonUnavailableError:
      properties:
        name:
          type: string
        message:
          type: string
        stack:
          type: string
      required:
      - name
      - message
      type: object
      additionalProperties: false
    ShippedShipment:
      $ref: '#/components/schemas/WithStatus_BaseShipmentWithTracking.shipped_'
      title: Shipped
    CheckoutConstraints:
      properties:
        offerRetrievalEffort:
          $ref: '#/components/schemas/OfferRetrievalEffort'
          example: max
        maxShippingPrice:
          type: integer
          format: int32
          example: 500
          minimum: 0
        maxTotalPrice:
          type: integer
          format: int32
          example: 100000
          minimum: 0
      type: object
    CompletedCheckoutIntent:
      allOf:
      - $ref: '#/components/schemas/BaseCheckoutIntent'
      - properties:
          estimatedDeliveryDate:
            type: string
            format: date-time
            nullable: true
            deprecated: true
          orderId:
            type: string
            nullable: true
          paymentMethod:
            $ref: '#/components/schemas/PaymentMethod'
          offer:
            $ref: '#/components/schemas/Offer'
          state:
            type: string
            enum:
            - completed
            nullable: false
        required:
        - orderId
        - paymentMethod
        - offer
        - state
        type: object
      title: Completed
    ShipmentUnion:
      anyOf:
      - $ref: '#/components/schemas/ShipmentWithTrackingUnion'
      - $ref: '#/components/schemas/ShipmentWithoutTrackingUnion'
    WithStatus_BaseShipmentWithTracking.delayed_:
      allOf:
      - $ref: '#/components/schemas/BaseShipmentWithTracking'
      - properties:
          status:
            type: string
            enum:
            - delayed
            nullable: false
        required:
        - status
        type: object
    X402NextAction:
      properties:
        x402:
          properties:
            expiresAt:
              type: string
            recipient:
              type: string
            currency:
              type: string
              enum:
              - USDC
              nullable: false
            maxAmountRequired:
              type: string
            network:
              type: string
            scheme:
              type: string
              enum:
              - exact
              nullable: false
          required:
          - expiresAt
          - recipient
          - currency
          - maxAmountRequired
          - network
          - scheme
          type: object
        type:
          type: string
          enum:
          - x402
          nullable: false
      required:
      - x402
      - type
      type: object
    FailedCheckoutIntent:
      allOf:
      - $ref: '#/components/schemas/BaseCheckoutIntent'
      - properties:
          failureReason:
            $ref: '#/components/schemas/FailureReason'
          paymentMethod:
            $ref: '#/components/schemas/PaymentMethod'
          offer:
            $ref: '#/components/schemas/Offer'
          state:
            type: string
            enum:
            - failed
            nullable: false
        required:
        - failureReason
        - state
        type: object
      title: Failed
    Shipping:
      properties:
        availableOptions:
          items:
            $ref: '#/components/schemas/ShippingOption'
          type: array
        selectedOptionId:
          type: string
      required:
      - availableOptions
      type: object
    CancellationReason:
      properties:
        message:
          type: string
          description: 'Optional free-text note explaining the cancellation, forwarded to the

            merchant when possible.'
          maxLength: 256
        code:
          $ref: '#/components/schemas/CancellationReasonCode'
      required:
      - code
      type: object
    OrderedShipment:
      $ref: '#/components/schemas/WithStatus_BaseShipment.ordered_'
      title: Ordered
    FieldErrors:
      properties: {}
      type: object
      additionalProperties:
        properties:
          value: {}
          message:
            type: string
        required:
        - message
        type: object
    Offer:
      properties:
        commission:
          $ref: '#/components/schemas/CommissionPotential'
        shipping:
          $ref: '#/components/schemas/Shipping'
        cost:
          $ref: '#/components/schemas/Cost'
        appliedPromoCodes:
          items:
            type: string
          type: array
      required:
      - shipping
      - cost
      type: object
    DeniedCancellation:
      allOf:
      - $ref: '#/components/schemas/BaseCancellation'
      - properties:
          denialReason:
            $ref: '#/components/schemas/CancellationDenialReason'
          state:
            type: string
            enum:
            - denied
            nulla

# --- truncated at 32 KB (54 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/rye/refs/heads/main/openapi/rye-checkout-intents-api-openapi.yml