openapi: 3.0.1
info:
  title: Ecommerce API
  description: ""
  version: "1.0"
servers:
  - url: https://apigw.ipxo.com/ecommerce
paths:
  /public/{user_id}/addresses:
    post:
      tags:
        - Address
      summary: Create Address
      description: Create a single Address.
      operationId: createAddress
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - country_code
                - company_name
                - line_one
                - city
                - postcode
              type: object
              properties:
                country_code:
                  type: string
                  description: The <code>code</code> of an existing record in the countries table.
                vat_number:
                  type: string
                  description: ""
                  nullable: true
                first_name:
                  type: string
                  description: Must not be greater than 20 characters.
                  nullable: true
                last_name:
                  type: string
                  description: Must not be greater than 30 characters.
                  nullable: true
                company_name:
                  type: string
                  description: Must match the regex /^[A-Za-z0-9.()[\],'"_\/@&!*+\-, ]+$/. Must not be greater than 150 characters.
                company_code:
                  type: string
                  description: Must be at least 3 characters. Must not be greater than 20 characters.
                  nullable: true
                line_one:
                  type: string
                  description: Must be at least 2 characters. Must not be greater than 100 characters.
                line_two:
                  type: string
                  description: Must not be greater than 100 characters.
                  nullable: true
                line_three:
                  type: string
                  description: Must not be greater than 100 characters.
                  nullable: true
                city:
                  type: string
                  description: Must not be greater than 90 characters.
                province_code:
                  type: string
                  description: The <code>code</code> of an existing record in the provinces table. Must not be greater than 20 characters.
                  nullable: true
                postcode:
                  type: string
                  description: Must not be greater than 20 characters.
                contact_email:
                  type: string
                  description: Must be a valid email address. Must not be greater than 255 characters.
                  nullable: true
                contact_phone:
                  type: string
                  description: Must not be greater than 20 characters.
                  nullable: true
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      first_name:
                        type: string
                      last_name:
                        type: string
                      company_name:
                        type: string
                      vat_number:
                        type: string
                      vat_validation_status:
                        type: string
                      vat_validated_at:
                        type: string
                      line_one:
                        type: string
                      line_two:
                        type: string
                      line_three:
                        type: string
                      city:
                        type: string
                      province_code:
                        type: string
                      country_code:
                        type: string
                      postcode:
                        type: string
                      contact_email:
                        type: string
                      contact_phone:
                        type: string
                      company_code:
                        type: string
      x-ipxo-slug: createaddress
      x-ipxo-group: Addresses
    get:
      tags:
        - Address
      summary: List Customer Billing Addresses
      description: List the customer billing addresses.
      operationId: listCustomerBillingAddresses
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: filter[addressable_type]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[addressable_id]
          in: query
          description: ""
          schema:
            type: string
            description: ""
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        first_name:
                          type: string
                        last_name:
                          type: string
                        company_name:
                          type: string
                        vat_number:
                          type: string
                        vat_validation_status:
                          type: string
                        vat_validated_at:
                          type: string
                        line_one:
                          type: string
                        line_two:
                          type: string
                        line_three:
                          type: string
                        city:
                          type: string
                        province_code:
                          type: string
                        country_code:
                          type: string
                        postcode:
                          type: string
                        contact_email:
                          type: string
                        contact_phone:
                          type: string
                        company_code:
                          type: string
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listcustomerbillingaddresses
      x-ipxo-group: Addresses
  /public/common/countries:
    get:
      tags:
        - Address
      summary: List Countries
      description: List all Countries.
      operationId: listCountries
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        code:
                          type: string
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listcountries
      x-ipxo-group: Addresses
  /public/common/countries/{country_code}/provinces:
    get:
      tags:
        - Address
      summary: List Provinces
      description: List all Provinces for a Country.
      operationId: listProvinces
      parameters:
        - name: country_code
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        country_code:
                          type: string
                        name:
                          type: string
                        code:
                          type: string
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listprovinces
      x-ipxo-group: Addresses
  /public/{user_id}/cart/{cart_uuid}:
    get:
      tags:
        - Cart
      summary: Show Cart
      description: Show the Cart.
      operationId: showCart
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: cart_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      remaining_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_eligible_amount:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total_before_tax:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      discount_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      expires_at:
                        type: string
      x-ipxo-slug: showcart
      x-ipxo-group: Cart & checkout
  /public/{user_id}/cart/{cart_uuid}/lines:
    get:
      tags:
        - Cart
      summary: List Cart Lines
      description: List the current Cart Lines.
      operationId: listCartLines
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: cart_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        reference_id:
                          type: string
                        title:
                          type: string
                        description:
                          type: string
                        quantity:
                          type: integer
                        unit_quantity:
                          type: integer
                        purchasable_type:
                          type: string
                        purchasable_id:
                          type: string
                        unit_price:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        sub_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        discount_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        tax_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        total_before_tax:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        exchange_rate:
                          type: string
                        exchange_rate_fetched_at:
                          type: string
      x-ipxo-slug: listcartlines
      x-ipxo-group: Cart & checkout
    post:
      tags:
        - Cart
      summary: Add To Cart
      description: Add a Purchasable to the Cart.
      operationId: addToCart
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: cart_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - price_id
              type: object
              properties:
                price_id:
                  type: string
                  description: Must be a valid UUID. The <code>uuid</code> of an existing record in the prices table.
                quantity:
                  type: number
                  description: Must be at least 1.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      reference_id:
                        type: string
                      title:
                        type: string
                      description:
                        type: string
                      quantity:
                        type: integer
                      unit_quantity:
                        type: integer
                      purchasable_type:
                        type: string
                      purchasable_id:
                        type: string
                      unit_price:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total_before_tax:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      exchange_rate:
                        type: string
                      exchange_rate_fetched_at:
                        type: string
      x-ipxo-slug: addtocart
      x-ipxo-group: Cart & checkout
  /public/{user_id}/cart/{cart_uuid}/lines/{cartLine_uuid}:
    delete:
      tags:
        - Cart
      summary: Remove Line
      description: Remove a Cart Line.
      operationId: removeLine
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: cart_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: cartLine_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      remaining_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_eligible_amount:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total_before_tax:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      discount_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      expires_at:
                        type: string
      x-ipxo-slug: removeline
      x-ipxo-group: Cart & checkout
  /public/{user_id}/cart/{cart_uuid}/addresses/{customerAddress_id}:
    post:
      tags:
        - Cart
      summary: Create Cart Address
      description: Create a single Cart Address.
      operationId: createCartAddress
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: integer
        - name: cart_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: customerAddress_id
          in: path
          description: The ID of the customerAddress.
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      first_name:
                        type: string
                      last_name:
                        type: string
                      company_name:
                        type: string
                      vat_number:
                        type: string
                      vat_validation_status:
                        type: string
                      vat_validated_at:
                        type: string
                      line_one:
                        type: string
                      line_two:
                        type: string
                      line_three:
                        type: string
                      city:
                        type: string
                      province_code:
                        type: string
                      country_code:
                        type: string
                      postcode:
                        type: string
                      contact_email:
                        type: string
                      contact_phone:
                        type: string
                      company_code:
                        type: string
      x-ipxo-slug: createcartaddress
      x-ipxo-group: Cart & checkout
    patch:
      tags:
        - Cart
      summary: Update Cart Address
      description: Update a Cart Address.
      operationId: updateCartAddress
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: integer
        - name: cart_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: customerAddress_id
          in: path
          description: The ID of the customerAddress.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              required:
                - line_one
                - city
                - postcode
              type: object
              properties:
                line_one:
                  type: string
                  description: Must not be greater than 255 characters.
                line_two:
                  type: string
                  description: Must not be greater than 255 characters.
                  nullable: true
                city:
                  type: string
                  description: Must not be greater than 255 characters.
                postcode:
                  type: string
                  description: Must not be greater than 20 characters.
                province_code:
                  type: string
                  description: Must not be greater than 10 characters.
                  nullable: true
                contact_email:
                  type: string
                  description: Must be a valid email address. Must not be greater than 255 characters.
                  nullable: true
                vat_number:
                  type: string
                  description: Must not be greater than 50 characters.
                  nullable: true
                company_code:
                  type: string
                  description: Must not be greater than 50 characters.
                  nullable: true
                first_name:
                  type: string
                  description: Must not be greater than 255 characters.
                  nullable: true
                last_name:
                  type: string
                  description: Must not be greater than 255 characters.
                  nullable: true
                company_name:
                  type: string
                  description: Must not be greater than 255 characters.
                  nullable: true
                contact_phone:
                  type: string
                  description: Must not be greater than 50 characters.
                  nullable: true
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      first_name:
                        type: string
                      last_name:
                        type: string
                      company_name:
                        type: string
                      vat_number:
                        type: string
                      vat_validation_status:
                        type: string
                      vat_validated_at:
                        type: string
                      line_one:
                        type: string
                      line_two:
                        type: string
                      line_three:
                        type: string
                      city:
                        type: string
                      province_code:
                        type: string
                      country_code:
                        type: string
                      postcode:
                        type: string
                      contact_email:
                        type: string
                      contact_phone:
                        type: string
                      company_code:
                        type: string
      x-ipxo-slug: updatecartaddress
      x-ipxo-group: Cart & checkout
  /public/{user_id}/cart/{cart_uuid}/payment-method/{paymentMethod_uuid}:
    patch:
      tags:
        - Cart
      summary: Update Cart Payment Method
      description: Update the Cart Payment Method.
      operationId: updateCartPaymentMethod
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: cart_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: paymentMethod_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      remaining_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_eligible_amount:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total_before_tax:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      discount_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      expires_at:
                        type: string
      x-ipxo-slug: updatecartpaymentmethod
      x-ipxo-group: Cart & checkout
  /public/{user_id}/cart/{cart_uuid}/payment-method:
    get:
      tags:
        - Cart
      summary: Show Cart Payment Method
      description: Show cart payment method.
      operationId: showCartPaymentMethod
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: cart_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      type:
                        type: string
                      is_default:
                        type: boolean
      x-ipxo-slug: showcartpaymentmethod
      x-ipxo-group: Cart & checkout
  /public/{user_id}/cart/{cart_uuid}/discount-code/{discountCode_code}:
    post:
      tags:
        - Cart
      summary: Apply Discount Code
      description: Applies discount code to cart.
      operationId: applyDiscountCode
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: cart_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: discountCode_code
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      remaining_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_eligible_amount:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total_before_tax:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      discount_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      expires_at:
                        type: string
        "204":
          description: Successfully applied discount code to cart
          content:
            application/json:
              schema:
                type: object
                nullable: true
      x-ipxo-slug: applydiscountcode
      x-ipxo-group: Cart & checkout
    delete:
      tags:
        - Cart
      summary: Remove Discount Code from Cart
      description: Remove discount code from a cart.
      operationId: removeDiscountCodeFromCart
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: cart_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: discountCode_code
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "204":
          description: Successfully removed discount code from cart
          content:
            application/json:
              schema:
                type: object
                nullable: true
      x-ipxo-slug: removediscountcodefromcart
      x-ipxo-group: Cart & checkout
  /public/{user_id}/cart/{cart_uuid}/checkout:
    post:
      tags:
        - Cart
      summary: Checkout Cart
      description: Checkout the current Cart.
      operationId: checkoutCart
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: cart_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      order:
                        type: object
                        properties:
                          uuid:
                            type: string
                          status:
                            type: string
                          placed_at:
                            type: string
                          expires_at:
                            type: string
                          sub_total:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          discount_total:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          tax_total:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          credits_total:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          total:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          remaining_total:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          total_before_tax:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          tax_breakdown:
                            type: array
                            items:
                              type: object
                              properties:
                                amount:
                                  type: object
                                  properties:
                                    currency:
                                      type: string
                                    amount:
                                      type: string
                                    amount_minor:
                                      type: integer
                                code:
                                  type: string
                                name:
                                  type: string
                                rate:
                                  type: integer
                                calculator_type:
                                  type: string
                                notice:
                                  type: string
                                  nullable: true
                          discount_breakdown:
                            type: array
                            items:
                              type: object
                              properties:
                                amount:
                                  type: object
                                  properties:
                                    currency:
                                      type: string
                                    amount:
                                      type: string
                                    amount_minor:
                                      type: integer
                                code:
                                  type: string
                                name:
                                  type: string
                                rate:
                                  type: integer
                                calculator_type:
                                  type: string
                                notice:
                                  type: string
                                  nullable: true
      x-ipxo-slug: checkoutcart
      x-ipxo-group: Cart & checkout
  /public/{user_id}/gateways:
    get:
      tags:
        - Gateway
      summary: List Gateways
      description: List all Gateways.
      operationId: listGateways
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        gateway:
                          type: string
                        config:
                          type: object
                          properties:
                            public_key:
                              type: string
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listgateways
      x-ipxo-group: Payment methods
  /public/{user_id}/gateways/{gatewayConfig_uuid}/{paymentMethodType}:
    post:
      tags:
        - Gateway
      summary: Add Payment Method
      description: Add Payment Method
      operationId: addPaymentMethod
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: gatewayConfig_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: paymentMethodType
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "204":
          description: Card added successfully
          content:
            application/json:
              schema:
                type: object
                nullable: true
      x-ipxo-slug: addpaymentmethod
      x-ipxo-group: Payment methods
  /public/{user_id}/invoices:
    get:
      tags:
        - Invoice
      summary: List Invoices
      description: List the current User's Invoices.
      operationId: listInvoices
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: sort
          in: query
          description: A comma-separated list of fields to sort. Multiple allowed. Prefix with `-` to sort descending.
          schema:
            enum:
              - placed_at
            type: string
            description: A comma-separated list of fields to sort. Multiple allowed. Prefix with `-` to sort descending.
        - name: filter[invoicable_id]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[invoicable_type]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[uuid]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[status]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[placed_at]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[type]
          in: query
          description: ""
          schema:
            type: string
            description: ""
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        reference:
                          type: string
                        status:
                          type: string
                        type:
                          type: string
                        placed_at:
                          type: string
                        due_date:
                          type: string
                        sub_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        discount_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        tax_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        credits_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        total_before_tax:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        invoicable_id:
                          type: string
                        invoicable_type:
                          type: string
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listinvoices
      x-ipxo-group: Invoices
  /public/{user_id}/invoices/{invoice_uuid}:
    get:
      tags:
        - Invoice
      summary: Show Invoice
      description: Returns a single Invoice extended information.
      operationId: showInvoice
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: invoice_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      reference:
                        type: string
                      status:
                        type: string
                      type:
                        type: string
                      placed_at:
                        type: string
                      due_date:
                        type: string
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total_before_tax:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      invoicable_id:
                        type: string
                      invoicable_type:
                        type: string
      x-ipxo-slug: showinvoice
      x-ipxo-group: Invoices
  /public/{user_id}/invoices/{invoice_uuid}/lines:
    get:
      tags:
        - Invoice
      summary: List Invoice Lines
      description: List the Invoice Lines.
      operationId: listInvoiceLines
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: invoice_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: include
          in: query
          description: A comma-separated list of relationships to include. Multiple parameters are allowed.
          schema:
            enum:
              - invoice
            type: string
            description: A comma-separated list of relationships to include. Multiple parameters are allowed.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        title:
                          type: string
                        description:
                          type: string
                        unit_quantity:
                          type: integer
                        quantity:
                          type: integer
                        subtotal:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        unit_price:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        tax_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        discount_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        total_before_tax:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        exchange_rate:
                          type: string
                        exchange_rate_fetched_at:
                          type: string
                        notes:
                          type: string
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listinvoicelines
      x-ipxo-group: Invoices
  /public/{user_id}/invoices/{invoice_uuid}/download:
    get:
      tags:
        - Invoice
      summary: Download Invoice
      description: Download an Invoice.
      operationId: downloadInvoice
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: invoice_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Successfully generated and returned an Invoice file.
          content:
            application/json:
              schema:
                type: object
                nullable: true
      x-ipxo-slug: downloadinvoice
      x-ipxo-group: Invoices
  /public/{user_id}/orders:
    get:
      tags:
        - Order
      summary: List Orders
      description: Returns a list of Orders.
      operationId: listOrders
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: sort
          in: query
          description: A comma-separated list of fields to sort. Multiple allowed. Prefix with `-` to sort descending.
          schema:
            enum:
              - placed_at
              - created_at
            type: string
            description: A comma-separated list of fields to sort. Multiple allowed. Prefix with `-` to sort descending.
        - name: filter[uuid]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[status]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[purchasable_uuid]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[purchasable_type]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[placed_at]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[reference_id]
          in: query
          description: ""
          schema:
            type: string
            description: ""
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        status:
                          type: string
                        placed_at:
                          type: string
                        expires_at:
                          type: string
                        sub_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        discount_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        tax_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        credits_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        remaining_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        total_before_tax:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        tax_breakdown:
                          type: array
                          items:
                            type: object
                            properties:
                              amount:
                                type: object
                                properties:
                                  currency:
                                    type: string
                                  amount:
                                    type: string
                                  amount_minor:
                                    type: integer
                              code:
                                type: string
                              name:
                                type: string
                              rate:
                                type: integer
                              calculator_type:
                                type: string
                              notice:
                                type: string
                                nullable: true
                        discount_breakdown:
                          type: array
                          items:
                            type: object
                            properties:
                              amount:
                                type: object
                                properties:
                                  currency:
                                    type: string
                                  amount:
                                    type: string
                                  amount_minor:
                                    type: integer
                              code:
                                type: string
                              name:
                                type: string
                              rate:
                                type: integer
                              calculator_type:
                                type: string
                              notice:
                                type: string
                                nullable: true
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listorders
      x-ipxo-group: Orders
  /public/{user_id}/orders/{publicOrder_uuid}:
    get:
      tags:
        - Order
      summary: Show Order
      description: Returns a single Order extended information.
      operationId: showOrder
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: include
          in: query
          description: A comma-separated list of relationships to include. Multiple parameters are allowed.
          schema:
            enum:
              - paymentIntents
            type: string
            description: A comma-separated list of relationships to include. Multiple parameters are allowed.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      status:
                        type: string
                      placed_at:
                        type: string
                      expires_at:
                        type: string
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      remaining_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total_before_tax:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      discount_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
      x-ipxo-slug: showorder
      x-ipxo-group: Orders
  /public/{user_id}/orders/{publicOrder_uuid}/checkout:
    post:
      tags:
        - Order
      summary: Checkout Order
      description: Checkout the Order.
      operationId: checkoutOrder
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      order:
                        type: object
                        properties:
                          uuid:
                            type: string
                          status:
                            type: string
                          placed_at:
                            type: string
                          expires_at:
                            type: string
                          sub_total:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          discount_total:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          tax_total:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          credits_total:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          total:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          remaining_total:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          total_before_tax:
                            type: object
                            properties:
                              currency:
                                type: string
                              amount:
                                type: string
                              amount_minor:
                                type: integer
                          tax_breakdown:
                            type: array
                            items:
                              type: object
                              properties:
                                amount:
                                  type: object
                                  properties:
                                    currency:
                                      type: string
                                    amount:
                                      type: string
                                    amount_minor:
                                      type: integer
                                code:
                                  type: string
                                name:
                                  type: string
                                rate:
                                  type: integer
                                calculator_type:
                                  type: string
                                notice:
                                  type: string
                                  nullable: true
                          discount_breakdown:
                            type: array
                            items:
                              type: object
                              properties:
                                amount:
                                  type: object
                                  properties:
                                    currency:
                                      type: string
                                    amount:
                                      type: string
                                    amount_minor:
                                      type: integer
                                code:
                                  type: string
                                name:
                                  type: string
                                rate:
                                  type: integer
                                calculator_type:
                                  type: string
                                notice:
                                  type: string
                                  nullable: true
                      payment_response:
                        type: object
                        properties:
                          key:
                            type: string
      x-ipxo-slug: checkoutorder
      x-ipxo-group: Orders
  /public/{user_id}/orders/{publicOrder_uuid}/lines:
    get:
      tags:
        - Order
      summary: List Order Lines
      description: List the Order Lines.
      operationId: listOrderLines
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: include
          in: query
          description: A comma-separated list of relationships to include. Multiple parameters are allowed.
          schema:
            enum:
              - price
              - price.tiers
            type: string
            description: A comma-separated list of relationships to include. Multiple parameters are allowed.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        title:
                          type: string
                        description:
                          type: string
                        quantity:
                          type: integer
                        unit_quantity:
                          type: integer
                        exchange_rate:
                          type: string
                          nullable: true
                        exchange_rate_fetched_at:
                          type: string
                          nullable: true
                        unit_price:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        sub_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        discount_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        tax_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        total_before_tax:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        notes:
                          type: string
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listorderlines
      x-ipxo-group: Orders
  /public/{user_id}/orders/{publicOrder_uuid}/transactions:
    get:
      tags:
        - Order
      summary: List Order Transactions
      description: List the Order Transactions.
      operationId: listOrderTransactions
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        type:
                          type: string
                        status:
                          type: string
                        gateway_driver:
                          type: string
                        amount:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        reference:
                          type: string
                        initiated_at:
                          type: string
                        created_at:
                          type: string
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listordertransactions
      x-ipxo-group: Orders
  /public/{user_id}/orders/{publicOrder}/payment-methods/{paymentMethod_uuid}:
    patch:
      tags:
        - Order
      summary: Update Payment Method
      description: Update a Payment Method to Order
      operationId: updatePaymentMethod
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: paymentMethod_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "204":
          description: Successfully Updated Payment Method to Order
          content:
            application/json:
              schema:
                type: object
                nullable: true
      x-ipxo-slug: updatepaymentmethod
      x-ipxo-group: Orders
  /public/{user_id}/orders/{publicOrder}/payment-method:
    get:
      tags:
        - Order
      summary: Show Payment Method
      description: Show Order payment method
      operationId: showPaymentMethod
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      type:
                        type: string
                      is_default:
                        type: boolean
                      details:
                        type: object
                        properties:
                          card_brand:
                            type: string
                          card_last_four:
                            type: string
                          card_expiry_month:
                            type: integer
                          card_expiry_year:
                            type: integer
                      status:
                        type: string
      x-ipxo-slug: showpaymentmethod
      x-ipxo-group: Orders
  /public/{user_id}/orders/{publicOrder_uuid}/addresses/{customerAddress_id}:
    post:
      tags:
        - Order
      summary: Create Order Address
      description: Creates a new Order address.
      operationId: createOrderAddress
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: customerAddress_id
          in: path
          description: The ID of the customerAddress.
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      first_name:
                        type: string
                      last_name:
                        type: string
                      company_name:
                        type: string
                      vat_number:
                        type: string
                      vat_validation_status:
                        type: string
                      vat_validated_at:
                        type: string
                      line_one:
                        type: string
                      line_two:
                        type: string
                      line_three:
                        type: string
                      city:
                        type: string
                      province_code:
                        type: string
                      country_code:
                        type: string
                      postcode:
                        type: string
                      contact_email:
                        type: string
                      contact_phone:
                        type: string
                      company_code:
                        type: string
      x-ipxo-slug: createorderaddress
      x-ipxo-group: Orders
    patch:
      tags:
        - Order
      summary: Update Order Address
      description: Updates an Order address.
      operationId: updateOrderAddress
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: customerAddress_id
          in: path
          description: The ID of the customerAddress.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              required:
                - line_one
                - city
                - postcode
              type: object
              properties:
                line_one:
                  type: string
                  description: Must not be greater than 255 characters.
                line_two:
                  type: string
                  description: Must not be greater than 255 characters.
                  nullable: true
                city:
                  type: string
                  description: Must not be greater than 255 characters.
                postcode:
                  type: string
                  description: Must not be greater than 20 characters.
                province_code:
                  type: string
                  description: Must not be greater than 10 characters.
                  nullable: true
                contact_email:
                  type: string
                  description: Must be a valid email address. Must not be greater than 255 characters.
                  nullable: true
                vat_number:
                  type: string
                  description: Must not be greater than 50 characters.
                  nullable: true
                company_code:
                  type: string
                  description: Must not be greater than 50 characters.
                  nullable: true
                first_name:
                  type: string
                  description: Must not be greater than 255 characters.
                  nullable: true
                last_name:
                  type: string
                  description: Must not be greater than 255 characters.
                  nullable: true
                company_name:
                  type: string
                  description: Must not be greater than 255 characters.
                  nullable: true
                contact_phone:
                  type: string
                  description: Must not be greater than 50 characters.
                  nullable: true
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      first_name:
                        type: string
                      last_name:
                        type: string
                      company_name:
                        type: string
                      vat_number:
                        type: string
                      vat_validation_status:
                        type: string
                      vat_validated_at:
                        type: string
                      line_one:
                        type: string
                      line_two:
                        type: string
                      line_three:
                        type: string
                      city:
                        type: string
                      province_code:
                        type: string
                      country_code:
                        type: string
                      postcode:
                        type: string
                      contact_email:
                        type: string
                      contact_phone:
                        type: string
                      company_code:
                        type: string
                      async_processing_required:
                        type: boolean
      x-ipxo-slug: updateorderaddress
      x-ipxo-group: Orders
  /public/{user_id}/payment-methods:
    get:
      tags:
        - Payment
      summary: List Payment Methods
      description: List the Payment Methods.
      operationId: listPaymentMethods
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: filter[type]
          in: query
          description: ""
          schema:
            enum:
              - card
              - bank-transfer
            type: string
            description: ""
        - name: filter[status]
          in: query
          description: ""
          schema:
            enum:
              - active
              - deleting
              - deleted
            type: string
            description: ""
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        type:
                          type: string
                        is_default:
                          type: boolean
                        details:
                          type: object
                          properties:
                            card_brand:
                              type: string
                            card_last_four:
                              type: string
                            card_expiry_month:
                              type: integer
                            card_expiry_year:
                              type: integer
                        status:
                          type: string
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listpaymentmethods
      x-ipxo-group: Payment methods
  /public/{user_id}/payment-methods/{paymentMethod_uuid}:
    delete:
      tags:
        - Payment
      summary: Delete Payment Method
      description: Delete a Payment Method
      operationId: deletePaymentMethod
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: paymentMethod_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "204":
          description: Successful Deleted Payment Method
          content:
            application/json:
              schema:
                type: object
                nullable: true
      x-ipxo-slug: deletepaymentmethod
      x-ipxo-group: Payment methods
    patch:
      tags:
        - Payment
      summary: Updates Payment Method
      description: Updates Payment Method information.
      operationId: updatesPaymentMethod
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: paymentMethod_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                make_default:
                  type: boolean
                  description: ""
                  nullable: true
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      type:
                        type: string
                      is_default:
                        type: boolean
                      details:
                        type: object
                        properties:
                          card_brand:
                            type: string
                          card_last_four:
                            type: string
                          card_expiry_month:
                            type: integer
                          card_expiry_year:
                            type: integer
                      status:
                        type: string
      x-ipxo-slug: updatespaymentmethod
      x-ipxo-group: Payment methods
  /public/{user_id}/products/bundles:
    get:
      tags:
        - Product
      summary: List Bundle Variants
      description: Return the List of all Bundle Variants that are purchasable.
      operationId: listBundleVariants
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: include
          in: query
          description: A comma-separated list of relationships to include. Multiple parameters are allowed.
          schema:
            enum:
              - productVariants
              - purchasableSubscription
              - purchasableSubscription.subscriptionPlan
            type: string
            description: A comma-separated list of relationships to include. Multiple parameters are allowed.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        name:
                          type: string
                        short_description:
                          type: string
                        type:
                          type: string
                        price:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listbundlevariants
      x-ipxo-group: Products
  /public/common/stripe/webhook:
    post:
      tags:
        - Stripe
      summary: postPublicCommonStripeWebhook
      operationId: postPublicCommonStripeWebhook
      responses:
        "200":
          description: Webhook Handled
          content:
            application/json:
              schema:
                type: object
                nullable: true
      x-ipxo-slug: postpubliccommonstripewebhook
      x-ipxo-group: Webhooks
  /public/{user_id}:
    get:
      tags:
        - User
      summary: Show Customer
      description: Show the current Customer
      operationId: showCustomer
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      auth_id:
                        type: string
                      name:
                        type: string
                      business_entity_id:
                        type: string
                      currency:
                        type: string
      x-ipxo-slug: showcustomer
      x-ipxo-group: Account
  /public/{user_id}/orders/{publicOrder}/discount-code/{discountCode_code}:
    delete:
      tags:
        - Order
      summary: Remove Discount Code
      description: Remove discount code from order.
      operationId: removeDiscountCode
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: discountCode_code
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "204":
          description: Successfully removed discount code from order
          content:
            application/json:
              schema:
                type: object
                nullable: true
      x-ipxo-slug: removediscountcode
      x-ipxo-group: Orders
    post:
      tags:
        - Order
      summary: Apply Discount Code To Order
      description: Apply Discount Code to Order
      operationId: applyDiscountCodeToOrder
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: discountCode_code
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      status:
                        type: string
                      placed_at:
                        type: string
                      expires_at:
                        type: string
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      remaining_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total_before_tax:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      discount_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      enabled_free_checkout:
                        type: boolean
                      auto_charge:
                        type: boolean
      x-ipxo-slug: applydiscountcodetoorder
      x-ipxo-group: Orders
  /public/{user_id}/flags:
    get:
      tags:
        - Customer
      summary: List Customer Flags
      description: Returns flags attached to a customer.
      operationId: listCustomerFlags
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      name:
                        type: string
                      slug:
                        type: string
      x-ipxo-slug: listcustomerflags
      x-ipxo-group: Account
  /public/{user_id}/gateways/{gatewayConfig_uuid}/setup:
    post:
      tags:
        - Gateway
      summary: Setup Gateway
      description: Setup Gateway
      operationId: setupGateway
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: gatewayConfig_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                nullable: true
      x-ipxo-slug: setupgateway
      x-ipxo-group: Payment methods
  /public/{user_id}/subscriptions:
    get:
      tags:
        - Subscription
      summary: List Subscriptions
      description: List all Subscriptions.
      operationId: listSubscriptions
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: filter[status]
          in: query
          description: ""
          schema:
            enum:
              - active
              - pending
              - expired
              - draft
              - terminated
            type: string
            description: ""
        - name: filter[name]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[current_period_end]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: include
          in: query
          description: A comma-separated list of relationships to include. Multiple parameters are allowed.
          schema:
            enum:
              - discountCode
              - currentPhase
              - processingRenewalOrder
            type: string
            description: A comma-separated list of relationships to include. Multiple parameters are allowed.
        - name: sort
          in: query
          description: A comma-separated list of fields to sort. Multiple allowed. Prefix with `-` to sort descending.
          schema:
            enum:
              - created_at
            type: string
            description: A comma-separated list of fields to sort. Multiple allowed. Prefix with `-` to sort descending.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        name:
                          type: string
                        short_description:
                          type: string
                        status:
                          type: string
                        current_period_start:
                          type: string
                        current_period_end:
                          type: string
                        previous_period_start:
                          type: string
                        previous_period_end:
                          type: string
                        started_at:
                          type: string
                        terminated_at:
                          type: string
                          nullable: true
                        terminate_at:
                          type: string
                          nullable: true
                        terminate_at_period_end:
                          type: boolean
                        is_scheduled_for_termination:
                          type: boolean
                        billing_anchor_day:
                          type: integer
                        customer:
                          type: object
                          properties:
                            uuid:
                              type: string
                            auth_id:
                              type: string
                            name:
                              type: string
                            business_entity_id:
                              type: string
                            currency:
                              type: string
                        total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        sub_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        discount_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        current_phase:
                          type: object
                          properties:
                            uuid:
                              type: string
                            name:
                              type: string
                            short_description:
                              type: string
                            start_at:
                              type: string
                            occurrence:
                              type: string
                            period:
                              type: integer
                            end_at:
                              type: string
                            status:
                              type: string
                            created_at:
                              type: string
                        has_immediate_termination:
                          type: boolean
                        is_in_grace_period:
                          type: boolean
                        expires_at:
                          type: string
                        reference_id:
                          type: string
                          nullable: true
                        order_uuid:
                          type: string
                          nullable: true
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listsubscriptions
      x-ipxo-group: Subscriptions
  /public/{user_id}/subscriptions/{subscription_uuid}/phases:
    get:
      tags:
        - Subscription
      summary: List Subscription Phases
      description: Return a list of Subscription Phases.
      operationId: listSubscriptionPhases
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: subscription_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: sort
          in: query
          description: A comma-separated list of fields to sort. Multiple allowed. Prefix with `-` to sort descending.
          schema:
            enum:
              - created_at
            type: string
            description: A comma-separated list of fields to sort. Multiple allowed. Prefix with `-` to sort descending.
        - name: filter[start_at]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[end_at]
          in: query
          description: ""
          schema:
            type: string
            description: ""
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        name:
                          type: string
                        short_description:
                          type: string
                        start_at:
                          type: string
                        occurrence:
                          type: string
                        period:
                          type: integer
                        end_at:
                          type: string
                        status:
                          type: string
                        created_at:
                          type: string
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listsubscriptionphases
      x-ipxo-group: Subscriptions
  /public/{user_id}/subscriptions/{subscription_uuid}:
    patch:
      tags:
        - Subscription
      summary: Update Subscription
      description: Update Single Subscription
      operationId: updateSubscription
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: subscription_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                billing_anchor_day:
                  type: string
                  description: ""
                  nullable: true
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      name:
                        type: string
                      short_description:
                        type: string
                      status:
                        type: string
                      current_period_start:
                        type: string
                      current_period_end:
                        type: string
                      previous_period_start:
                        type: string
                      previous_period_end:
                        type: string
                      started_at:
                        type: string
                      terminated_at:
                        type: string
                        nullable: true
                      terminate_at:
                        type: string
                        nullable: true
                      terminate_at_period_end:
                        type: boolean
                      is_scheduled_for_termination:
                        type: boolean
                      billing_anchor_day:
                        type: integer
                      customer:
                        type: object
                        properties:
                          uuid:
                            type: string
                          auth_id:
                            type: string
                          name:
                            type: string
                          business_entity_id:
                            type: string
                          currency:
                            type: string
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      current_phase:
                        type: object
                        properties:
                          uuid:
                            type: string
                          name:
                            type: string
                          short_description:
                            type: string
                          start_at:
                            type: string
                          occurrence:
                            type: string
                          period:
                            type: integer
                          end_at:
                            type: string
                          status:
                            type: string
                          created_at:
                            type: string
                      has_immediate_termination:
                        type: boolean
                      is_in_grace_period:
                        type: boolean
                      expires_at:
                        type: string
                      reference_id:
                        type: string
                        nullable: true
                      order_uuid:
                        type: string
                        nullable: true
      x-ipxo-slug: updatesubscription
      x-ipxo-group: Subscriptions
    get:
      tags:
        - Subscription
      summary: Show Customer Subscription
      description: Returns a single Customer Subscription extended information.
      operationId: showCustomerSubscription
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: subscription_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
        - name: include
          in: query
          description: A comma-separated list of relationships to include. Multiple parameters are allowed.
          schema:
            enum:
              - customer
              - currentPhase
              - immediateTerminationRequests
              - processingRenewalOrder
            type: string
            description: A comma-separated list of relationships to include. Multiple parameters are allowed.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      name:
                        type: string
                      short_description:
                        type: string
                      status:
                        type: string
                      current_period_start:
                        type: string
                      current_period_end:
                        type: string
                      previous_period_start:
                        type: string
                      previous_period_end:
                        type: string
                      started_at:
                        type: string
                      terminated_at:
                        type: string
                        nullable: true
                      terminate_at:
                        type: string
                        nullable: true
                      terminate_at_period_end:
                        type: boolean
                      is_scheduled_for_termination:
                        type: boolean
                      billing_anchor_day:
                        type: integer
                      customer:
                        type: object
                        properties:
                          uuid:
                            type: string
                          auth_id:
                            type: string
                          name:
                            type: string
                          business_entity_id:
                            type: string
                          currency:
                            type: string
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      current_phase:
                        type: object
                        properties:
                          uuid:
                            type: string
                          name:
                            type: string
                          short_description:
                            type: string
                          start_at:
                            type: string
                          occurrence:
                            type: string
                          period:
                            type: integer
                          end_at:
                            type: string
                          status:
                            type: string
                          created_at:
                            type: string
                      has_immediate_termination:
                        type: boolean
                      is_in_grace_period:
                        type: boolean
                      expires_at:
                        type: string
                      reference_id:
                        type: string
                        nullable: true
                      order_uuid:
                        type: string
                        nullable: true
      x-ipxo-slug: showcustomersubscription
      x-ipxo-group: Subscriptions
  /public/{user_id}/billing-settings:
    get:
      tags:
        - Subscription
      summary: List Billing Settings
      description: List all Billing Settings.
      operationId: listBillingSettings
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      billing_anchor_day:
                        type: integer
                      payment_term_days:
                        type: integer
      x-ipxo-slug: listbillingsettings
      x-ipxo-group: Subscriptions
    patch:
      tags:
        - Subscription
      summary: Update Billing Settings
      description: Update Billing Settings
      operationId: updateBillingSettings
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                billing_anchor_day:
                  type: string
                  description: ""
                  nullable: true
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      billing_anchor_day:
                        type: integer
                      payment_term_days:
                        type: integer
        "201":
          description: Successfully created and updated
          content:
            application/json:
              schema:
                type: object
                nullable: true
      x-ipxo-slug: updatebillingsettings
      x-ipxo-group: Subscriptions
  /public/{user_id}/products:
    get:
      tags:
        - Product
      summary: List Product Variants
      description: Return the List of all Product Variants that are purchasable.
      operationId: listProductVariants
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: filter[code]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[uuid]
          in: query
          description: ""
          schema:
            type: string
            description: ""
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        name:
                          type: string
                        code:
                          type: string
                        short_description:
                          type: string
                        price:
                          type: object
                          properties:
                            uuid:
                              type: string
                            price:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            type:
                              type: string
                            recurrence:
                              type: object
                              properties:
                                occurrence:
                                  type: string
                                period:
                                  type: integer
                                grace_period:
                                  type: integer
                                is_unexpirable:
                                  type: boolean
                            code:
                              type: string
                            is_default:
                              type: boolean
                            created_at:
                              type: string
                            requires_external_termination:
                              type: boolean
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listproductvariants
      x-ipxo-group: Products
  /public/{user_id}/cart:
    get:
      tags:
        - Cart
      summary: Current Cart
      description: Show the current Cart.
      operationId: currentCart
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      remaining_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_eligible_amount:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total_before_tax:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      discount_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      expires_at:
                        type: string
      x-ipxo-slug: currentcart
      x-ipxo-group: Cart & checkout
  /public/{user_id}/orders/{publicOrder_uuid}/refunds:
    get:
      tags:
        - Order
      summary: List Refunds for Order
      description: List all Refunds for Order.
      operationId: listRefundsForOrder
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        invoice_id:
                          type: string
                        order_uuid:
                          type: string
                        reference_id:
                          type: string
                        refund_reason:
                          type: string
                        refund_method:
                          type: string
                        status:
                          type: string
                        tax_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        items:
                          type: object
                          properties:
                            data:
                              type: array
                              items:
                                type: object
                                properties:
                                  uuid:
                                    type: string
                                  order_line_uuid:
                                    type: string
                                  amount:
                                    type: object
                                    properties:
                                      currency:
                                        type: string
                                      amount:
                                        type: string
                                      amount_minor:
                                        type: integer
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listrefundsfororder
      x-ipxo-group: Orders
  /public/{user_id}/cart/{cart_uuid}/credits/apply:
    post:
      tags:
        - Cart
      summary: Apply Credits To Cart
      description: Apply Credits to Cart
      operationId: applyCreditsToCart
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: cart_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: number
                  description: Must be at least 0.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      remaining_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_eligible_amount:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total_before_tax:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      discount_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      expires_at:
                        type: string
      x-ipxo-slug: applycreditstocart
      x-ipxo-group: Cart & checkout
  /public/{user_id}/orders/{publicOrder}/credits/apply:
    post:
      tags:
        - Order
      summary: Apply Credits To Order
      description: Apply Credits to Order
      operationId: applyCreditsToOrder
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder
          in: path
          description: ""
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: number
                  description: Must be at least 0.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      status:
                        type: string
                      placed_at:
                        type: string
                      expires_at:
                        type: string
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      remaining_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total_before_tax:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      discount_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
      x-ipxo-slug: applycreditstoorder
      x-ipxo-group: Orders
  /public/{user_id}/subscriptions/{subscription_uuid}/terminate:
    post:
      tags:
        - Subscription
      summary: Terminate Subscription
      description: Creates termination request for customer subscription.
      operationId: terminateSubscription
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: subscription_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - type
                - reason
                - meta
              type: object
              properties:
                type:
                  enum:
                    - end_of_period
                  type: string
                  description: ""
                reason:
                  type: string
                  description: Must not be greater than 255 characters.
                details:
                  type: string
                  description: Must not be greater than 600 characters.
                  nullable: true
                meta:
                  type: object
                  properties:
                    use_again:
                      type: boolean
                      description: ""
                      nullable: true
                  description: The meta data of the termination request.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      type:
                        type: string
                      status:
                        type: string
                      reason:
                        type: string
                      details:
                        type: string
                      meta:
                        type: object
                        properties:
                          use_again:
                            type: boolean
                      requested_at:
                        type: string
                      terminated_at:
                        type: string
      x-ipxo-slug: terminatesubscription
      x-ipxo-group: Subscriptions
  /public/{user_id}/products/categories:
    get:
      tags:
        - Product
      summary: List Product Categories
      description: Returns a list of Product Categories.
      operationId: listProductCategories
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: filter[slugs]
          in: query
          description: Filter by product category slugs (comma-separated)
          schema:
            type: string
            description: Filter by product category slugs (comma-separated)
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        slug:
                          type: string
                        enabled:
                          type: boolean
                        is_cart_enabled:
                          type: boolean
                        is_stock_enabled:
                          type: boolean
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listproductcategories
      x-ipxo-group: Products
  /public/{user_id}/subscription-category-views:
    get:
      tags:
        - Projection
      summary: List Subscription Category Views
      description: Returns a list of subscription category views for the customer.
      operationId: listSubscriptionCategoryViews
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: filter[category_id]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[status]
          in: query
          description: ""
          schema:
            enum:
              - active
              - pending
              - expired
              - draft
              - terminated
            type: string
            description: ""
        - name: filter[statuses]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: sort
          in: query
          description: A comma-separated list of fields to sort. Multiple allowed. Prefix with `-` to sort descending.
          schema:
            enum:
              - product_category_name
              - status
            type: string
            description: A comma-separated list of fields to sort. Multiple allowed. Prefix with `-` to sort descending.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        subscription_id:
                          type: string
                        subscription_name:
                          type: string
                        status:
                          type: string
                        product_category_id:
                          type: string
                        product_category_name:
                          type: string
                        purchasable_id:
                          type: string
                        purchasable_type:
                          type: string
                        customer_id:
                          type: string
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listsubscriptioncategoryviews
      x-ipxo-group: Subscriptions
  /public/{user_id}/subscriptions/search:
    post:
      tags:
        - Subscription
      summary: Search Subscriptions
      description: Search subscriptions with enhanced filtering capabilities including UUID arrays.
      operationId: searchSubscriptions
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                per_page:
                  type: integer
                  description: Number of results per page. Must be at least 1. Must not be greater than 100.
                  nullable: true
                page:
                  type: integer
                  description: Page number for pagination. Must be at least 1.
                  nullable: true
                sort:
                  type: string
                  description: Sort by field. Prefix with - for descending order.
                  nullable: true
                include:
                  type: string
                  description: Comma-separated list of relationships to include.
                  nullable: true
                filter:
                  type: object
                  properties:
                    status:
                      type: string
                      description: ""
                      nullable: true
                    name:
                      type: string
                      description: Must not be greater than 255 characters.
                      nullable: true
                    current_period_end:
                      type: string
                      description: Must be a valid date.
                      nullable: true
                    uuids:
                      type: array
                      items:
                        type: string
                      description: This field is required when <code>filter.uuids</code> is present. Must be a valid UUID.
                    customer:
                      type: object
                      properties:
                        user_id:
                          type: string
                          description: Must not be greater than 255 characters.
                          nullable: true
                        name:
                          type: string
                          description: Must not be greater than 255 characters.
                          nullable: true
                      description: ""
                      nullable: true
                  description: Object containing filter criteria.
                  nullable: true
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        name:
                          type: string
                        short_description:
                          type: string
                        status:
                          type: string
                        current_period_start:
                          type: string
                        current_period_end:
                          type: string
                        previous_period_start:
                          type: string
                        previous_period_end:
                          type: string
                        started_at:
                          type: string
                        terminated_at:
                          type: string
                          nullable: true
                        terminate_at:
                          type: string
                          nullable: true
                        terminate_at_period_end:
                          type: boolean
                        is_scheduled_for_termination:
                          type: boolean
                        billing_anchor_day:
                          type: integer
                        customer:
                          type: object
                          properties:
                            uuid:
                              type: string
                            auth_id:
                              type: string
                            name:
                              type: string
                            business_entity_id:
                              type: string
                            currency:
                              type: string
                        total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        sub_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        discount_total:
                          type: object
                          properties:
                            currency:
                              type: string
                            amount:
                              type: string
                            amount_minor:
                              type: integer
                        current_phase:
                          type: object
                          properties:
                            uuid:
                              type: string
                            name:
                              type: string
                            short_description:
                              type: string
                            start_at:
                              type: string
                            occurrence:
                              type: string
                            period:
                              type: integer
                            end_at:
                              type: string
                            status:
                              type: string
                            created_at:
                              type: string
                        has_immediate_termination:
                          type: boolean
                        is_in_grace_period:
                          type: boolean
                        expires_at:
                          type: string
                        reference_id:
                          type: string
                          nullable: true
                        order_uuid:
                          type: string
                          nullable: true
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: searchsubscriptions
      x-ipxo-group: Subscriptions
  /public/common/stripe/webhook/eu:
    post:
      tags:
        - Stripe EU
      summary: postPublicCommonStripeWebhookEu
      operationId: postPublicCommonStripeWebhookEu
      responses:
        "200":
          description: Webhook Handled
          content:
            application/json:
              schema:
                type: object
                nullable: true
      x-ipxo-slug: postpubliccommonstripewebhookeu
      x-ipxo-group: Webhooks
  /public/common/vat/validate:
    post:
      tags:
        - Vat
      summary: Validate Vat Number
      description: Validates a VAT number.
      operationId: validateVatNumber
      requestBody:
        content:
          application/json:
            schema:
              required:
                - vat_number
              type: object
              properties:
                vat_number:
                  type: string
                  description: ""
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      status:
                        type: string
                      validated_at:
                        type: string
                      company_name:
                        type: string
                      country_code:
                        type: string
      x-ipxo-slug: validatevatnumber
      x-ipxo-group: Reference data
  /public/{user_id}/orders/{publicOrder_uuid}/download:
    get:
      tags:
        - Order
      summary: Download Order
      description: Download an Order.
      operationId: downloadOrder
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Successfully generated and returned an Order file.
          content:
            application/json:
              schema:
                type: object
                nullable: true
      x-ipxo-slug: downloadorder
      x-ipxo-group: Orders
  /public/{user_id}/subscriptions/termination-requests/{terminationRequest_uuid}/cancel:
    post:
      tags:
        - Subscription
      summary: Cancel Termination Request
      description: Cancel a pending termination request.
      operationId: cancelTerminationRequest
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: terminationRequest_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      type:
                        type: string
                      status:
                        type: string
                      reason:
                        type: string
                      details:
                        type: string
                      meta:
                        type: object
                        properties:
                          use_again:
                            type: boolean
                      requested_at:
                        type: string
                      terminated_at:
                        type: string
      x-ipxo-slug: cancelterminationrequest
      x-ipxo-group: Subscriptions
  /public/{user_id}/subscriptions/termination-requests:
    get:
      tags:
        - Subscription
      summary: List Customer Termination Requests
      description: Returns a list of Termination Requests for the authenticated customer
      operationId: listCustomerTerminationRequests
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: filter[subscription_id]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: filter[status]
          in: query
          description: ""
          schema:
            type: string
            description: ""
        - name: sort
          in: query
          description: A comma-separated list of fields to sort. Multiple allowed. Prefix with `-` to sort descending.
          schema:
            enum:
              - requested_at
            type: string
            description: A comma-separated list of fields to sort. Multiple allowed. Prefix with `-` to sort descending.
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        type:
                          type: string
                        status:
                          type: string
                        reason:
                          type: string
                        details:
                          type: string
                        meta:
                          type: object
                          properties:
                            use_again:
                              type: boolean
                        requested_at:
                          type: string
                        terminated_at:
                          type: string
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                      total:
                        type: integer
                      per_page:
                        type: integer
      x-ipxo-slug: listcustomerterminationrequests
      x-ipxo-group: Subscriptions
  /public/{user_id}/subscriptions/termination-requests/{terminationRequest_uuid}:
    get:
      tags:
        - Subscription
      summary: Show Termination Request
      description: Returns a single Termination Request extended information.
      operationId: showTerminationRequest
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: terminationRequest_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      type:
                        type: string
                      status:
                        type: string
                      reason:
                        type: string
                      details:
                        type: string
                      meta:
                        type: object
                        properties:
                          use_again:
                            type: boolean
                      requested_at:
                        type: string
                      terminated_at:
                        type: string
      x-ipxo-slug: showterminationrequest
      x-ipxo-group: Subscriptions
  /public/{user_id}/addresses/{customerAddress_id}:
    put:
      tags:
        - Address
      summary: Update Address
      description: Update customer address.
      operationId: updateAddress
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: customerAddress_id
          in: path
          description: The ID of the customerAddress.
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              required:
                - line_one
                - city
                - postcode
              type: object
              properties:
                line_one:
                  type: string
                  description: Must not be greater than 255 characters.
                line_two:
                  type: string
                  description: Must not be greater than 255 characters.
                  nullable: true
                city:
                  type: string
                  description: Must not be greater than 255 characters.
                postcode:
                  type: string
                  description: Must not be greater than 20 characters.
                province_code:
                  type: string
                  description: Must not be greater than 10 characters.
                  nullable: true
                contact_email:
                  type: string
                  description: Must be a valid email address. Must not be greater than 255 characters.
                  nullable: true
                vat_number:
                  type: string
                  description: Must not be greater than 50 characters.
                  nullable: true
                company_code:
                  type: string
                  description: Must not be greater than 50 characters.
                  nullable: true
                first_name:
                  type: string
                  description: Must not be greater than 255 characters.
                  nullable: true
                last_name:
                  type: string
                  description: Must not be greater than 255 characters.
                  nullable: true
                company_name:
                  type: string
                  description: Must not be greater than 255 characters.
                  nullable: true
                contact_phone:
                  type: string
                  description: Must not be greater than 50 characters.
                  nullable: true
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      first_name:
                        type: string
                      last_name:
                        type: string
                      company_name:
                        type: string
                      vat_number:
                        type: string
                      vat_validation_status:
                        type: string
                      vat_validated_at:
                        type: string
                      line_one:
                        type: string
                      line_two:
                        type: string
                      line_three:
                        type: string
                      city:
                        type: string
                      province_code:
                        type: string
                      country_code:
                        type: string
                      postcode:
                        type: string
                      contact_email:
                        type: string
                      contact_phone:
                        type: string
                      company_code:
                        type: string
      x-ipxo-slug: updateaddress
      x-ipxo-group: Addresses
  /public/{user_id}/business-entity:
    get:
      tags:
        - Legal
      summary: Show Business Entity
      description: Show the Business Entity assigned to the current Customer
      operationId: showBusinessEntity
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      country_code:
                        type: string
                      company_name:
                        type: string
                      line_one:
                        type: string
                      line_two:
                        type: string
                      line_three:
                        type: string
                      city:
                        type: string
                      province_code:
                        type: string
                      postcode:
                        type: string
                      contact_email:
                        type: string
                      bank_transfer_details:
                        type: object
                        properties:
                          accounts:
                            type: array
                            items:
                              type: object
                              properties:
                                beneficiary:
                                  type: string
                                bank_name:
                                  type: string
                                note:
                                  type: string
                                  nullable: true
                                lead_bank_note:
                                  type: string
                                  nullable: true
                                fields:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      label:
                                        type: string
                                      value:
                                        type: string
      x-ipxo-slug: showbusinessentity
      x-ipxo-group: Account
  /public/{user_id}/cart/{cart_uuid}/credits:
    delete:
      tags:
        - Cart
      summary: Remove Credits From Cart
      description: Remove Credits from Cart
      operationId: removeCreditsFromCart
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: cart_uuid
          in: path
          description: ""
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: number
                  description: ""
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      remaining_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_eligible_amount:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total_before_tax:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      discount_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      expires_at:
                        type: string
      x-ipxo-slug: removecreditsfromcart
      x-ipxo-group: Cart & checkout
  /public/{user_id}/orders/{publicOrder}/credits:
    delete:
      tags:
        - Order
      summary: Remove Credits From Order
      description: Remove Credits from Order
      operationId: removeCreditsFromOrder
      parameters:
        - name: user_id
          in: path
          description: The ID of the user.
          required: true
          schema:
            type: string
        - name: publicOrder
          in: path
          description: ""
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: number
                  description: ""
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uuid:
                        type: string
                      status:
                        type: string
                      placed_at:
                        type: string
                      expires_at:
                        type: string
                      sub_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      discount_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      credits_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      remaining_total:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      total_before_tax:
                        type: object
                        properties:
                          currency:
                            type: string
                          amount:
                            type: string
                          amount_minor:
                            type: integer
                      tax_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
                      discount_breakdown:
                        type: array
                        items:
                          type: object
                          properties:
                            amount:
                              type: object
                              properties:
                                currency:
                                  type: string
                                amount:
                                  type: string
                                amount_minor:
                                  type: integer
                            code:
                              type: string
                            name:
                              type: string
                            rate:
                              type: integer
                            calculator_type:
                              type: string
                            notice:
                              type: string
                              nullable: true
      x-ipxo-slug: removecreditsfromorder
      x-ipxo-group: Orders
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
tags:
  - name: User
    description: ""
  - name: Cart
    description: ""
  - name: Stripe
    description: ""
  - name: Address
    description: ""
  - name: Gateway
    description: ""
  - name: Invoice
    description: ""
  - name: Order
    description: ""
  - name: Payment
    description: ""
  - name: Product
    description: ""
  - name: Subscription
    description: ""
  - name: Customer
    description: ""
  - name: Projection
    description: ""
  - name: Stripe EU
    description: ""
  - name: Vat
    description: ""
  - name: Legal
    description: ""
security:
  - bearerAuth: []
