openapi: 3.1.0
info:
  title: Storefront Checkouts
  version: 1.0.0
paths:
  /checkouts/{checkoutId}:
    get:
      operationId: getCheckout
      summary: Get Checkout
      description: >-
        Returns a *Checkout*.


        The cart ID and checkout ID are the same.


        > #### Note

        > * Substitute your storefront domain for `yourstore.example.com`. 

        > * The Send a Test Request feature is not currently supported for this endpoint.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - checkout
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: include
          in: query
          description: |-
            * `cart.lineItems.physicalItems.options` - physical options
            * `cart.lineItems.digitalItems.options` - digital options
            * `cart.lineItems.physicalItems.categoryNames` - physical categories
            * `cart.lineItems.digitalItems.categoryNames` - digital categories
            * `cart.lineItems.customItems.categoryNames` - custom categories
            * `customer` - customer
            * `customer.customerGroup` - customer group
            * `payments` - payments
            * `promotions` - promotions
            * `consignments.availableShippingOptions` - shipping options
            * `consignments.availablePickupOptions` - pickup options
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CheckoutsCheckoutIdGetParametersIncludeSchemaItems'
            default:
              - consignments.availableShippingOptions
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout_Full'
        '400':
          description: When a problem arises, returns a generic response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCheckoutRequestBadRequestError'
    put:
      operationId: updateCheckout
      summary: Update Customer Messages
      description: >-
        Updates *Checkout* customer messages.


        **Limits**


        * 2000 character limit


        > #### Note

        > * Substitute your storefront domain for `yourstore.example.com`. 

        > * The Send a Test Request feature is not currently supported for this endpoint.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - checkout
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout_Full'
        '409':
          description: Cart conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCheckoutRequestConflictError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/checkout_Put'
  /checkouts/{checkoutId}/billing-address:
    post:
      operationId: addCheckoutBillingAddress
      summary: Add Checkout Billing Address
      description: >-
        Adds a billing address to an existing *Checkout*.


        **Required Fields**

        * country_code



        > #### Note

        > * The `email` property is only required if the customer is a guest shopper. Otherwise, it is set
        automatically.

        > * Sending `email` property as a payload in POST request triggers the abandoned cart notification process.

        > * Substitute your storefront domain for `yourstore.example.com`. 

        > * The Send a Test Request feature is not currently supported for this endpoint.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - billingAddress
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout_Full'
        '409':
          description: Cart conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddCheckoutBillingAddressRequestConflictError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillingAddressRequest'
  /checkouts/{checkoutId}/billing-address/{addressId}:
    put:
      operationId: updateCheckoutBillingAddress
      summary: Update Checkout Billing Address
      description: >-
        Updates an existing billing address on *Checkout*.


        > #### Note

        > * Substitute your storefront domain for `yourstore.example.com`. 

        > * The Send a Test Request feature is not currently supported for this endpoint. 

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - billingAddress
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: addressId
          in: path
          description: The ID of the subject address.
          required: true
          schema:
            type: number
            format: double
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout_Full'
        '409':
          description: Cart conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCheckoutBillingAddressRequestConflictError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillingAddressRequest'
  /checkouts/{checkoutId}/carts/{cartId}/items/{itemId}:
    put:
      operationId: updateCheckoutLineItem
      summary: Update Line Item
      description: >-
        Updates a *Checkout Line Item*. Updates an existing, single line item in the cart.


        If a variant needs to be changed or updated, the product will need to be removed and re-added to the cart with
        the correct variants using the [Add Cart Line
        Items](/developer/api-reference/rest/storefront/carts/cart-items/add-cart-line-item) endpoint or the [GraphQL
        Storefront API](/developer/docs/storefront/guides/graphql-storefront-api/overview).


        > #### Notes

        > * Substitute your storefront domain for `yourstore.example.com`. 

        > * The Send a Test Request feature is not currently supported for this endpoint.  

        > * Please note that this API endpoint is not concurrent safe, meaning multiple simultaneous requests could
        result in unexpected and inconsistent results.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - cartItems
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: cartId
          in: path
          description: The ID of the cart associated with this checkout. Identical to the checkout ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: itemId
          in: path
          description: The ID of an item being purchased.
          required: true
          schema:
            type: string
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout_Full'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/cart_Put'
    delete:
      operationId: deleteCheckoutLineItem
      summary: Delete Line Item
      description: >-
        Deletes a *Line Item* from the *Cart*.


        > #### Note

        > * Substitute your storefront domain for `yourstore.example.com`. 

        > * The Send a Test Request feature is not currently supported for this endpoint.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - cartItems
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: cartId
          in: path
          description: The ID of the cart associated with this checkout. Identical to the checkout ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: itemId
          in: path
          description: The ID of an item being purchased.
          required: true
          schema:
            type: string
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: >-
            NOTE: Discounted line items are re-evaluated on cart actions and may be automatically added back to your
            cart with a new line item ID to satisfy promotional requirements.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout_Full'
  /checkouts/{checkoutId}/consignments:
    post:
      operationId: createCheckoutConsignment
      summary: Create Consignment
      description: >
        Adds a new *Consignment* to *Checkout*.


        Perform the following two steps to define the fulfillment of the items in the cart.


        ### For shipping consignments:

          1. Add a new Consignment to Checkout.
          
              * Send a `POST` request to `/consignments` with each shipping address, line item IDs, and quantities. Each address can have its own line item IDs.
              * Provide a full valid customer address before placing the order. If provided, the order placement will succeed. 
              * As part of the request URL make sure to add `include=consignments.availableShippingOptions` to return the available shipping options based on the items, the address, and the shipping location. This will return `availableShippingOptions` in the response.

              * Required Fields:
                * `shipping_address` (deprecated) or `address`
                * `lineItems`
              
          2. Update the Consignment with Shipping Options using the [REST Storefront API](/developer/api-reference/rest/storefront/checkouts/consignments/update-checkout-consignment), the [REST Management API](/developer/api-reference/rest/admin/management/checkouts/consignments/update-checkout-consignment) or the [GraphQL Storefront API](/developer/docs/admin/checkout-and-cart/custom-checkouts/graphql-storefront).
                
        ### For pickup consignments:

          Create a new consignment object. 
          
              - Send a `POST` request to `/consignments` with line item IDs and quantities.
              - Provide a `pickupMethodId`. This is the `id` of the Pickup Method provided in the response body of the Storefront Pickup Options API.
              - Required Fields:
                  * `pickupOption`
                  * `lineItems`

        To learn more about creating a Checkout Consignment, see the [Carts and Checkouts
        Tutorial](/developer/docs/admin/checkout-and-cart/custom-checkouts/rest-storefront).


        > #### Notes

        > * Substitute your storefront domain for `yourstore.example.com`. 

        > * The Send a Test Request feature is not currently supported for this endpoint.  

        > * Please note that this API endpoint is not concurrent safe, meaning multiple simultaneous requests could
        result in unexpected and inconsistent results.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - consignments
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: include
          in: query
          description: |-
            * `cart.lineItems.physicalItems.options` - physical options
            * `cart.lineItems.digitalItems.options` - digital options
            * `cart.lineItems.physicalItems.categoryNames` - physical categories
            * `cart.lineItems.digitalItems.categoryNames` - digital categories
            * `cart.lineItems.customItems.categoryNames` - custom categories
            * `customer` - customer
            * `customer.customerGroup` - customer group
            * `payments` - payments
            * `promotions` - promotions
            * `consignments.availableShippingOptions` - shipping options
            * `consignments.availablePickupOptions` - pickup options
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CheckoutsCheckoutIdConsignmentsPostParametersIncludeSchemaItems'
            default:
              - consignments.availableShippingOptions
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout_Full'
        '409':
          description: Cart conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCheckoutConsignmentRequestConflictError'
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CreateConsignmentRequest'
  /checkouts/{checkoutId}/consignments/{consignmentId}:
    put:
      operationId: updateCheckoutConsignment
      summary: Update Consignment
      description: >-
        Updates an existing consignment. An update is either one of the following:


        1. Updates the consignment address and/or line items.

        2. Selects a specific fulfillment option.


        ### Update the consignment address and line items

        For this type of update, the payload is the same as when creating a new consignment.         Update each
        *Consignment* `shippingOptionId` (shipping address and line items) with the `availableShippingOption > id` from
        the POST `/consignment` response. 


        **Note:**

        Updating a consignment could invalidate the value for `selectedShippingOption` and `selectedPickupOption`.


        ### Select a specific fulfillment option

        Before placing an order, each consignment must have a `selectedShippingOption` or a `selectedPickupOption`.


        If the consignment already has a pick-up option selected and a shipping option is provided, the pick-up option
        will be deselected and the shipping option will be selected instead (and vice versa). The `PUT` request will
        fail if it contains a shipping option ID and a pickup option ID.


        Required Fields:

        * `shippingOptionId` or `pickupOptionId`

        * `lineItems`


        To learn more about creating a Checkout Consignment see [Checkout Consignment
        API](/developer/docs/admin/checkout-and-cart/custom-checkouts/consignments).


        > #### Notes

        > * You cannot pass both an `address` and a `shippingOptionId` because the shipping option may not be available
        for the new address 

        > * Substitute your storefront domain for `yourstore.example.com`. 

        > * The Send a Test Request feature is not currently supported for this endpoint.  

        > * Please note that this API endpoint is not concurrent safe, meaning multiple simultaneous requests could
        result in unexpected and inconsistent results.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - consignments
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: consignmentId
          in: path
          description: The ID of the subject consignment.
          required: true
          schema:
            type: string
        - name: include
          in: query
          description: |-
            * `cart.lineItems.physicalItems.options` - physical options
            * `cart.lineItems.digitalItems.options` - digital options
            * `cart.lineItems.physicalItems.categoryNames` - physical categories
            * `cart.lineItems.digitalItems.categoryNames` - digital categories
            * `cart.lineItems.customItems.categoryNames` - custom categories
            * `customer` - customer
            * `customer.customerGroup` - customer group
            * `payments` - payments
            * `promotions` - promotions
            * `consignments.availableShippingOptions` - shipping options
            * `consignments.availablePickupOptions` - pickup options
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CheckoutsCheckoutIdConsignmentsConsignmentIdPutParametersIncludeSchemaItems'
            default:
              - consignments.availableShippingOptions
              - consignments.availablePickupOptions
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout_Full'
        '409':
          description: Cart conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCheckoutConsignmentRequestConflictError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewUpdateConsignment'
    delete:
      operationId: deleteCheckoutConsignment
      summary: Delete Consignment
      description: >-
        Removes an existing *Consignment* from *Checkout*.


        > #### Note

        > * Substitute your storefront domain for `yourstore.example.com`. 

        > * The Send a Test Request feature is not currently supported for this endpoint.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - consignments
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: consignmentId
          in: path
          description: The ID of the subject consignment.
          required: true
          schema:
            type: string
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout_Full'
        '409':
          description: Cart conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteCheckoutConsignmentRequestConflictError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteConsignmentRequest'
  /checkouts/{checkoutId}/coupons:
    post:
      operationId: addCheckoutCoupon
      summary: Add Coupon to Checkout
      description: >-
        Adds a *Coupon Code* to *Checkout*.


        **Required Fields**

        * couponCode


        > #### Note

        > * Substitute your storefront domain for `yourstore.example.com`. 

        > * The Send a Test Request feature is not currently supported for this endpoint.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - coupons
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout_Full'
        '409':
          description: Cart conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddCheckoutCouponRequestConflictError'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                couponCode:
                  type: string
                version:
                  type: integer
                  description: >-
                    The cart version that you expect to apply the updates. If the provided version doesn't match the
                    current cart version, you will receive a conflict error. This field is optional; if not provided,
                    optimistic concurrency control will not apply.
  /checkouts/{checkoutId}/coupons/{couponCode}:
    delete:
      operationId: deleteCheckoutCoupon
      summary: Delete Checkout Coupon
      description: >
        Deletes a *Coupon Code* from *Checkout*.


        > #### Note

        > * Substitute your storefront domain for `yourstore.example.com`. 

        > * The Send a Test Request feature is not currently supported for this endpoint.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - coupons
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: couponCode
          in: path
          description: The code of the subject coupon.
          required: true
          schema:
            type: string
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout_Full'
        '409':
          description: Cart conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteCheckoutCouponRequestConflictError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteCouponCodeRequest'
  /checkouts/{checkoutId}/gift-certificates:
    post:
      operationId: addCheckoutGiftCertificate
      summary: Add Gift Certificate to Checkout
      description: >-
        Adds a *Gift Certificate Code* to *Checkout*.


        > #### Note

        > * *Gift Certificates* are treated as a payment methods.

        > * You are not able to purchase a gift certificate with a gift certificate.

        > * The rate limit is 20/hour (only for unique gift-certificate codes).

        > * Substitute your storefront domain for `yourstore.example.com`. 

        > * The Send a Test Request feature is not currently supported for this endpoint. 

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - giftCertificates
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout_Full'
        '404':
          description: Gift certificate code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddCheckoutGiftCertificateRequestNotFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GiftCertificateRequest'
  /checkouts/{checkoutId}/gift-certificates/{giftCertificateCode}:
    delete:
      operationId: deleteCheckoutGiftCertificate
      summary: Delete Gift Certificate
      description: >-
        Deletes an existing *Gift Certificate*.


        This removes the *Gift Certificate* payment method.


        > #### Note

        > * Substitute your storefront domain for `yourstore.example.com`. 

        > * The Send a Test Request feature is not currently supported for this endpoint.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.  
      tags:
        - giftCertificates
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: giftCertificateCode
          in: path
          description: The code of the subject gift certificate.
          required: true
          schema:
            type: string
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout_Full'
  /checkouts/{checkoutId}/spam-protection:
    post:
      operationId: checkoutSpamProtection
      summary: Checkout Spam Protection
      description: >-
        Verifies if checkout is created by human.


        > #### Note

        > * Substitute your storefront domain for `yourstore.example.com`.

        > * The Send a Test Request feature is not currently supported for this endpoint.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - spamProtection
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: Returns the checkout object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Spam Protection_checkoutSpamProtection_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SpamProtectionRequest'
  /checkouts/{checkoutId}/store-credit:
    post:
      operationId: addCheckoutStoreCredit
      summary: Add Store Credit
      description: >-
        Applies any available store credit to a checkout. As on the storefront, all available store credit will be used
        (up to the value of the order) and no amount need be specified.


        > #### Note

        > * Substitute your storefront domain for `yourstore.example.com`.

        > * The Send a Test Request feature is not currently supported for this endpoint.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - storeCredit
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: Returns the checkout object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Store Credit_addCheckoutStoreCredit_Response_200'
    delete:
      operationId: removeCheckoutStoreCredit
      summary: Remove Store Credit
      description: >-
        Removes store credit from a checkout.


        > #### Note

        > * Substitute your storefront domain for `yourstore.example.com`.

        > * The Send a Test Request feature is not currently supported for this endpoint.

        > * This endpoint runs in the context of an active storefront session and works on any live BigCommerce-hosted
        storefront, not only in a local environment. It uses [same-origin CORS
        authentication](/developer/docs/overview/api-fundamentals/api-accounts#same-origin-cors-authentication), and
        write requests require a CSRF token. Stencil CLI can provide a session and CSRF token for local theme
        development.
      tags:
        - storeCredit
      parameters:
        - name: checkoutId
          in: path
          description: The ID of the subject checkout. Identical to the cart ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: Accept
          in: header
          description: >-
            The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response
            body.
          required: true
          schema:
            type: string
            default: application/json
      responses:
        '200':
          description: Returns the checkout object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Store Credit_removeCheckoutStoreCredit_Response_200'
servers:
  - url: https://your_store.example.com/api/storefront
    description: https://{store_domain}/api/storefront
components:
  schemas:
    CheckoutsCheckoutIdGetParametersIncludeSchemaItems:
      type: string
      enum:
        - cart.lineItems.physicalItems.options
        - cart.lineItems.digitalItems.options
        - cart.lineItems.physicalItems.categoryNames
        - cart.lineItems.digitalItems.categoryNames
        - cart.lineItems.customItems.categoryNames
        - customer
        - customer.customerGroup
        - payments
        - promotions
        - consignments.availableShippingOptions
        - consignments.availablePickupOptions
      title: CheckoutsCheckoutIdGetParametersIncludeSchemaItems
    customFields:
      type: object
      properties:
        fieldId:
          type: string
        fieldValue:
          type: string
          description: >-
            This can also be an array for fields that need to support list of values; for example, a set of checkboxes.
            When doing a PUT or POST to the `fieldValue` with a pick list, the input must be a number. The response will
            be a string.
      description: >-
        When doing a PUT or POST to the `fieldValue` with a pick list, the input must be a number. The response will be
        a string.
      title: customFields
    address_Base:
      type: object
      properties:
        address1:
          type: string
        address2:
          type: string
        city:
          type: string
        company:
          type: string
        country:
          type: string
          description: Country name.
        countryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code. (See: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)'
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/customFields'
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        stateOrProvince:
          type: string
          description: Represents state or province.
        stateOrProvinceCode:
          type: string
        phone:
          type: string
        postalCode:
          type: string
      required:
        - countryCode
      title: address_Base
    CartCouponCouponType:
      type: string
      enum:
        - per_item_discount
        - percentage_discount
        - per_total_discount
        - shipping_discount
        - free_shipping
        - promotion
      description: Key name to identify the type of coupon.
      title: CartCouponCouponType
    CartCoupon:
      type: object
      properties:
        id:
          type: integer
          description: The coupon ID.
        code:
          type: string
          description: the coupon code
        displayName:
          type: string
          description: The coupon name displayed on the storefront.
        couponType:
          $ref: '#/components/schemas/CartCouponCouponType'
          description: Key name to identify the type of coupon.
        discountedAmount:
          type: number
          format: double
          description: The discounted amount applied within a given context.
      required:
        - code
      title: CartCoupon
    CheckoutCartCurrency:
      type: object
      properties:
        code:
          type: string
          description: 'ISO-4217 currency code. (See: https://www.iso.org/iso-4217-currency-codes.html.)'
        decimalPlaces:
          type: number
          format: double
          description: The number of decimal places for the currency. For example, the USD currency has two decimal places.
        name:
          type: string
          description: The currency name.
        symbol:
          type: string
          description: The currency symbol.
      description: The currency in which prices are displayed; the store default currency.
      title: CheckoutCartCurrency
    CheckoutCartDiscountsItems:
      type: object
      properties:
        id:
          type: integer
          description: Discount ID.
        discountedAmount:
          type: number
          format: double
          description: The discounted amount applied within a given context.
      title: CheckoutCartDiscountsItems
    CheckoutCartLineItemsCustomItemsItems:
      type: object
      properties:
        id:
          type: string
          description: ID of the custom item.
        listPrice:
          type: string
          description: >-
            The net item price before discounts and coupons. BigCommerce derives an item's list price from the product
            default price or, if applicable, the sale price configured in the admin panel.
        name:
          type: string
          description: Item name.
        quantity:
          type: string
        sku:
          type: string
          description: Custom item SKU.
      description: |-
        Add a custom item to the shoppers cart.
        * Custom items are not added to the catalog.
        * The price should be set to match the store settings for taxes.
      title: CheckoutCartLineItemsCustomItemsItems
    LineItemPhysicalDigitalDiscountsItems:
      type: object
      properties:
        id:
          type: integer
          description: Discount ID.
        discountedAmount:
          type: number
          format: double
          description: The discounted amount applied within a given context.
      title: LineItemPhysicalDigitalDiscountsItems
    LineItemPhysicalDigitalGiftWrapping:
      type: object
      properties:
        name:
          type: string
        message:
          type: string
        amount:
          type: number
          format: double
      title: LineItemPhysicalDigitalGiftWrapping
    LineItemPhysicalDigitalOptionsItems:
      type: object
      properties:
        name:
          type: string
          description: Option name.
        nameId:
          type: integer
          description: Option ID.
        value:
          type: string
          description: Option value.
        valueId:
          type: string
          description: Option value ID.
      title: LineItemPhysicalDigitalOptionsItems
    lineItemPhysicalDigital:
      type: object
      properties:
        addedByPromotion:
          type: boolean
          description: If the item was added automatically by a promotion, such as a coupon or buy one, get one.
        categoryNames:
          type: array
          items:
            type: string
        comparisonPrice:
          type: number
          format: double
          description: The itemʼs comparison price
        couponAmount:
          type: number
          format: double
          description: The total value of all coupons applied to this item.
        discounts:
          type: array
          items:
            $ref: '#/components/schemas/LineItemPhysicalDigitalDiscountsItems'
          description: A list of discounts applied to this item, as an array of AppliedDiscount objects.
        discountAmount:
          type: number
          format: double
          description: The total value of all discounts applied to this item (excluding coupon).
        extendedComparisonPrice:
          type: number
          format: double
          description: The itemʼs comparison price multiplied by the quantity.
        extendedListPrice:
          type: number
          format: double
          description: The itemʼs list price multiplied by the quantity.
        extendedSalePrice:
          type: number
          format: double
          description: The itemʼs sale price multiplied by the quantity.
        giftWrapping:
          $ref: '#/components/schemas/LineItemPhysicalDigitalGiftWrapping'
        id:
          type: string
          description: The line-item ID.
        imageUrl:
          type: string
          description: A publicly-accessible URL for an image of this item.
        isMutable:
          type: boolean
        isShippingRequired:
          type: boolean
          description: Whether this item requires shipping to a physical address.
        isTaxable:
          type: boolean
          description: Whether the item is taxable.
        listPrice:
          type: number
          format: double
          description: >-
            The net item price before discounts and coupons. BigCommerce derives an item's list price from the product
            default price or, if applicable, the sale price configured in the admin panel.
        name:
          type: string
          description: The itemʼs product name.
        options:
          type: array
          items:
            $ref: '#/components/schemas/LineItemPhysicalDigitalOptionsItems'
        originalPrice:
          type: number
          format: double
          description: The item’s original price is the same as the product’s default price.
        parentId:
          type: string
          description: >-
            The product is part of a bundle such as a product pick list, then the parentId or the main product ID will
            populate.
        productId:
          type: integer
          description: ID of the product.
        sku:
          type: string
          description: SKU of the variant.
        quantity:
          type: number
          format: double
          description: Quantity of this item.
        salePrice:
          type: number
          format: double
          description: The itemʼs price after all discounts are applied. The final price before tax calculation.
        type:
          type: string
          description: the product type - physical or digital
        url:
          type: string
          description: The product URL.
        variantId:
          type: integer
          description: ID of the variant.
      required:
        - quantity
      title: lineItemPhysicalDigital
    CheckoutCartLineItemsGiftCertificatesItemsRecipient:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
      title: CheckoutCartLineItemsGiftCertificatesItemsRecipient
    CheckoutCartLineItemsGiftCertificatesItemsSender:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
      title: CheckoutCartLineItemsGiftCertificatesItemsSender
    CheckoutCartLineItemsGiftCertificatesItems:
      type: object
      properties:
        amount:
          type: number
          format: double
          description: Value must be between $1.00 and $1,000.00.
        id:
          type: string
          description: Gift certificate identifier
        message:
          type: string
          description: Limited to 200 characters.
        name:
          type: string
          description: The name of the purchased gift certificate; for example, `$20 Gift Certificate`.
        recipient:
          $ref: '#/components/schemas/CheckoutCartLineItemsGiftCertificatesItemsRecipient'
        sender:
          $ref: '#/components/schemas/CheckoutCartLineItemsGiftCertificatesItemsSender'
        taxable:
          type: boolean
        theme:
          type: string
          description: Currently supports `Birthday`, `Boy`, `Celebration`, `Christmas`, `General`, and `Girl`.
        type:
          type: string
          description: Explicitly specifying the gift certificate type.
      required:
        - amount
        - recipient
        - sender
        - theme
      title: CheckoutCartLineItemsGiftCertificatesItems
    CheckoutCartLineItems:
      type: object
      properties:
        customItems:
          type: array
          items:
            $ref: '#/components/schemas/CheckoutCartLineItemsCustomItemsItems'
        digitalItems:
          type: array
          items:
            $ref: '#/components/schemas/lineItemPhysicalDigital'
        giftCertificates:
          type: array
          items:
            $ref: '#/components/schemas/CheckoutCartLineItemsGiftCertificatesItems'
        physicalItems:
          type: array
          items:
            $ref: '#/components/schemas/lineItemPhysicalDigital'
      required:
        - digitalItems
        - physicalItems
      title: CheckoutCartLineItems
    checkoutCart:
      type: object
      properties:
        baseAmount:
          type: number
          format: double
          description: Cost of cart’s contents, before applying discounts.
        cartAmount:
          type: number
          format: double
          description: >-
            Sum of line-items amounts, minus cart-level discounts and coupons. This amount includes taxes, where
            applicable.
        createdTime:
          type: string
          description: Time when the cart was created.
        coupons:
          type: array
          items:
            $ref: '#/components/schemas/CartCoupon'
        currency:
          $ref: '#/components/schemas/CheckoutCartCurrency'
          description: The currency in which prices are displayed; the store default currency.
        customerId:
          type: integer
          description: ID of the customer to which the cart belongs.
        discountAmount:
          type: number
          format: double
          description: Order-based discounted amount only - Excludes coupon discounts and product-based discounts.
        discounts:
          type: array
          items:
            $ref: '#/components/schemas/CheckoutCartDiscountsItems'
        email:
          type: string
          description: The cartʼs email. This is the same email that is used in the billing address.
        id:
          type: string
          format: uuid
          description: Cart ID, provided after creating a cart with a POST.
        isTaxIncluded:
          type: boolean
          description: Boolean representing whether tax information is included.
        lineItems:
          $ref: '#/components/schemas/CheckoutCartLineItems'
        locale:
          type: string
          description: Shopper's locale.
        updatedTime:
          type: string
          description: Time when the cart was last updated.
        version:
          type: integer
          description: Cart version.
      description: A cart contains a collection of items, prices, discounts, etc. It does not contain customer-related data.
      title: checkoutCart
    address_Full:
      type: object
      properties:
        address1:
          type: string
        address2:
          type: string
        city:
          type: string
        company:
          type: string
        country:
          type: string
          description: Country name.
        countryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code. (See: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)'
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/customFields'
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        stateOrProvince:
          type: string
          description: Represents state or province.
        stateOrProvinceCode:
          type: string
        phone:
          type: string
        postalCode:
          type: string
        id:
          type: string
        shouldSaveAddress:
          type: boolean
          description: Indicates whether we should add this address to the customer address book.
      required:
        - countryCode
      title: address_Full
    consignmentAvailableShippingOptions:
      type: object
      properties:
        cost:
          type: number
          format: double
        description:
          type: string
          description: Read only.
        id:
          type: string
        imageUrl:
          type: string
        transitTime:
          type: string
          description: An estimate of the arrival time.
        type:
          type: string
          description: Specifies the type of shipping option; for example, flat rate, UPS, etc.
        isRecommended:
          type: boolean
          description: Is this shipping method the recommended shipping option or not.
        additionalDescription:
          type: string
      title: consignmentAvailableShippingOptions
    ConsignmentFullCouponDiscountsItems:
      type: object
      properties:
        amount:
          type: number
          format: double
        code:
          type: string
          description: Coupon code that applied this discount.
      title: ConsignmentFullCouponDiscountsItems
    ConsignmentFullDiscountsItems:
      type: object
      properties:
        id:
          type: string
          description: Discount rule ID that applied this discount.
      title: ConsignmentFullDiscountsItems
    PickupOption:
      type: object
      properties:
        pickupMethodId:
          type: integer
      description: An option that represents a location where customers can pick up items.
      title: PickupOption
    ConsignmentFullSelectedShippingOption:
      type: object
      properties:
        description:
          type: string
          description: Read only.
        id:
          type: string
        type:
          type: string
          description: Specifies the type of shipping option; for example, flat rate, UPS, etc.
        imageUrl:
          type: string
        cost:
          type: number
          format: double
        transitTime:
          type: string
          description: An estimate of the arrival time.
        additionalDescription:
          type: string
          description: Read only. Field used for Shipping Provider API.
      title: ConsignmentFullSelectedShippingOption
    ConsignmentFullShippingAddress:
      type: object
      properties: {}
      description: Use the `address` field instead.
      title: ConsignmentFullShippingAddress
    consignment_Full:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/address_Full'
        availableShippingOptions:
          type: array
          items:
            $ref: '#/components/schemas/consignmentAvailableShippingOptions'
          description: This is available only when "include=consignments.availableShippingOptions" is present in the URL.
        couponDiscounts:
          type: array
          items:
            $ref: '#/components/schemas/ConsignmentFullCouponDiscountsItems'
          description: List of consignment discounts applied through coupons.
        discounts:
          type: array
          items:
            $ref: '#/components/schemas/ConsignmentFullDiscountsItems'
          description: List of consignment discounts applied through cart level discounts.
        handlingCost:
          type: number
          format: double
          description: The handling cost of shipping for this consignment.
        id:
          type: string
        selectedPickupOption:
          $ref: '#/components/schemas/PickupOption'
        selectedShippingOption:
          $ref: '#/components/schemas/ConsignmentFullSelectedShippingOption'
        shippingAddress:
          $ref: '#/components/schemas/ConsignmentFullShippingAddress'
          description: Use the `address` field instead.
        shippingCost:
          type: number
          format: double
          description: The shipping cost for this consignment.
        shippingCostBeforeDiscount:
          type: number
          format: double
          description: This consignment's shipping cost before discounts are applied.
        comparisonShippingCost:
          type: number
          format: double
          description: This consignment's shipping cost after automatic promotions are applied.
        lineItemIds:
          type: array
          items:
            type: string
      description: >-
        This allows us to have multiple shipping addresses. Where there is only one shipping address, this array will
        contain only one value, with all the items.
      title: consignment_Full
    CheckoutCoupon:
      type: object
      properties:
        id:
          type: integer
          description: The coupon ID.
        code:
          type: string
          description: the coupon code
        displayName:
          type: string
          description: The coupon name displayed on the storefront.
        couponType:
          type: integer
          description: |-
            |Type `int`|Type Name|
            |-|-|
            |`0`|`per_item_discount`|
            |`1`|`percentage_discount`|
            |`2`|`per_total_discount`|
            |`3`|`shipping_discount`|
            |`4`|`free_shipping`|
            |`5`|`promotion`|
        discountedAmount:
          type: number
          format: double
          description: The discounted amount applied within a given context.
      required:
        - code
      title: CheckoutCoupon
    CheckoutFeeType:
      type: string
      enum:
        - custom_fee
      description: The type of the fee.
      title: CheckoutFeeType
    CheckoutFee:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: The fee ID.
        type:
          $ref: '#/components/schemas/CheckoutFeeType'
          description: The type of the fee.
        name:
          type: string
          description: Name of the fee.
        displayName:
          type: string
          description: Display name of the fee targeting customers/shoppers.
        cost:
          type: number
          format: double
          description: Cost of the fee (include or exclude tax dependent on tax settings, same as shipping cost).
        source:
          type: string
          description: The source of the request.
        taxClassId:
          type: integer
          description: The tax class ID.
      title: CheckoutFee
    CustomerAddressesItems:
      type: object
      properties:
        id:
          type: integer
        firstName:
          type: string
        lastName:
          type: string
        company:
          type: string
        address1:
          type: string
        address2:
          type: string
        city:
          type: string
        stateOrProvince:
          type: string
          description: State or province.
        stateOrProvinceCode:
          type: string
        countryCode:
          type: string
          description: '[ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) for the country.'
        postalCode:
          type: string
        phone:
          type: string
        type:
          type: string
          description: Address type.
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/customFields'
      title: CustomerAddressesItems
    CustomerCustomerGroup:
      type: object
      properties:
        id:
          type: integer
          description: ID of the customer group.
        name:
          type: string
          description: Name of the customer group.
      title: CustomerCustomerGroup
    Customer:
      type: object
      properties:
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/CustomerAddressesItems'
        customerGroup:
          $ref: '#/components/schemas/CustomerCustomerGroup'
        email:
          type: string
          description: Customer email.
        firstName:
          type: string
          description: Customer's first name.
        fullName:
          type: string
          description: Customer's full name.
        id:
          type: integer
          description: Customer ID.
        isGuest:
          type: boolean
          description: Whether the shopper is a guest or a logged-in customer.
        lastName:
          type: string
          description: Customer's last name.
        shouldEncourageSignIn:
          type: boolean
        storeCredit:
          type: number
          format: double
          description: The amount of store credit a customer has.
      description: Customer details.
      title: Customer
    checkoutGiftCertificates:
      type: object
      properties:
        balance:
          type: number
          format: double
        code:
          type: string
        purchaseDate:
          type: string
          format: date
        remaining:
          type: number
          format: double
        used:
          type: number
          format: double
      description: Applied gift certificate (as a payment method).
      title: checkoutGiftCertificates
    CheckoutFullPaymentsItemsProviderType:
      type: string
      enum:
        - PAYMENT_TYPE_HOSTED
      description: Type of payment provider.
      title: CheckoutFullPaymentsItemsProviderType
    CheckoutFullPaymentsItemsDetailItems:
      type: string
      enum:
        - FINALIZE
        - INITIALIZE
        - ACKNOWLEDGE
      title: CheckoutFullPaymentsItemsDetailItems
    CheckoutFullPaymentsItems:
      type: object
      properties:
        providerId:
          type: string
          description: Payment provider ID.
        gatewayId:
          type:
            - string
            - 'null'
          description: Payment gateway ID.
        providerType:
          $ref: '#/components/schemas/CheckoutFullPaymentsItemsProviderType'
          description: Type of payment provider.
        detail:
          type: array
          items:
            $ref: '#/components/schemas/CheckoutFullPaymentsItemsDetailItems'
          description: Details regarding which checkout steps a shopper has completed.
      title: CheckoutFullPaymentsItems
    CheckoutFullPromotionsItemsType:
      type: string
      enum:
        - promotion
        - upsell
        - eligible
        - applied
      title: CheckoutFullPromotionsItemsType
    CheckoutFullPromotionsItems:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/CheckoutFullPromotionsItemsType'
        text:
          type: string
          description: Text displayed on the storefront for the promotion.
      title: CheckoutFullPromotionsItems
    checkoutTax:
      type: object
      properties:
        name:
          type: string
          description: Name of the tax.
        amount:
          type: number
          format: double
      title: checkoutTax
    checkout_Full:
      type: object
      properties:
        billingAddress:
          $ref: '#/components/schemas/address_Base'
        cart:
          $ref: '#/components/schemas/checkoutCart'
        channelId:
          type: integer
          description: Channel ID.
        consignments:
          type: array
          items:
            $ref: '#/components/schemas/consignment_Full'
        coupons:
          type: array
          items:
            $ref: '#/components/schemas/CheckoutCoupon'
          description: Coupons applied at the checkout level.
        fees:
          type: array
          items:
            $ref: '#/components/schemas/CheckoutFee'
          description: Fees applied at the checkout level.
        createdTime:
          type: string
          description: Time when the cart was created.
        customer:
          $ref: '#/components/schemas/Customer'
        customerMessage:
          type: string
          description: Shopperʼs message provided as details for the order to be created from this cart
        giftCertificates:
          type: array
          items:
            $ref: '#/components/schemas/checkoutGiftCertificates'
          description: Applied gift certificate (as a payment method).
        giftWrappingCostTotal:
          type: number
          format: double
          description: Gift wrapping cost for all items, including or excluding tax.
        grandTotal:
          type: string
          title: float
          description: The total payable amount, before applying any store credit or gift certificate.
        handlingCostTotal:
          type: string
          title: float
          description: Handling cost for all consignments including or excluding tax.
        id:
          type: string
          format: uuid
        isStoreCreditApplied:
          type: boolean
          description: |
            `true` value indicates StoreCredit has been applied.
        orderId:
          type:
            - string
            - 'null'
        outstandingBalance:
          type: number
          format: double
          description: |
            `grandTotal` subtract the store-credit amount
        payments:
          type: array
          items:
            $ref: '#/components/schemas/CheckoutFullPaymentsItems'
        promotions:
          type: array
          items:
            $ref: '#/components/schemas/CheckoutFullPromotionsItems'
        shippingCostBeforeDiscount:
          type: string
          title: float
          description: Total shipping cost for the checkout before discounts are applied.
        comparisonShippingCost:
          type: string
          title: float
          description: Total shipping cost for the checkout after automatic promotions are applied.
        shippingCostTotal:
          type: string
          title: float
          description: Shipping cost before any discounts are applied.
        shouldExecuteSpamCheck:
          type: boolean
        subtotal:
          type: string
          title: float
          description: Subtotal of the checkout before applying item-level discounts. Tax inclusive based on the store settings.
        taxes:
          type: array
          items:
            $ref: '#/components/schemas/checkoutTax'
        taxTotal:
          type: string
          title: float
        updatedTime:
          type: string
          description: Time when the cart was last updated.
        version:
          type: integer
          description: >-
            The current version of the checkout increments with each successful update. You can use it to enable
            optimistic concurrency control for subsequent updates.
      title: checkout_Full
    CheckoutsCheckoutIdGetResponsesContentApplicationJsonSchemaErrorsItems:
      type: object
      properties:
        status:
          type: integer
        title:
          type: string
        type:
          type: string
        detail:
          type: string
      title: CheckoutsCheckoutIdGetResponsesContentApplicationJsonSchemaErrorsItems
    GetCheckoutRequestBadRequestError:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/CheckoutsCheckoutIdGetResponsesContentApplicationJsonSchemaErrorsItems'
      title: GetCheckoutRequestBadRequestError
    checkout_Put:
      type: object
      properties:
        customerMessage:
          type: string
        version:
          type: integer
          description: >-
            The cart version that you expect to apply the updates. If the provided version doesn't match the current
            cart version, you will receive a conflict error. This field is optional; if not provided, optimistic
            concurrency control will not apply.
      title: checkout_Put
    UpdateCheckoutRequestConflictError:
      type: object
      properties:
        status:
          type: integer
        title:
          type: string
        type:
          type: string
      title: UpdateCheckoutRequestConflictError
    BillingAddressRequest:
      type: object
      properties:
        address1:
          type: string
        address2:
          type: string
        city:
          type: string
        company:
          type: string
        country:
          type: string
          description: Country name.
        countryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code. (See: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)'
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/customFields'
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        stateOrProvince:
          type: string
          description: Represents state or province.
        stateOrProvinceCode:
          type: string
        phone:
          type: string
        postalCode:
          type: string
        version:
          type: integer
          description: >-
            The cart version that you expect to apply the updates. If the provided version doesn't match the current
            cart version, you will receive a conflict error. This field is optional; if not provided, optimistic
            concurrency control will not apply.
      required:
        - countryCode
      title: BillingAddressRequest
    AddCheckoutBillingAddressRequestConflictError:
      type: object
      properties:
        status:
          type: integer
        title:
          type: string
        type:
          type: string
      title: AddCheckoutBillingAddressRequestConflictError
    UpdateCheckoutBillingAddressRequestConflictError:
      type: object
      properties:
        status:
          type: integer
        title:
          type: string
        type:
          type: string
      title: UpdateCheckoutBillingAddressRequestConflictError
    CartLineItemGiftWrappingPutWrapDetailsItems:
      type: object
      properties:
        id:
          type: integer
          description: Identifier of the gift wrapping option selected.
        message:
          type: string
          description: Custom gift message.
      required:
        - id
      title: CartLineItemGiftWrappingPutWrapDetailsItems
    cartLineItemGiftWrapping_Put:
      type: object
      properties:
        wrapTogether:
          type: boolean
          description: Boolean value that specifies whether items whether items should be wrapped together or wrapped individually.
        wrapDetails:
          type: array
          items:
            $ref: '#/components/schemas/CartLineItemGiftWrappingPutWrapDetailsItems'
          description: >-
            Details for the gift wrapping option selected. This can be specified for each line item or together based on
            wrapTogether value.

            If wrapTogether is false, each element in the wrapDetails array determines each item's specific wrapping. 

            (e.g if this line item has 6 quantity, you can pass at maximum 6 elements for the array to spefified each
            one's wrapping)  

            If wrapTogether is true, we will only use 1st element in the wrapDetails array to determine what to be
            wrapped
      required:
        - wrapTogether
        - wrapDetails
      description: if passing null, it will remove the current gift wrapping for the item
      title: cartLineItemGiftWrapping_Put
    cartLineItemPut:
      type: object
      properties:
        quantity:
          type: number
          format: double
        productId:
          type: number
          format: double
        variantId:
          type: number
          format: double
        giftWrapping:
          $ref: '#/components/schemas/cartLineItemGiftWrapping_Put'
      title: cartLineItemPut
    contactEntity:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
      description: Model for sender and receiver objects.
      title: contactEntity
    cartLineItemGiftCertificate_Put:
      type: object
      properties:
        theme:
          type: string
          description: Currently supports `Birthday`, `Boy`, `Celebration`, `Christmas`, `General`, and `Girl`.
        amount:
          type: number
          format: double
        sender:
          $ref: '#/components/schemas/contactEntity'
        recipient:
          $ref: '#/components/schemas/contactEntity'
        message:
          type: string
          description: Message shown to recipient, as provided by sender.
        quantity:
          type: number
          format: double
      required:
        - theme
        - amount
        - sender
        - recipient
        - quantity
      title: cartLineItemGiftCertificate_Put
    cart_Put:
      type: object
      properties:
        lineItem:
          $ref: '#/components/schemas/cartLineItemPut'
        giftCertificate:
          $ref: '#/components/schemas/cartLineItemGiftCertificate_Put'
      title: cart_Put
    CheckoutsCheckoutIdConsignmentsPostParametersIncludeSchemaItems:
      type: string
      enum:
        - cart.lineItems.physicalItems.options
        - cart.lineItems.digitalItems.options
        - cart.lineItems.physicalItems.categoryNames
        - cart.lineItems.digitalItems.categoryNames
        - cart.lineItems.customItems.categoryNames
        - customer
        - customer.customerGroup
        - payments
        - promotions
        - consignments.availableShippingOptions
        - consignments.availablePickupOptions
      title: CheckoutsCheckoutIdConsignmentsPostParametersIncludeSchemaItems
    CreateConsignmentRequestShippingAddress:
      type: object
      properties: {}
      title: CreateConsignmentRequestShippingAddress
    CreateConsignmentRequestAddressCustomFieldsItems:
      type: object
      properties:
        fieldId:
          type: string
        fieldValue:
          type: string
      title: CreateConsignmentRequestAddressCustomFieldsItems
    CreateConsignmentRequestAddress:
      type: object
      properties:
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
        company:
          type: string
        address1:
          type: string
        address2:
          type: string
        city:
          type: string
        stateOrProvince:
          type: string
          description: Represents state or province.
        stateOrProvinceCode:
          type: string
        countryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code. (See: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)'
        postalCode:
          type: string
        phone:
          type: string
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/CreateConsignmentRequestAddressCustomFieldsItems'
        shouldSaveAddress:
          type: boolean
          description: Indicates whether we should add this address to the customer address book.
      required:
        - countryCode
      title: CreateConsignmentRequestAddress
    CreateConsignmentRequestLineItemsItems:
      type: object
      properties:
        itemId:
          type: string
          description: The ID of a line item.
        quantity:
          type: integer
          description: The quantity of the line item.
      required:
        - itemId
        - quantity
      title: CreateConsignmentRequestLineItemsItems
    CreateConsignmentRequestPickupOption:
      type: object
      properties:
        pickupMethodId:
          type: integer
      title: CreateConsignmentRequestPickupOption
    CreateConsignmentRequest:
      type: object
      properties:
        shippingAddress:
          $ref: '#/components/schemas/CreateConsignmentRequestShippingAddress'
        address:
          $ref: '#/components/schemas/CreateConsignmentRequestAddress'
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/CreateConsignmentRequestLineItemsItems'
        shippingOptionId:
          type: string
        pickupOption:
          $ref: '#/components/schemas/CreateConsignmentRequestPickupOption'
        version:
          type: integer
          description: >-
            The cart version that you expect to apply the updates. If the provided version doesn't match the current
            cart version, you will receive a conflict error. This field is optional; if not provided, optimistic
            concurrency control will not apply.
      title: CreateConsignmentRequest
    CreateCheckoutConsignmentRequestConflictError:
      type: object
      properties:
        status:
          type: integer
        title:
          type: string
        type:
          type: string
      title: CreateCheckoutConsignmentRequestConflictError
    CheckoutsCheckoutIdConsignmentsConsignmentIdPutParametersIncludeSchemaItems:
      type: string
      enum:
        - cart.lineItems.physicalItems.options
        - cart.lineItems.digitalItems.options
        - cart.lineItems.physicalItems.categoryNames
        - cart.lineItems.digitalItems.categoryNames
        - cart.lineItems.customItems.categoryNames
        - customer
        - customer.customerGroup
        - payments
        - promotions
        - consignments.availableShippingOptions
        - consignments.availablePickupOptions
      title: CheckoutsCheckoutIdConsignmentsConsignmentIdPutParametersIncludeSchemaItems
    NewUpdateConsignmentShippingAddress:
      type: object
      properties: {}
      title: NewUpdateConsignmentShippingAddress
    NewUpdateConsignmentAddressCustomFieldsItems:
      type: object
      properties:
        fieldId:
          type: string
        fieldValue:
          type: string
      title: NewUpdateConsignmentAddressCustomFieldsItems
    NewUpdateConsignmentAddress:
      type: object
      properties:
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
        company:
          type: string
        address1:
          type: string
        address2:
          type: string
        city:
          type: string
        stateOrProvince:
          type: string
          description: Represents state or province.
        stateOrProvinceCode:
          type: string
        countryCode:
          type: string
          description: 'ISO 3166-1 alpha-2 country code. (See: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)'
        postalCode:
          type: string
        phone:
          type: string
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/NewUpdateConsignmentAddressCustomFieldsItems'
        shouldSaveAddress:
          type: boolean
          description: Indicates whether we should add this address to the customer address book.
      required:
        - countryCode
      title: NewUpdateConsignmentAddress
    NewUpdateConsignmentLineItemsItems:
      type: object
      properties:
        itemId:
          type: string
          description: The ID of a line item.
        quantity:
          type: integer
          description: The quantity of a line item.
      required:
        - itemId
        - quantity
      title: NewUpdateConsignmentLineItemsItems
    NewUpdateConsignmentPickupOption:
      type: object
      properties:
        pickupMethodId:
          type: integer
      title: NewUpdateConsignmentPickupOption
    NewUpdateConsignment:
      type: object
      properties:
        shippingAddress:
          $ref: '#/components/schemas/NewUpdateConsignmentShippingAddress'
        address:
          $ref: '#/components/schemas/NewUpdateConsignmentAddress'
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/NewUpdateConsignmentLineItemsItems'
        shippingOptionId:
          type: string
        pickupOption:
          $ref: '#/components/schemas/NewUpdateConsignmentPickupOption'
        version:
          type: integer
          description: >-
            The cart version that you expect to apply the updates. If the provided version doesn't match the current
            cart version, you will receive a conflict error. This field is optional; if not provided, optimistic
            concurrency control will not apply.
      description: >-
        One or more of these three fields is mandatory. You can update address and line items in one request. You have
        to update shipping option ID or pickup option ID in a separate request since changing the address or line items
        can invalidate the previously available shipping options.
      title: NewUpdateConsignment
    UpdateCheckoutConsignmentRequestConflictError:
      type: object
      properties:
        status:
          type: integer
        title:
          type: string
        type:
          type: string
      title: UpdateCheckoutConsignmentRequestConflictError
    DeleteConsignmentRequest:
      type: object
      properties:
        version:
          type: integer
          description: >-
            The cart version that you expect to apply the updates. If the provided version doesn't match the current
            cart version, you will receive a conflict error. This field is optional; if not provided, optimistic
            concurrency control will not apply.
      title: DeleteConsignmentRequest
    DeleteCheckoutConsignmentRequestConflictError:
      type: object
      properties:
        status:
          type: integer
        title:
          type: string
        type:
          type: string
      title: DeleteCheckoutConsignmentRequestConflictError
    AddCheckoutCouponRequestConflictError:
      type: object
      properties:
        status:
          type: integer
        title:
          type: string
        type:
          type: string
      title: AddCheckoutCouponRequestConflictError
    DeleteCouponCodeRequest:
      type: object
      properties:
        version:
          type: integer
          description: >-
            The cart version that you expect to apply the updates. If the provided version doesn't match the current
            cart version, you will receive a conflict error. This field is optional; if not provided, optimistic
            concurrency control will not apply.
      title: DeleteCouponCodeRequest
    DeleteCheckoutCouponRequestConflictError:
      type: object
      properties:
        status:
          type: integer
        title:
          type: string
        type:
          type: string
      title: DeleteCheckoutCouponRequestConflictError
    GiftCertificateRequest:
      type: object
      properties:
        giftCertificateCode:
          type: string
      title: GiftCertificateRequest
    AddCheckoutGiftCertificateRequestNotFoundError:
      type: object
      properties: {}
      title: AddCheckoutGiftCertificateRequestNotFoundError
    SpamProtectionRequest:
      type: object
      properties:
        token:
          type: string
      title: SpamProtectionRequest
    Spam Protection_checkoutSpamProtection_Response_200:
      type: object
      properties: {}
      title: Spam Protection_checkoutSpamProtection_Response_200
    Store Credit_addCheckoutStoreCredit_Response_200:
      type: object
      properties: {}
      title: Store Credit_addCheckoutStoreCredit_Response_200
    Store Credit_removeCheckoutStoreCredit_Response_200:
      type: object
      properties: {}
      title: Store Credit_removeCheckoutStoreCredit_Response_200
