openapi: 3.0.0
info:
  version: 1.0.0
  title: Medusa Admin API
  license:
    name: MIT
tags:
  - name: Auth
    description: >-
      Auth endpoints allows authorization of admin Users and manages their
      sessions.
  - name: Collection
    x-resourceId: product_collection
  - name: Customer
    x-resourceId: customer
  - name: Discount
    x-resourceId: discount
  - name: Gift Card
    x-resourceId: gift_card
  - name: Notification
    x-resourceId: notification
  - name: Order
    x-resourceId: order
  - name: Product
    x-resourceId: product
  - name: Region
    x-resourceId: region
  - name: Return
    x-resourceId: return
  - name: Shipping Option
    x-resourceId: shipping_option
  - name: Shipping Profile
    x-resourceId: shipping_profile
  - name: Swap
    x-resourceId: swap
  - name: Product Variant
    x-resourceId: product_variant
  - name: OAuth
    x-resourceId: OAuth
servers:
  - url: 'https://api.medusa-commerce.com/admin'
paths:
  /apps:
    post:
      operationId: PostApps
      summary: Generates a token for an application.
      description: Generates a token for an application.
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              required:
                - application_name
                - state
                - code
              properties:
                application_name:
                  type: string
                  description: Name of the application for the token to be generated for.
                state:
                  type: string
                  description: State of the application.
                code:
                  type: string
                  description: The code for the generated token.
      tags:
        - Apps
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  apps:
                    $ref: '#/components/schemas/OAuth'
    get:
      operationId: GetApps
      summary: List applications
      description: Retrieve a list of applications.
      x-authenticated: true
      tags:
        - Apps
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  collection:
                    $ref: '#/components/schemas/OAuth'
  /auth:
    post:
      operationId: PostAuth
      summary: Authenticate a User
      x-authenticated: false
      description: Logs a User in and authorizes them to manage Store settings.
      parameters: []
      tags:
        - Auth
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  user:
                    $ref: '#/components/schemas/user'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - email
                - password
              properties:
                email:
                  type: string
                  description: The User's email.
                password:
                  type: string
                  description: The User's password.
    get:
      operationId: GetAuth
      summary: Get Session
      x-authenticated: true
      description: Gets the currently logged in User.
      tags:
        - Auth
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  user:
                    $ref: '#/components/schemas/user'
  '/collections/{id}/products/batch':
    post:
      operationId: PostProductsToCollection
      summary: Updates products associated with a Product Collection
      description: Updates products associated with a Product Collection
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Collection.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                product_ids:
                  description: An array of Product IDs to add to the Product Collection.
                  type: array
                  items:
                    properties:
                      id:
                        description: The ID of a Product to add to the Product Collection.
                        type: string
      tags:
        - Collection
      responses:
        '200':
          description: OK
    delete:
      operationId: DeleteProductsFromCollection
      summary: Removes products associated with a Product Collection
      description: Removes products associated with a Product Collection
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Collection.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                product_ids:
                  description: >-
                    An array of Product IDs to remove from the Product
                    Collection.
                  type: array
                  items:
                    properties:
                      id:
                        description: >-
                          The ID of a Product to remove from the Product
                          Collection.
                        type: string
      tags:
        - Collection
      responses:
        '200':
          description: OK
  /collections:
    post:
      operationId: PostCollections
      summary: Create a Product Collection
      description: Creates a Product Collection.
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              required:
                - title
              properties:
                title:
                  type: string
                  description: The title to identify the Collection by.
                handle:
                  type: string
                  description: >-
                    An optional handle to be used in slugs, if none is provided
                    we will kebab-case the title.
                metadata:
                  description: >-
                    An optional set of key-value pairs to hold additional
                    information.
                  type: object
      tags:
        - Collection
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  collection:
                    $ref: '#/components/schemas/product_collection'
    get:
      operationId: GetCollections
      summary: List Product Collections
      description: Retrieve a list of Product Collection.
      x-authenticated: true
      parameters:
        - in: query
          name: limit
          description: The number of collections to return.
          schema:
            type: string
        - in: query
          name: offset
          description: The offset of collections to return.
          schema:
            type: string
        - in: query
          name: title
          description: The title of collections to return.
          schema:
            type: string
        - in: query
          name: handle
          description: The handle of collections to return.
          schema:
            type: string
        - in: query
          name: deleted_at
          description: >-
            Date comparison for when resulting collections was deleted, i.e.
            less than, greater than etc.
          schema:
            type: object
        - in: query
          name: created_at
          description: >-
            Date comparison for when resulting collections was created, i.e.
            less than, greater than etc.
          schema:
            type: object
        - in: query
          name: updated_at
          description: >-
            Date comparison for when resulting collections was updated, i.e.
            less than, greater than etc.
          schema:
            type: object
      tags:
        - Collection
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  collection:
                    $ref: '#/components/schemas/product_collection'
  '/collections/{id}':
    delete:
      operationId: DeleteCollectionsCollection
      summary: Delete a Product Collection
      description: Deletes a Product Collection.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Collection.
          schema:
            type: string
      tags:
        - Collection
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted Collection
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
    get:
      operationId: GetCollectionsCollection
      summary: Retrieve a Product Collection
      description: Retrieves a Product Collection.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Product Collection
          schema:
            type: string
      tags:
        - Collection
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  collection:
                    $ref: '#/components/schemas/product_collection'
    post:
      operationId: PostCollectionsCollection
      summary: Update a Product Collection
      description: Updates a Product Collection.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Collection.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                title:
                  type: string
                  description: The title to identify the Collection by.
                handle:
                  type: string
                  description: >-
                    An optional handle to be used in slugs, if none is provided
                    we will kebab-case the title.
                metadata:
                  description: >-
                    An optional set of key-value pairs to hold additional
                    information.
                  type: object
      tags:
        - Collection
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  collection:
                    $ref: '#/components/schemas/product_collection'
  /customer-groups:
    post:
      operationId: PostCustomerGroups
      summary: Create a CustomerGroup
      description: Creates a CustomerGroup.
      x-authenticated: true
      parameters: []
      tags:
        - CustomerGroup
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  customer_group:
                    $ref: '#/components/schemas/customer_group'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                  description: Name of the customer group
                metadata:
                  type: object
                  description: Metadata for the customer.
  '/customer-groups/{id}':
    delete:
      operationId: DeleteCustomerGroupsCustomerGroup
      summary: Delete a CustomerGroup
      description: Deletes a CustomerGroup.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Customer Group
          schema:
            type: string
      tags:
        - CustomerGroup
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted customer group.
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
    post:
      operationId: PostCustomerGroupsGroup
      summary: Update a CustomerGroup
      description: Update a CustomerGroup.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the customer group.
          schema:
            type: string
      tags:
        - CustomerGroup
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  customer_group:
                    $ref: '#/components/schemas/customer_group'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                  description: Name of the customer group
                metadata:
                  type: object
                  description: Metadata for the customer.
  '/customer-group/{id}':
    get:
      operationId: GetCustomerGroupsGroup
      summary: Retrieve a CustomerGroup
      description: Retrieves a Customer Group.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Customer Group.
          schema:
            type: string
      tags:
        - CustomerGroup
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  customer_group:
                    $ref: '#/components/schemas/customer_group'
  /customers:
    post:
      operationId: PostCustomers
      summary: Create a Customer
      description: Creates a Customer.
      x-authenticated: true
      parameters: []
      tags:
        - Customer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  customer:
                    $ref: '#/components/schemas/customer'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - email
                - first_name
                - last_name
              properties:
                email:
                  type: string
                  description: The Customer's email address.
                first_name:
                  type: string
                  description: The Customer's first name.
                last_name:
                  type: string
                  description: The Customer's last name.
                phone:
                  type: string
                  description: The Customer's phone number.
                metadata:
                  type: object
                  description: Metadata for the customer.
    get:
      operationId: GetCustomers
      summary: List Customers
      description: Retrieves a list of Customers.
      x-authenticated: true
      tags:
        - Customer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  customer:
                    $ref: '#/components/schemas/customer'
  '/customers/{id}':
    get:
      operationId: GetCustomersCustomer
      summary: Retrieve a Customer
      description: Retrieves a Customer.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Customer.
          schema:
            type: string
      tags:
        - Customer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  customer:
                    $ref: '#/components/schemas/customer'
    post:
      operationId: PostCustomersCustomer
      summary: Update a Customer
      description: Updates a Customer.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Customer.
          schema:
            type: string
        - in: query
          name: expand
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                email:
                  type: string
                  description: >-
                    The Customer's email. Only providable if user not
                    registered.
                first_name:
                  type: string
                  description: The Customer's first name.
                last_name:
                  type: string
                  description: The Customer's last name.
                phone:
                  type: string
                  description: The Customer's phone number.
                password:
                  type: string
                  description: The Customer's password.
                groups:
                  type: array
                  items:
                    required:
                      - id
                    properties:
                      id:
                        description: The id of a customer group
                        type: string
                  description: A list of customer groups to which the customer belongs.
                metadata:
                  type: object
                  description: Metadata for the customer.
      tags:
        - Customer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  customer:
                    $ref: '#/components/schemas/customer'
  '/discounts/{id}/regions/{region_id}':
    post:
      operationId: PostDiscountsDiscountRegionsRegion
      summary: Adds Region availability
      description: Adds a Region to the list of Regions that a Discount can be used in.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Discount.
          schema:
            type: string
        - in: path
          name: region_id
          required: true
          description: The id of the Region.
          schema:
            type: string
      tags:
        - Discount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  discount:
                    $ref: '#/components/schemas/discount'
    delete:
      operationId: DeleteDiscountsDiscountRegionsRegion
      summary: Remove Region availability
      x-authenticated: true
      description: >-
        Removes a Region from the list of Regions that a Discount can be used
        in.
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Discount.
          schema:
            type: string
        - in: path
          name: region_id
          required: true
          description: The id of the Region.
          schema:
            type: string
      tags:
        - Discount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  discount:
                    $ref: '#/components/schemas/discount'
  '/discounts/{id}/products/{product_id}':
    post:
      operationId: PostDiscountsDiscountProductsProduct
      summary: Adds Product availability
      description: Adds a Product to the list of Products that a Discount can be used for.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Discount.
          schema:
            type: string
        - in: path
          name: product_id
          required: true
          description: The id of the Product.
          schema:
            type: string
      tags:
        - Discount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  discount:
                    $ref: '#/components/schemas/discount'
    delete:
      operationId: DeleteDiscountsDiscountProductsProduct
      summary: Remove Product availability
      description: >-
        Removes a Product from the list of Products that a Discount can be used
        for.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Discount.
          schema:
            type: string
        - in: path
          name: product_id
          required: true
          description: The id of the Product.
          schema:
            type: string
      tags:
        - Discount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  discount:
                    $ref: '#/components/schemas/discount'
  /discounts:
    post:
      operationId: PostDiscounts
      summary: Creates a Discount
      x-authenticated: true
      description: >-
        Creates a Discount with a given set of rules that define how the
        Discount behaves.
      requestBody:
        content:
          application/json:
            schema:
              required:
                - code
                - rule
              properties:
                code:
                  type: string
                  description: A unique code that will be used to redeem the Discount
                is_dynamic:
                  type: string
                  description: >-
                    Whether the Discount should have multiple instances of
                    itself, each with a different code. This can be useful for
                    automatically generated codes that all have to follow a
                    common set of rules.
                rule:
                  description: The Discount Rule that defines how Discounts are calculated
                  oneOf:
                    - $ref: '#/components/schemas/discount_rule'
                is_disabled:
                  type: boolean
                  description: >-
                    Whether the Discount code is disabled on creation. You will
                    have to enable it later to make it available to Customers.
                starts_at:
                  type: string
                  format: date-time
                  description: The time at which the Discount should be available.
                ends_at:
                  type: string
                  format: date-time
                  description: >-
                    The time at which the Discount should no longer be
                    available.
                regions:
                  description: >-
                    A list of Region ids representing the Regions in which the
                    Discount can be used.
                  type: array
                  items:
                    type: string
                usage_limit:
                  type: number
                  description: Maximum times the discount can be used
                metadata:
                  description: >-
                    An optional set of key-value pairs to hold additional
                    information.
                  type: object
      tags:
        - Discount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  discount:
                    $ref: '#/components/schemas/discount'
    get:
      operationId: GetDiscounts
      summary: List Discounts
      x-authenticated: true
      description: Retrieves a list of Discounts
      parameters:
        - in: query
          name: q
          description: Search query applied on results.
          schema:
            type: string
        - in: query
          name: is_dynamic
          description: Return only dynamic discounts.
          schema:
            type: boolean
        - in: query
          name: is_disabled
          description: Return only disabled discounts.
          schema:
            type: boolean
        - in: query
          name: limit
          description: The number of items in the response
          schema:
            type: number
        - in: query
          name: offset
          description: The offset of items in response
          schema:
            type: number
        - in: query
          name: expand
          description: Comma separated list of relations to include in the results.
          schema:
            type: string
      tags:
        - Discount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  discount:
                    $ref: '#/components/schemas/discount'
  '/discounts/{id}/dynamic-codes':
    post:
      operationId: PostDiscountsDiscountDynamicCodes
      summary: Create a dynamic Discount code
      description: >-
        Creates a unique code that can map to a parent Discount. This is useful
        if you want to automatically generate codes with the same behaviour.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Discount to create the dynamic code from."
          schema:
            type: string
      tags:
        - Discount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  discount:
                    $ref: '#/components/schemas/discount'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - code
              properties:
                code:
                  type: string
                  description: The unique code that will be used to redeem the Discount.
                metadata:
                  type: object
                  description: >-
                    An optional set of key-value paris to hold additional
                    information.
  '/discounts/{id}':
    delete:
      operationId: DeleteDiscountsDiscount
      summary: Delete a Discount
      description: Deletes a Discount.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Discount
          schema:
            type: string
      tags:
        - Discount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted Discount
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
    get:
      operationId: GetDiscountsDiscount
      summary: Retrieve a Discount
      description: Retrieves a Discount
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Discount
          schema:
            type: string
      tags:
        - Discount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  discount:
                    $ref: '#/components/schemas/discount'
    post:
      operationId: PostDiscountsDiscount
      summary: Update a Discount
      description: >-
        Updates a Discount with a given set of rules that define how the
        Discount behaves.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Discount.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                code:
                  type: string
                  description: A unique code that will be used to redeem the Discount
                is_dynamic:
                  type: string
                  description: >-
                    Whether the Discount should have multiple instances of
                    itself, each with a different code. This can be useful for
                    automatically generated codes that all have to follow a
                    common set of rules.
                rule:
                  description: The Discount Rule that defines how Discounts are calculated
                  oneOf:
                    - $ref: '#/components/schemas/discount_rule'
                is_disabled:
                  type: boolean
                  description: >-
                    Whether the Discount code is disabled on creation. You will
                    have to enable it later to make it available to Customers.
                starts_at:
                  type: string
                  format: date-time
                  description: The time at which the Discount should be available.
                ends_at:
                  type: string
                  format: date-time
                  description: >-
                    The time at which the Discount should no longer be
                    available.
                regions:
                  description: >-
                    A list of Region ids representing the Regions in which the
                    Discount can be used.
                  type: array
                  items:
                    type: string
                metadata:
                  description: An object containing metadata of the discount
                  type: object
      tags:
        - Discount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  discount:
                    $ref: '#/components/schemas/discount'
  '/discounts/{id}/dynamic-codes/{code}':
    delete:
      operationId: DeleteDiscountsDiscountDynamicCodesCode
      summary: Delete a dynamic code
      description: Deletes a dynamic code from a Discount.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Discount
          schema:
            type: string
        - in: path
          name: code
          required: true
          description: The id of the Discount
          schema:
            type: string
      tags:
        - Discount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  discount:
                    $ref: '#/components/schemas/discount'
  '/discounts/code/{code}':
    get:
      operationId: GetDiscountsDiscountCode
      summary: Retrieve a Discount by code
      description: Retrieves a Discount by its discount code
      x-authenticated: true
      parameters:
        - in: path
          name: code
          required: true
          description: The code of the Discount
          schema:
            type: string
      tags:
        - Discount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  discount:
                    $ref: '#/components/schemas/discount'
  /draft-orders:
    post:
      operationId: PostDraftOrders
      summary: Create a Draft Order
      description: Creates a Draft Order
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              required:
                - email
                - items
                - region_id
                - shipping_methods
              properties:
                status:
                  description: The status of the draft order
                  type: string
                email:
                  description: The email of the customer of the draft order
                  type: string
                billing_address:
                  description: The Address to be used for billing purposes.
                  anyOf:
                    - $ref: '#/components/schemas/address'
                shipping_address:
                  description: The Address to be used for shipping.
                  anyOf:
                    - $ref: '#/components/schemas/address'
                items:
                  description: The Line Items that have been received.
                  type: array
                  items:
                    properties:
                      variant_id:
                        description: >-
                          The id of the Product Variant to generate the Line
                          Item from.
                        type: string
                      unit_price:
                        description: The potential custom price of the item.
                        type: integer
                      title:
                        description: The potential custom title of the item.
                        type: string
                      quantity:
                        description: The quantity of the Line Item.
                        type: integer
                      metadata:
                        description: >-
                          The optional key-value map with additional details
                          about the Line Item.
                        type: object
                region_id:
                  description: The id of the region for the draft order
                  type: string
                discounts:
                  description: The discounts to add on the draft order
                  type: array
                  items:
                    properties:
                      code:
                        description: The code of the discount to apply
                        type: string
                customer_id:
                  description: The id of the customer to add on the draft order
                  type: string
                no_notification_order:
                  description: >-
                    An optional flag passed to the resulting order to determine
                    use of notifications.
                  type: boolean
                shipping_methods:
                  description: The shipping methods for the draft order
                  type: array
                  items:
                    properties:
                      option_id:
                        description: The id of the shipping option in use
                        type: string
                      data:
                        description: >-
                          The optional additional data needed for the shipping
                          method
                        type: object
                      price:
                        description: The potential custom price of the shipping
                        type: integer
                metadata:
                  description: >-
                    The optional key-value map with additional details about the
                    Draft Order.
                  type: object
      tags:
        - Draft Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  draft_order:
                    $ref: '#/components/schemas/draft-order'
    get:
      operationId: GetDraftOrders
      summary: List Draft Orders
      description: Retrieves an list of Draft Orders
      x-authenticated: true
      tags:
        - Draft Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  draft_order:
                    $ref: '#/components/schemas/draft-order'
  '/draft-orders/{id}/line-items':
    post:
      operationId: PostDraftOrdersDraftOrderLineItems
      summary: Create a Line Item for Draft Order
      description: Creates a Line Item for the Draft Order
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Draft Order.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - quantity
              properties:
                variant_id:
                  description: >-
                    The id of the Product Variant to generate the Line Item
                    from.
                  type: string
                unit_price:
                  description: The potential custom price of the item.
                  type: integer
                title:
                  description: The potential custom title of the item.
                  type: string
                quantity:
                  description: The quantity of the Line Item.
                  type: integer
                metadata:
                  description: >-
                    The optional key-value map with additional details about the
                    Line Item.
                  type: object
      tags:
        - Draft Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  draft_order:
                    $ref: '#/components/schemas/draft-order'
  '/draft-orders/{id}':
    delete:
      operationId: DeleteDraftOrdersDraftOrder
      summary: Delete a Draft Order
      description: Deletes a Draft Order
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Draft Order.
          schema:
            type: string
      tags:
        - Draft Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted Draft Order.
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
    get:
      operationId: GetDraftOrdersDraftOrder
      summary: Retrieve a Draft Order
      description: Retrieves a Draft Order.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Draft Order.
          schema:
            type: string
      tags:
        - Draft Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  draft_order:
                    $ref: '#/components/schemas/draft-order'
  '/draft-orders/{id}/line-items/{line_id}':
    delete:
      operationId: DeleteDraftOrdersDraftOrderLineItemsItem
      summary: Delete a Line Item
      description: Removes a Line Item from a Draft Order.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Draft Order.
          schema:
            type: string
        - in: path
          name: line_id
          required: true
          description: The id of the Draft Order.
          schema:
            type: string
      tags:
        - Draft Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  draft_order:
                    $ref: '#/components/schemas/draft-order'
    post:
      operationId: PostDraftOrdersDraftOrderLineItemsItem
      summary: Update a Line Item for a Draft Order
      description: Updates a Line Item for a Draft Order
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Draft Order.
          schema:
            type: string
        - in: path
          name: line_id
          required: true
          description: The id of the Line Item.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                unit_price:
                  description: The potential custom price of the item.
                  type: integer
                title:
                  description: The potential custom title of the item.
                  type: string
                quantity:
                  description: The quantity of the Line Item.
                  type: integer
                metadata:
                  description: >-
                    The optional key-value map with additional details about the
                    Line Item.
                  type: object
      tags:
        - Draft Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  draft_order:
                    $ref: '#/components/schemas/draft-order'
  '/draft-orders/{id}/register-payment':
    post:
      summary: Registers a payment for a Draft Order
      operationId: PostDraftOrdersDraftOrderRegisterPayment
      description: Registers a payment for a Draft Order.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The Draft Order id.
          schema:
            type: string
      tags:
        - Draft Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  draft_order:
                    $ref: '#/components/schemas/draft-order'
  '/admin/draft-orders/{id}':
    post:
      operationId: PostDraftOrdersDraftOrder
      summary: Update a Draft Order"
      description: Updates a Draft Order.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Draft Order.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                region_id:
                  type: string
                  description: The id of the Region to create the Draft Order in.
                email:
                  type: string
                  description: An email to be used on the Draft Order.
                billing_address:
                  description: The Address to be used for billing purposes.
                  anyOf:
                    - $ref: '#/components/schemas/address'
                shipping_address:
                  description: The Address to be used for shipping.
                  anyOf:
                    - $ref: '#/components/schemas/address'
                discounts:
                  description: An array of Discount codes to add to the Draft Order.
                  type: array
                  items:
                    properties:
                      code:
                        description: The code that a Discount is identifed by.
                        type: string
                no_notification_order:
                  description: >-
                    An optional flag passed to the resulting order to determine
                    use of notifications.
                  type: boolean
                customer_id:
                  description: The id of the Customer to associate the Draft Order with.
                  type: string
      tags:
        - Draft Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  draft_order:
                    $ref: '#/components/schemas/draft-order'
  /gift-cards:
    post:
      operationId: PostGiftCards
      summary: Create a Gift Card
      description: >-
        Creates a Gift Card that can redeemed by its unique code. The Gift Card
        is only valid within 1 region.
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              properties:
                value:
                  type: integer
                  description: >-
                    The value (excluding VAT) that the Gift Card should
                    represent.
                is_disabled:
                  type: boolean
                  description: >-
                    Whether the Gift Card is disabled on creation. You will have
                    to enable it later to make it available to Customers.
                ends_at:
                  type: string
                  format: date-time
                  description: >-
                    The time at which the Gift Card should no longer be
                    available.
                region_id:
                  description: The id of the Region in which the Gift Card can be used.
                  type: array
                  items:
                    type: string
                metadata:
                  description: >-
                    An optional set of key-value pairs to hold additional
                    information.
                  type: object
      tags:
        - Gift Card
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  gift_card:
                    $ref: '#/components/schemas/gift_card'
    get:
      operationId: GetGiftCards
      summary: List Gift Cards
      description: Retrieves a list of Gift Cards.
      x-authenticated: true
      tags:
        - Gift Card
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  gift_cards:
                    type: array
                    items:
                      $ref: '#/components/schemas/gift_card'
  '/gift-cards/{id}':
    delete:
      operationId: DeleteGiftCardsGiftCard
      summary: Delete a Gift Card
      description: Deletes a Gift Card
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Gift Card to delete.
          schema:
            type: string
      tags:
        - Gift Card
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted Gift Card
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
    get:
      operationId: GetGiftCardsGiftCard
      summary: Retrieve a Gift Card
      description: Retrieves a Gift Card.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Gift Card.
          schema:
            type: string
      tags:
        - Gift Card
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  gift_card:
                    $ref: '#/components/schemas/gift_card'
    post:
      operationId: PostGiftCardsGiftCard
      summary: Create a Gift Card
      description: >-
        Creates a Gift Card that can redeemed by its unique code. The Gift Card
        is only valid within 1 region.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Gift Card.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                balance:
                  type: integer
                  description: >-
                    The value (excluding VAT) that the Gift Card should
                    represent.
                is_disabled:
                  type: boolean
                  description: >-
                    Whether the Gift Card is disabled on creation. You will have
                    to enable it later to make it available to Customers.
                ends_at:
                  type: string
                  format: date-time
                  description: >-
                    The time at which the Gift Card should no longer be
                    available.
                region_id:
                  description: The id of the Region in which the Gift Card can be used.
                  type: array
                  items:
                    type: string
                metadata:
                  description: >-
                    An optional set of key-value pairs to hold additional
                    information.
                  type: object
      tags:
        - Gift Card
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  gift_card:
                    $ref: '#/components/schemas/gift_card'
  /invites/accept:
    post:
      operationId: PostInvitesInviteAccept
      summary: Accept an Invite
      description: Accepts an Invite and creates a corresponding user
      requestBody:
        content:
          application/json:
            schema:
              required:
                - token
                - user
              properties:
                token:
                  description: The invite token provided by the admin.
                  type: string
                user:
                  description: The User to create.
                  type: object
                  required:
                    - first_name
                    - last_name
                    - password
                  properties:
                    first_name:
                      type: string
                      description: the first name of the User
                    last_name:
                      type: string
                      description: the last name of the User
                    password:
                      description: The desired password for the User
                      type: string
      tags:
        - Invites
      responses:
        '200':
          description: OK
  /invites:
    post:
      operationId: PostInvites
      summary: Create an Invite
      description: Creates an Invite and triggers an 'invite' created event
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              required:
                - user
                - role
              properties:
                user:
                  description: The email for the user to be created.
                  type: string
                role:
                  description: The role of the user to be created.
                  type: string
      tags:
        - Invites
      responses:
        '200':
          description: OK
    get:
      operationId: GetInvites
      summary: Lists all Invites
      description: Lists all Invites
      x-authenticated: true
      tags:
        - Invites
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  invites:
                    type: array
                    items:
                      $ref: '#/components/schemas/invite'
  '/invites/{invite_id}':
    delete:
      operationId: DeleteInvitesInvite
      summary: Create an Invite
      description: Creates an Invite and triggers an 'invite' created event
      x-authenticated: true
      parameters:
        - in: path
          name: invite_id
          required: true
          description: The id of the Invite
          schema:
            type: string
      tags:
        - Invites
      responses:
        '200':
          description: OK
  '/invites/{invite_id}/resend':
    post:
      operationId: PostInvitesInviteResend
      summary: Resend an Invite
      description: Resends an Invite by triggering the 'invite' created event again
      x-authenticated: true
      parameters:
        - in: path
          name: invite_id
          required: true
          description: The id of the Invite
          schema:
            type: string
      tags:
        - Invites
      responses:
        '200':
          description: OK
  /notes:
    post:
      operationId: PostNotes
      summary: Creates a Note
      description: Creates a Note which can be associated with any resource as required.
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              properties:
                resource_id:
                  type: string
                  description: The id of the resource which the Note relates to.
                resource_type:
                  type: string
                  description: The type of resource which the Note relates to.
                value:
                  type: string
                  description: The content of the Note to create.
      tags:
        - Note
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  note:
                    $ref: '#/components/schemas/note'
    get:
      operationId: GetNotes
      summary: List Notes
      x-authenticated: true
      description: Retrieves a list of notes
      parameters:
        - in: path
          name: limit
          required: true
          description: The number of notes to get
          schema:
            type: number
            default: ''
        - in: path
          name: offset
          required: true
          description: The offset at which to get notes
          schema:
            type: number
            default: ''
        - in: path
          name: resource_id
          required: true
          description: The id which the notes belongs to
          schema:
            type: string
            default: ''
      tags:
        - Note
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  notes:
                    type: array
                    items:
                      $ref: '#/components/schemas/note'
  '/notes/{id}':
    delete:
      operationId: DeleteNotesNote
      summary: Deletes a Note
      description: Deletes a Note.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Note to delete.
          schema:
            type: string
      tags:
        - Note
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted Note.
                  deleted:
                    type: boolean
                    description: Whether or not the Note was deleted.
    get:
      operationId: GetNotesNote
      summary: Get Note
      description: Retrieves a single note using its id
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the note to retrieve.
          schema:
            type: string
      tags:
        - Note
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  note:
                    $ref: '#/components/schemas/note'
    post:
      operationId: PostNotesNote
      summary: Updates a Note
      x-authenticated: true
      description: Updates a Note associated with some resource
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Note to update
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - value
              properties:
                value:
                  type: string
                  description: The updated description of the Note.
      tags:
        - Note
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  note:
                    $ref: '#/components/schemas/note'
  /notifications:
    get:
      operationId: GetNotifications
      summary: List Notifications
      description: Retrieves a list of Notifications.
      x-authenticated: true
      parameters:
        - in: query
          name: offset
          description: >-
            The number of notifications to skip before starting to collect the
            notifications set
          schema:
            type: integer
            default: 0
        - in: query
          name: limit
          description: The number of notifications to return
          schema:
            type: integer
            default: 50
        - in: query
          name: fields
          description: The fields to include in the result set
          schema:
            type: string
        - in: query
          name: expand
          description: The fields to populate
          schema:
            type: string
        - in: query
          name: event_name
          schema:
            type: string
        - in: query
          name: resource_type
          schema:
            type: string
        - in: query
          name: resource_id
          schema:
            type: string
        - in: query
          name: to
          schema:
            type: string
        - in: query
          name: include_resends
          description: Whether the result set should include resent notifications or not
          schema:
            type: boolean
      tags:
        - Notification
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  notifications:
                    type: array
                    items:
                      $ref: '#/components/schemas/notification'
  '/notifications/{id}/resend':
    post:
      operationId: PostNotificationsNotificationResend
      summary: Resend Notification
      description: >-
        Resends a previously sent notifications, with the same data but
        optionally to a different address
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Notification
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                to:
                  description: >-
                    The address or user identifier that the Notification was
                    sent to
                  type: string
      tags:
        - Notification
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  notification:
                    $ref: '#/components/schemas/notification'
  '/orders/{id}/shipping-methods':
    post:
      operationId: PostOrdersOrderShippingMethods
      summary: Add a Shipping Method
      description: >-
        Adds a Shipping Method to an Order. If another Shipping Method exists
        with the same Shipping Profile, the previous Shipping Method will be
        replaced.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - price
                - option_id
                - data
              properties:
                price:
                  type: integer
                  description: >-
                    The price (excluding VAT) that should be charged for the
                    Shipping Method
                option_id:
                  type: string
                  description: >-
                    The id of the Shipping Option to create the Shipping Method
                    from.
                data:
                  type: object
                  description: >-
                    The data required for the Shipping Option to create a
                    Shipping Method. This will depend on the Fulfillment
                    Provider.
  '/orders/{id}/archive':
    post:
      operationId: PostOrdersOrderArchive
      summary: Archive order
      description: Archives the order with the given id.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/orders/{id}/claims/{claim_id}/cancel':
    post:
      operationId: PostOrdersClaimCancel
      summary: Cancels a Claim
      description: Cancels a Claim
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
        - in: path
          name: claim_id
          required: true
          description: The id of the Claim.
          schema:
            type: string
      tags:
        - Claim
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/claim_order'
  '/orders/{id}/claims/{claim_id}/fulfillments/{fulfillment_id}/cancel':
    post:
      operationId: PostOrdersClaimFulfillmentsCancel
      summary: Cancels a fulfilmment related to a Claim
      description: Registers a Fulfillment as canceled.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order which the Claim relates to.
          schema:
            type: string
        - in: path
          name: claim_id
          required: true
          description: The id of the Claim which the Fulfillment relates to.
          schema:
            type: string
        - in: path
          name: fulfillment_id
          required: true
          description: The id of the Fulfillment.
          schema:
            type: string
      tags:
        - Fulfillment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  fulfillment:
                    $ref: '#/components/schemas/fulfillment'
  '/orders/{id}/swaps/{swap_id}/fulfillments/{fulfillment_id}/cancel':
    post:
      operationId: PostOrdersSwapFulfillmentsCancel
      summary: Cancels a fulfilmment related to a Swap
      description: Registers a Fulfillment as canceled.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order which the Swap relates to.
          schema:
            type: string
        - in: path
          name: swap_id
          required: true
          description: The id of the Swap which the Fulfillment relates to.
          schema:
            type: string
        - in: path
          name: fulfillment_id
          required: true
          description: The id of the Fulfillment.
          schema:
            type: string
      tags:
        - Fulfillment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  fulfillment:
                    $ref: '#/components/schemas/fulfillment'
  '/orders/{id}/fulfillments/{fulfillment_id}/cancel':
    post:
      operationId: PostOrdersOrderFulfillmentsCancel
      summary: Cancels a fulfilmment
      description: Registers a Fulfillment as canceled.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order which the Fulfillment relates to.
          schema:
            type: string
        - in: path
          name: fulfillment_id
          required: true
          description: The id of the Fulfillment
          schema:
            type: string
      tags:
        - Fulfillment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  fulfillment:
                    $ref: '#/components/schemas/fulfillment'
  '/orders/{id}/cancel':
    post:
      operationId: PostOrdersOrderCancel
      summary: Cancel an Order
      description: >-
        Registers an Order as canceled. This triggers a flow that will cancel
        any created Fulfillments and Payments, may fail if the Payment or
        Fulfillment Provider is unable to cancel the Payment/Fulfillment.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/orders/{id}/swaps/{swap_id}/cancel':
    post:
      operationId: PostOrdersSwapCancel
      summary: Cancels a Swap
      description: Cancels a Swap
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
        - in: path
          name: swap_id
          required: true
          description: The id of the Swap.
          schema:
            type: string
      tags:
        - Swap
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/swap'
  '/orders/{id}/capture':
    post:
      operationId: PostOrdersOrderCapture
      summary: Capture an Order
      description: Captures all the Payments associated with an Order.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/orders/{id}/complete':
    post:
      operationId: PostOrdersOrderComplete
      summary: Complete an Order
      description: Completes an Order
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/orders/{id}/claims/{claim_id}/shipments':
    post:
      operationId: PostOrdersOrderClaimsClaimShipments
      summary: Create Claim Shipment
      description: Registers a Claim Fulfillment as shipped.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
        - in: path
          name: claim_id
          required: true
          description: The id of the Claim.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - fulfillment_id
              properties:
                fulfillment_id:
                  description: The id of the Fulfillment.
                  type: string
                tracking_numbers:
                  description: The tracking numbers for the shipment.
                  type: array
                  items:
                    type: string
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/order/{id}/claims':
    post:
      operationId: PostOrdersOrderClaims
      summary: Create a Claim
      description: Creates a Claim.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - type
                - claim_items
              properties:
                type:
                  description: >-
                    The type of the Claim. This will determine how the Claim is
                    treated: `replace` Claims will result in a Fulfillment with
                    new items being created, while a `refund` Claim will refund
                    the amount paid for the claimed items.
                  type: string
                  enum:
                    - replace
                    - refund
                claim_items:
                  description: The Claim Items that the Claim will consist of.
                  type: array
                  items:
                    properties:
                      item_id:
                        description: The id of the Line Item that will be claimed.
                        type: string
                      quantity:
                        description: The number of items that will be returned
                        type: integer
                      note:
                        description: >-
                          Short text describing the Claim Item in further
                          detail.
                        type: string
                      reason:
                        description: The reason for the Claim
                        type: string
                        enum:
                          - missing_item
                          - wrong_item
                          - production_failure
                          - other
                      tags:
                        description: A list o tags to add to the Claim Item
                        type: array
                        items:
                          type: string
                      images:
                        description: >-
                          A list of image URL's that will be associated with the
                          Claim
                        items:
                          type: string
                return_shipping:
                  description: >-
                    Optional details for the Return Shipping Method, if the
                    items are to be sent back.
                  type: object
                  properties:
                    option_id:
                      type: string
                      description: >-
                        The id of the Shipping Option to create the Shipping
                        Method from.
                    price:
                      type: integer
                      description: The price to charge for the Shipping Method.
                additional_items:
                  description: >-
                    The new items to send to the Customer when the Claim type is
                    Replace.
                  type: array
                  items:
                    properties:
                      variant_id:
                        description: The id of the Product Variant to ship.
                        type: string
                      quantity:
                        description: The quantity of the Product Variant to ship.
                        type: integer
                shipping_methods:
                  description: The Shipping Methods to send the additional Line Items with.
                  type: array
                  items:
                    properties:
                      id:
                        description: The id of an existing Shipping Method
                        type: string
                      option_id:
                        description: >-
                          The id of the Shipping Option to create a Shipping
                          Method from
                        type: string
                      price:
                        description: The price to charge for the Shipping Method
                        type: integer
                shipping_address:
                  type: object
                  description: >-
                    An optional shipping address to send the claim to. Defaults
                    to the parent order's shipping address
                refund_amount:
                  description: >-
                    The amount to refund the Customer when the Claim type is
                    `refund`.
                  type: integer
                no_notification:
                  description: >-
                    If set to true no notification will be send related to this
                    Claim.
                  type: boolean
                metadata:
                  description: >-
                    An optional set of key-value pairs to hold additional
                    information.
                  type: object
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/orders/{id}/fulfillments':
    post:
      operationId: PostOrdersOrderFulfillments
      summary: Create a Fulfillment
      description: >-
        Creates a Fulfillment of an Order - will notify Fulfillment Providers to
        prepare a shipment.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - items
              properties:
                items:
                  description: The Line Items to include in the Fulfillment.
                  type: array
                  items:
                    properties:
                      item_id:
                        description: The id of Line Item to fulfill.
                        type: string
                      quantity:
                        description: The quantity of the Line Item to fulfill.
                        type: integer
                no_notification:
                  description: >-
                    If set to true no notification will be send related to this
                    Swap.
                  type: boolean
                metadata:
                  description: >-
                    An optional set of key-value pairs to hold additional
                    information.
                  type: object
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  /orders:
    post:
      operationId: PostOrders
      summary: Create an order
      description: Creates and order
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              required:
                - email
                - billing_address
                - shipping_address
                - items
                - region
                - customer_id
                - payment_method
                - shipping_method
              properties:
                status:
                  description: status of the order
                  type: string
                email:
                  description: the email for the order
                  type: string
                billing_address:
                  description: Billing address
                  anyOf:
                    - $ref: '#/components/schemas/address'
                shipping_address:
                  description: Shipping address
                  anyOf:
                    - $ref: '#/components/schemas/address'
                items:
                  description: The Line Items for the order
                  type: array
                  items:
                    $ref: '#/components/schemas/line_item'
                region:
                  description: Region where the order belongs
                  type: string
                discounts:
                  description: Discounts applied to the order
                  type: array
                  items:
                    $ref: '#/components/schemas/line_item'
                customer_id:
                  description: id of the customer
                  type: string
                payment_method:
                  description: payment method chosen for the order
                  type: object
                  required:
                    - provider_id
                  properties:
                    provider_id:
                      type: string
                      description: id of the payment provider
                    data:
                      description: Data relevant for the given payment method
                      type: object
                shipping_method:
                  description: The Shipping Method used for shipping the order.
                  type: object
                  required:
                    - provider_id
                    - profile_id
                    - price
                  properties:
                    provider_id:
                      type: string
                      description: The id of the shipping provider.
                    profile_id:
                      type: string
                      description: The id of the shipping profile.
                    price:
                      type: integer
                      description: The price of the shipping.
                    data:
                      type: object
                      description: Data relevant to the specific shipping method.
                    items:
                      type: array
                      items:
                        $ref: '#/components/schemas/line_item'
                      description: Items to ship
                no_notification:
                  description: >-
                    A flag to indicate if no notifications should be emitted
                    related to the updated order.
                  type: boolean
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
    get:
      operationId: GetOrders
      summary: List Orders
      description: Retrieves a list of Orders
      x-authenticated: true
      parameters:
        - in: query
          name: q
          description: Query used for searching orders.
          schema:
            type: string
        - in: query
          name: id
          description: Id of the order to search for.
          schema:
            type: string
        - in: query
          name: status
          style: form
          explode: false
          description: Status to search for
          schema:
            type: array
            items:
              type: string
        - in: query
          name: fulfillment_status
          description: Fulfillment status to search for.
          schema:
            type: string
        - in: query
          name: payment_status
          description: Payment status to search for.
          schema:
            type: string
        - in: query
          name: display_id
          description: Display id to search for.
          schema:
            type: string
        - in: query
          name: cart_id
          description: to search for.
          schema:
            type: string
        - in: query
          name: customer_id
          description: to search for.
          schema:
            type: string
        - in: query
          name: email
          description: to search for.
          schema:
            type: string
        - in: query
          name: region_id
          description: to search for.
          schema:
            type: string
        - in: query
          name: currency_code
          description: to search for.
          schema:
            type: string
        - in: query
          name: tax_rate
          description: to search for.
          schema:
            type: string
        - in: query
          name: cancelled_at
          description: >-
            Date comparison for when resulting orders was cancelled, i.e. less
            than, greater than etc.
          schema:
            type: object
        - in: query
          name: created_at
          description: >-
            Date comparison for when resulting orders was created, i.e. less
            than, greater than etc.
          schema:
            type: object
        - in: query
          name: updated_at
          description: >-
            Date comparison for when resulting orders was updated, i.e. less
            than, greater than etc.
          schema:
            type: object
        - in: query
          name: offset
          description: How many orders to skip in the result.
          schema:
            type: string
        - in: query
          name: limit
          description: Limit the number of orders returned.
          schema:
            type: string
        - in: query
          name: expand
          description: >-
            (Comma separated) Which fields should be expanded in each order of
            the result.
          schema:
            type: string
        - in: query
          name: fields
          description: >-
            (Comma separated) Which fields should be included in each order of
            the result.
          schema:
            type: string
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  orders:
                    type: array
                    items:
                      $ref: '#/components/schemas/order'
  '/orders/{id}/shipment':
    post:
      operationId: PostOrdersOrderShipment
      summary: Create a Shipment
      description: Registers a Fulfillment as shipped.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - fulfillment_id
              properties:
                fulfillment_id:
                  description: The id of the Fulfillment.
                  type: string
                tracking_numbers:
                  description: The tracking numbers for the shipment.
                  type: array
                  items:
                    type: string
                no_notification:
                  description: >-
                    If set to true no notification will be send related to this
                    Shipment.
                  type: boolean
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/orders/{id}/swaps/{swap_id}/shipments':
    post:
      operationId: PostOrdersOrderSwapsSwapShipments
      summary: Create Swap Shipment
      description: Registers a Swap Fulfillment as shipped.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
        - in: path
          name: swap_id
          required: true
          description: The id of the Swap.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - fulfillment_id
              properties:
                fulfillment_id:
                  description: The id of the Fulfillment.
                  type: string
                tracking_numbers:
                  description: The tracking numbers for the shipment.
                  type: array
                  items:
                    type: string
                no_notification:
                  description: >-
                    If set to true no notification will be send related to this
                    Claim.
                  type: boolean
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/order/{id}/swaps':
    post:
      operationId: PostOrdersOrderSwaps
      summary: Create a Swap
      description: >-
        Creates a Swap. Swaps are used to handle Return of previously purchased
        goods and Fulfillment of replacements simultaneously.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - return_items
              properties:
                return_items:
                  description: The Line Items to return as part of the Swap.
                  type: array
                  items:
                    required:
                      - item_id
                      - quantity
                    properties:
                      item_id:
                        description: The id of the Line Item that will be claimed.
                        type: string
                      quantity:
                        description: The number of items that will be returned
                        type: integer
                return_shipping:
                  description: How the Swap will be returned.
                  type: object
                  properties:
                    option_id:
                      type: string
                      description: >-
                        The id of the Shipping Option to create the Shipping
                        Method from.
                    price:
                      type: integer
                      description: The price to charge for the Shipping Method.
                additional_items:
                  description: The new items to send to the Customer.
                  type: array
                  items:
                    required:
                      - variant_id
                      - quantity
                    properties:
                      variant_id:
                        description: The id of the Product Variant to ship.
                        type: string
                      quantity:
                        description: The quantity of the Product Variant to ship.
                        type: integer
                custom_shipping_options:
                  description: >-
                    The custom shipping options to potentially create a Shipping
                    Method from.
                  type: array
                  items:
                    required:
                      - option_id
                      - price
                    properties:
                      option_id:
                        description: >-
                          The id of the Shipping Option to override with a
                          custom price.
                        type: string
                      price:
                        description: The custom price of the Shipping Option.
                        type: integer
                no_notification:
                  description: >-
                    If set to true no notification will be send related to this
                    Swap.
                  type: boolean
                allow_backorder:
                  description: 'If true, swaps can be completed with items out of stock'
                  type: boolean
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/order/{id}/metadata/{key}':
    delete:
      operationId: DeleteOrdersOrderMetadataKey
      summary: Delete Metadata
      description: Deletes a metadata key.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
        - in: path
          name: key
          required: true
          description: The metadata key.
          schema:
            type: string
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/orders/{id}/claims/{claim_id}/fulfillments':
    post:
      operationId: PostOrdersOrderClaimsClaimFulfillments
      summary: Create a Claim Fulfillment
      description: Creates a Fulfillment for a Claim.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
        - in: path
          name: claim_id
          required: true
          description: The id of the Claim.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                metadata:
                  description: >-
                    An optional set of key-value pairs to hold additional
                    information.
                  type: object
                no_notification:
                  description: >-
                    If set to true no notification will be send related to this
                    Claim.
                  type: boolean
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/orders/{id}/swaps/{swap_id}/fulfillments':
    post:
      operationId: PostOrdersOrderSwapsSwapFulfillments
      summary: Create a Swap Fulfillment
      description: Creates a Fulfillment for a Swap.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
        - in: path
          name: swap_id
          required: true
          description: The id of the Swap.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                metadata:
                  description: >-
                    An optional set of key-value pairs to hold additional
                    information.
                  type: object
                no_notification:
                  description: >-
                    If set to true no notification will be send related to this
                    Claim.
                  type: boolean
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/orders/{id}':
    get:
      operationId: GetOrdersOrder
      summary: Retrieve an Order
      description: Retrieves an Order
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
    post:
      operationId: PostOrdersOrder
      summary: Update an order
      description: Updates and order
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                email:
                  description: the email for the order
                  type: string
                billing_address:
                  description: Billing address
                  anyOf:
                    - $ref: '#/components/schemas/address'
                shipping_address:
                  description: Shipping address
                  anyOf:
                    - $ref: '#/components/schemas/address'
                items:
                  description: The Line Items for the order
                  type: array
                  items:
                    $ref: '#/components/schemas/line_item'
                region:
                  description: Region where the order belongs
                  type: string
                discounts:
                  description: Discounts applied to the order
                  type: array
                  items:
                    $ref: '#/components/schemas/line_item'
                customer_id:
                  description: id of the customer
                  type: string
                payment_method:
                  description: payment method chosen for the order
                  type: object
                  properties:
                    provider_id:
                      type: string
                      description: id of the payment provider
                    data:
                      description: Data relevant for the given payment method
                      type: object
                shipping_method:
                  description: The Shipping Method used for shipping the order.
                  type: object
                  properties:
                    provider_id:
                      type: string
                      description: The id of the shipping provider.
                    profile_id:
                      type: string
                      description: The id of the shipping profile.
                    price:
                      type: integer
                      description: The price of the shipping.
                    data:
                      type: object
                      description: Data relevant to the specific shipping method.
                    items:
                      type: array
                      items:
                        $ref: '#/components/schemas/line_item'
                      description: Items to ship
                no_notification:
                  description: >-
                    A flag to indicate if no notifications should be emitted
                    related to the updated order.
                  type: boolean
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/orders/{id}/swaps/{swap_id}/process-payment':
    post:
      operationId: PostOrdersOrderSwapsSwapProcessPayment
      summary: Process a Swap difference
      description: >-
        When there are differences between the returned and shipped Products in
        a Swap, the difference must be processed. Either a Refund will be issued
        or a Payment will be captured.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
        - in: path
          name: swap_id
          required: true
          description: The id of the Swap.
          schema:
            type: string
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/orders/{id}/refunds':
    post:
      operationId: PostOrdersOrderRefunds
      summary: Create a Refund
      description: Issues a Refund.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - amount
                - reason
              properties:
                amount:
                  description: The amount to refund.
                  type: integer
                reason:
                  description: The reason for the Refund.
                  type: string
                note:
                  description: A not with additional details about the Refund.
                  type: string
                no_notification:
                  description: >-
                    If set to true no notification will be send related to this
                    Refund.
                  type: boolean
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/orders/{id}/returns':
    post:
      operationId: PostOrdersOrderReturns
      summary: Request a Return
      description: >-
        Requests a Return. If applicable a return label will be created and
        other plugins notified.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - items
              properties:
                items:
                  description: The Line Items that will be returned.
                  type: array
                  items:
                    properties:
                      item_id:
                        description: The id of the Line Item.
                        type: string
                      reason_id:
                        description: The id of the Return Reason to use.
                        type: string
                      note:
                        description: An optional note with information about the Return.
                        type: string
                      quantity:
                        description: The quantity of the Line Item.
                        type: integer
                return_shipping:
                  description: >-
                    The Shipping Method to be used to handle the return
                    shipment.
                  type: object
                  properties:
                    option_id:
                      type: string
                      description: >-
                        The id of the Shipping Option to create the Shipping
                        Method from.
                    price:
                      type: integer
                      description: The price to charge for the Shipping Method.
                receive_now:
                  description: >-
                    A flag to indicate if the Return should be registerd as
                    received immediately.
                  type: boolean
                no_notification:
                  description: >-
                    A flag to indicate if no notifications should be emitted
                    related to the requested Return.
                  type: boolean
                refund:
                  description: The amount to refund.
                  type: integer
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  '/order/{id}/claims/{claim_id}':
    post:
      operationId: PostOrdersOrderClaimsClaim
      summary: Update a Claim
      description: Updates a Claim.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Order.
          schema:
            type: string
        - in: path
          name: claim_id
          required: true
          description: The id of the Claim.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                claim_items:
                  description: The Claim Items that the Claim will consist of.
                  type: array
                  items:
                    properties:
                      id:
                        description: The id of the Claim Item.
                        type: string
                      item_id:
                        description: The id of the Line Item that will be claimed.
                        type: string
                      quantity:
                        description: The number of items that will be returned
                        type: integer
                      note:
                        description: >-
                          Short text describing the Claim Item in further
                          detail.
                        type: string
                      reason:
                        description: The reason for the Claim
                        type: string
                        enum:
                          - missing_item
                          - wrong_item
                          - production_failure
                          - other
                      tags:
                        description: A list o tags to add to the Claim Item
                        type: array
                        items:
                          type: string
                      images:
                        description: >-
                          A list of image URL's that will be associated with the
                          Claim
                        items:
                          type: string
                shipping_methods:
                  description: The Shipping Methods to send the additional Line Items with.
                  type: array
                  items:
                    properties:
                      id:
                        description: The id of an existing Shipping Method
                        type: string
                      option_id:
                        description: >-
                          The id of the Shipping Option to create a Shipping
                          Method from
                        type: string
                      price:
                        description: The price to charge for the Shipping Method
                        type: integer
                no_notification:
                  description: >-
                    If set to true no notification will be send related to this
                    Swap.
                  type: boolean
                metadata:
                  description: >-
                    An optional set of key-value pairs to hold additional
                    information.
                  type: object
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  order:
                    $ref: '#/components/schemas/order'
  /product-tags:
    get:
      operationId: GetProductTags
      summary: List Product Tags
      description: Retrieve a list of Product Tags.
      x-authenticated: true
      parameters:
        - in: query
          name: limit
          description: The number of tags to return.
          schema:
            type: string
        - in: query
          name: offset
          description: The offset of tags to return.
          schema:
            type: string
        - in: query
          name: value
          description: The value of tags to return.
          schema:
            type: string
        - in: query
          name: id
          description: The id of tags to return.
          schema:
            type: string
        - in: query
          name: created_at
          description: >-
            Date comparison for when resulting tas was created, i.e. less than,
            greater than etc.
          schema:
            type: object
        - in: query
          name: updated_at
          description: >-
            Date comparison for when resulting tas was updated, i.e. less than,
            greater than etc.
          schema:
            type: object
      tags:
        - Product Tag
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  tags:
                    $ref: '#/components/schemas/product_tag'
  /product-types:
    get:
      operationId: GetProductTypes
      summary: List Product Types
      description: Retrieve a list of Product Types.
      x-authenticated: true
      parameters:
        - in: query
          name: limit
          description: The number of types to return.
          schema:
            type: string
        - in: query
          name: offset
          description: The offset of types to return.
          schema:
            type: string
        - in: query
          name: value
          description: The value of types to return.
          schema:
            type: string
        - in: query
          name: id
          description: The id of types to return.
          schema:
            type: string
        - in: query
          name: created_at
          description: >-
            Date comparison for when resulting tas was created, i.e. less than,
            greater than etc.
          schema:
            type: object
        - in: query
          name: updated_at
          description: >-
            Date comparison for when resulting tas was updated, i.e. less than,
            greater than etc.
          schema:
            type: object
      tags:
        - Product Tag
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  types:
                    $ref: '#/components/schemas/product_tag'
  '/products/{id}/options':
    post:
      operationId: PostProductsProductOptions
      summary: Add an Option
      x-authenticated: true
      description: Adds a Product Option to a Product
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Product.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - title
              properties:
                title:
                  description: >-
                    The title the Product Option will be identified by i.e.
                    "Size"
                  type: string
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  product:
                    $ref: '#/components/schemas/product'
  /products:
    post:
      operationId: PostProducts
      summary: Create a Product
      x-authenticated: true
      description: Creates a Product
      requestBody:
        content:
          application/json:
            schema:
              required:
                - title
                - subtitle
                - description
              properties:
                title:
                  description: The title of the Product
                  type: string
                subtitle:
                  description: The subtitle of the Product
                  type: string
                description:
                  description: A description of the Product.
                  type: string
                is_giftcard:
                  description: >-
                    A flag to indicate if the Product represents a Gift Card.
                    Purchasing Products with this flag set to `true` will result
                    in a Gift Card being created.
                  type: boolean
                discountable:
                  description: >-
                    A flag to indicate if discounts can be applied to the
                    LineItems generated from this Product
                  type: boolean
                images:
                  description: Images of the Product.
                  type: array
                  items:
                    type: string
                thumbnail:
                  description: The thumbnail to use for the Product.
                  type: string
                handle:
                  description: A unique handle to identify the Product by.
                  type: string
                type:
                  description: The Product Type to associate the Product with.
                  type: object
                  properties:
                    value:
                      description: The value of the Product Type.
                      type: string
                collection_id:
                  description: The id of the Collection the Product should belong to.
                  type: string
                tags:
                  description: Tags to associate the Product with.
                  type: array
                  items:
                    properties:
                      id:
                        description: The id of an existing Tag.
                        type: string
                      value:
                        description: 'The value of the Tag, these will be upserted.'
                        type: string
                options:
                  description: >-
                    The Options that the Product should have. These define on
                    which properties the Product's Product Variants will differ.
                  type: array
                  items:
                    properties:
                      title:
                        description: The title to identify the Product Option by.
                        type: string
                variants:
                  description: A list of Product Variants to create with the Product.
                  type: array
                  items:
                    properties:
                      title:
                        description: The title to identify the Product Variant by.
                        type: string
                      sku:
                        description: The unique SKU for the Product Variant.
                        type: string
                      ean:
                        description: The EAN number of the item.
                        type: string
                      upc:
                        description: The UPC number of the item.
                        type: string
                      barcode:
                        description: A generic GTIN field for the Product Variant.
                        type: string
                      hs_code:
                        description: The Harmonized System code for the Product Variant.
                        type: string
                      inventory_quantity:
                        description: The amount of stock kept for the Product Variant.
                        type: integer
                      allow_backorder:
                        description: >-
                          Whether the Product Variant can be purchased when out
                          of stock.
                        type: boolean
                      manage_inventory:
                        description: >-
                          Whether Medusa should keep track of the inventory for
                          this Product Variant.
                        type: boolean
                      weight:
                        description: The wieght of the Product Variant.
                        type: string
                      length:
                        description: The length of the Product Variant.
                        type: string
                      height:
                        description: The height of the Product Variant.
                        type: string
                      width:
                        description: The width of the Product Variant.
                        type: string
                      origin_country:
                        description: The country of origin of the Product Variant.
                        type: string
                      mid_code:
                        description: >-
                          The Manufacturer Identification code for the Product
                          Variant.
                        type: string
                      material:
                        description: The material composition of the Product Variant.
                        type: string
                      metadata:
                        description: >-
                          An optional set of key-value pairs with additional
                          information.
                        type: object
                      prices:
                        type: array
                        items:
                          properties:
                            region_id:
                              description: >-
                                The id of the Region for which the price is
                                used.
                              type: string
                            currency_code:
                              description: >-
                                The 3 character ISO currency code for which the
                                price will be used.
                              type: string
                            amount:
                              description: The amount to charge for the Product Variant.
                              type: integer
                            sale_amount:
                              description: >-
                                The sale amount to charge for the Product
                                Variant.
                              type: integer
                      options:
                        type: array
                        items:
                          properties:
                            value:
                              description: >-
                                The value to give for the Product Option at the
                                same index in the Product's `options` field.
                              type: string
                weight:
                  description: The wieght of the Product.
                  type: string
                length:
                  description: The length of the Product.
                  type: string
                height:
                  description: The height of the Product.
                  type: string
                width:
                  description: The width of the Product.
                  type: string
                origin_country:
                  description: The country of origin of the Product.
                  type: string
                mid_code:
                  description: The Manufacturer Identification code for the Product.
                  type: string
                material:
                  description: The material composition of the Product.
                  type: string
                metadata:
                  description: >-
                    An optional set of key-value pairs with additional
                    information.
                  type: object
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  product:
                    $ref: '#/components/schemas/product'
    get:
      operationId: GetProducts
      summary: List Product
      description: Retrieves a list of Product
      x-authenticated: true
      parameters:
        - in: query
          name: q
          description: Query used for searching products.
          schema:
            type: string
        - in: query
          name: id
          description: Id of the product to search for.
          schema:
            type: string
        - in: query
          name: status
          style: form
          explode: false
          description: Status to search for
          schema:
            type: array
            items:
              type: string
        - in: query
          name: collection_id
          style: form
          explode: false
          description: Collection ids to search for.
          schema:
            type: array
            items:
              type: string
        - in: query
          name: tags
          style: form
          explode: false
          description: Tags to search for
          schema:
            type: array
            items:
              type: string
        - in: query
          name: title
          description: to search for.
          schema:
            type: string
        - in: query
          name: description
          description: to search for.
          schema:
            type: string
        - in: query
          name: handle
          description: to search for.
          schema:
            type: string
        - in: query
          name: is_giftcard
          description: Search for giftcards using is_giftcard=true.
          schema:
            type: string
        - in: query
          name: type
          description: to search for.
          schema:
            type: string
        - in: query
          name: order
          description: to retrieve products in.
          schema:
            type: string
        - in: query
          name: deleted_at
          description: >-
            Date comparison for when resulting products was deleted, i.e. less
            than, greater than etc.
          schema:
            type: object
        - in: query
          name: created_at
          description: >-
            Date comparison for when resulting products was created, i.e. less
            than, greater than etc.
          schema:
            type: object
        - in: query
          name: updated_at
          description: >-
            Date comparison for when resulting products was updated, i.e. less
            than, greater than etc.
          schema:
            type: object
        - in: query
          name: offset
          description: How many products to skip in the result.
          schema:
            type: string
        - in: query
          name: limit
          description: Limit the number of products returned.
          schema:
            type: string
        - in: query
          name: expand
          description: >-
            (Comma separated) Which fields should be expanded in each product of
            the result.
          schema:
            type: string
        - in: query
          name: fields
          description: >-
            (Comma separated) Which fields should be included in each product of
            the result.
          schema:
            type: string
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  count:
                    description: The number of Products.
                    type: integer
                  offset:
                    description: The offset of the Product query.
                    type: integer
                  limit:
                    description: The limit of the Product query.
                    type: integer
                  products:
                    type: array
                    items:
                      $ref: '#/components/schemas/product'
  '/products/{id}/variants':
    post:
      operationId: PostProductsProductVariants
      summary: Create a Product Variant
      description: >-
        Creates a Product Variant. Each Product Variant must have a unique
        combination of Product Option Values.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Product.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - title
                - prices
                - options
              properties:
                title:
                  description: The title to identify the Product Variant by.
                  type: string
                sku:
                  description: The unique SKU for the Product Variant.
                  type: string
                ean:
                  description: The EAN number of the item.
                  type: string
                upc:
                  description: The UPC number of the item.
                  type: string
                barcode:
                  description: A generic GTIN field for the Product Variant.
                  type: string
                hs_code:
                  description: The Harmonized System code for the Product Variant.
                  type: string
                inventory_quantity:
                  description: The amount of stock kept for the Product Variant.
                  type: integer
                allow_backorder:
                  description: >-
                    Whether the Product Variant can be purchased when out of
                    stock.
                  type: boolean
                manage_inventory:
                  description: >-
                    Whether Medusa should keep track of the inventory for this
                    Product Variant.
                  type: boolean
                weight:
                  description: The wieght of the Product Variant.
                  type: string
                length:
                  description: The length of the Product Variant.
                  type: string
                height:
                  description: The height of the Product Variant.
                  type: string
                width:
                  description: The width of the Product Variant.
                  type: string
                origin_country:
                  description: The country of origin of the Product Variant.
                  type: string
                mid_code:
                  description: >-
                    The Manufacturer Identification code for the Product
                    Variant.
                  type: string
                material:
                  description: The material composition of the Product Variant.
                  type: string
                metadata:
                  description: >-
                    An optional set of key-value pairs with additional
                    information.
                  type: object
                prices:
                  type: array
                  items:
                    properties:
                      region_id:
                        description: The id of the Region for which the price is used.
                        type: string
                      currency_code:
                        description: >-
                          The 3 character ISO currency code for which the price
                          will be used.
                        type: string
                      amount:
                        description: The amount to charge for the Product Variant.
                        type: integer
                      sale_amount:
                        description: The sale amount to charge for the Product Variant.
                        type: integer
                options:
                  type: array
                  items:
                    properties:
                      option_id:
                        description: The id of the Product Option to set the value for.
                        type: string
                      value:
                        description: The value to give for the Product Option.
                        type: string
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  product:
                    $ref: '#/components/schemas/product'
    get:
      operationId: GetProductsProductVariants
      summary: List a Product's Product Variants
      description: Retrieves a list of the Product Variants associated with a Product.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Product.
          schema:
            type: string
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  variants:
                    type: array
                    items:
                      $ref: '#/components/schemas/product_variant'
  '/products/{id}/options/{option_id}':
    delete:
      operationId: DeleteProductsProductOptionsOption
      summary: Delete a Product Option
      description: >-
        Deletes a Product Option. Before a Product Option can be deleted all
        Option Values for the Product Option must be the same. You may, for
        example, have to delete some of your variants prior to deleting the
        Product Option
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Product.
          schema:
            type: string
        - in: path
          name: option_id
          required: true
          description: The id of the Product Option.
          schema:
            type: string
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted Product Option
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
                  product:
                    $ref: '#/components/schemas/product'
    post:
      operationId: PostProductsProductOptionsOption
      summary: Update a Product Option.
      description: Updates a Product Option
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Product.
          schema:
            type: string
        - in: path
          name: option_id
          required: true
          description: The id of the Product Option.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - title
              properties:
                title:
                  description: The title of the Product Option
                  type: string
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  product:
                    $ref: '#/components/schemas/product'
  '/products/{id}':
    delete:
      operationId: DeleteProductsProduct
      summary: Delete a Product
      description: Deletes a Product and it's associated Product Variants.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Product.
          schema:
            type: string
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted Product.
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
    get:
      operationId: GetProductsProduct
      summary: Retrieve a Product
      description: Retrieves a Product.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Product.
          schema:
            type: string
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  product:
                    $ref: '#/components/schemas/product'
    post:
      operationId: PostProductsProduct
      summary: Update a Product
      description: Updates a Product
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Product.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                title:
                  description: The title of the Product
                  type: string
                subtitle:
                  description: The subtitle of the Product
                  type: string
                description:
                  description: A description of the Product.
                  type: string
                is_giftcard:
                  description: >-
                    A flag to indicate if the Product represents a Gift Card.
                    Purchasing Products with this flag set to `true` will result
                    in a Gift Card being created.
                  type: boolean
                discountable:
                  description: >-
                    A flag to indicate if discounts can be applied to the
                    LineItems generated from this Product
                  type: boolean
                images:
                  description: Images of the Product.
                  type: array
                  items:
                    type: string
                thumbnail:
                  description: The thumbnail to use for the Product.
                  type: string
                handle:
                  description: A unique handle to identify the Product by.
                  type: string
                type:
                  description: The Product Type to associate the Product with.
                  type: object
                  properties:
                    value:
                      description: The value of the Product Type.
                      type: string
                collection_id:
                  description: The id of the Collection the Product should belong to.
                  type: string
                tags:
                  description: Tags to associate the Product with.
                  type: array
                  items:
                    properties:
                      id:
                        description: The id of an existing Tag.
                        type: string
                      value:
                        description: 'The value of the Tag, these will be upserted.'
                        type: string
                options:
                  description: >-
                    The Options that the Product should have. These define on
                    which properties the Product's Product Variants will differ.
                  type: array
                  items:
                    properties:
                      title:
                        description: The title to identify the Product Option by.
                        type: string
                variants:
                  description: A list of Product Variants to create with the Product.
                  type: array
                  items:
                    properties:
                      title:
                        description: The title to identify the Product Variant by.
                        type: string
                      sku:
                        description: The unique SKU for the Product Variant.
                        type: string
                      ean:
                        description: The EAN number of the item.
                        type: string
                      upc:
                        description: The UPC number of the item.
                        type: string
                      barcode:
                        description: A generic GTIN field for the Product Variant.
                        type: string
                      hs_code:
                        description: The Harmonized System code for the Product Variant.
                        type: string
                      inventory_quantity:
                        description: The amount of stock kept for the Product Variant.
                        type: integer
                      allow_backorder:
                        description: >-
                          Whether the Product Variant can be purchased when out
                          of stock.
                        type: boolean
                      manage_inventory:
                        description: >-
                          Whether Medusa should keep track of the inventory for
                          this Product Variant.
                        type: boolean
                      weight:
                        description: The wieght of the Product Variant.
                        type: string
                      length:
                        description: The length of the Product Variant.
                        type: string
                      height:
                        description: The height of the Product Variant.
                        type: string
                      width:
                        description: The width of the Product Variant.
                        type: string
                      origin_country:
                        description: The country of origin of the Product Variant.
                        type: string
                      mid_code:
                        description: >-
                          The Manufacturer Identification code for the Product
                          Variant.
                        type: string
                      material:
                        description: The material composition of the Product Variant.
                        type: string
                      metadata:
                        description: >-
                          An optional set of key-value pairs with additional
                          information.
                        type: object
                      prices:
                        type: array
                        items:
                          properties:
                            region_id:
                              description: >-
                                The id of the Region for which the price is
                                used.
                              type: string
                            currency_code:
                              description: >-
                                The 3 character ISO currency code for which the
                                price will be used.
                              type: string
                            amount:
                              description: The amount to charge for the Product Variant.
                              type: integer
                            sale_amount:
                              description: >-
                                The sale amount to charge for the Product
                                Variant.
                              type: integer
                      options:
                        type: array
                        items:
                          properties:
                            value:
                              description: >-
                                The value to give for the Product Option at the
                                same index in the Product's `options` field.
                              type: string
                weight:
                  description: The wieght of the Product.
                  type: string
                length:
                  description: The length of the Product.
                  type: string
                height:
                  description: The height of the Product.
                  type: string
                width:
                  description: The width of the Product.
                  type: string
                origin_country:
                  description: The country of origin of the Product.
                  type: string
                mid_code:
                  description: The Manufacturer Identification code for the Product.
                  type: string
                material:
                  description: The material composition of the Product.
                  type: string
                metadata:
                  description: >-
                    An optional set of key-value pairs with additional
                    information.
                  type: object
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  product:
                    $ref: '#/components/schemas/product'
  '/products/{id}/variants/{variant_id}':
    delete:
      operationId: DeleteProductsProductVariantsVariant
      summary: Delete a Product Variant
      description: Deletes a Product Variant.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Product.
          schema:
            type: string
        - in: path
          name: variant_id
          required: true
          description: The id of the Product Variant.
          schema:
            type: string
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted Product Variant.
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
    post:
      operationId: PostProductsProductVariantsVariant
      summary: Update a Product Variant
      description: Update a Product Variant.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Product.
          schema:
            type: string
        - in: path
          name: variant_id
          required: true
          description: The id of the Product Variant.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                title:
                  description: The title to identify the Product Variant by.
                  type: string
                sku:
                  description: The unique SKU for the Product Variant.
                  type: string
                ean:
                  description: The EAN number of the item.
                  type: string
                upc:
                  description: The UPC number of the item.
                  type: string
                barcode:
                  description: A generic GTIN field for the Product Variant.
                  type: string
                hs_code:
                  description: The Harmonized System code for the Product Variant.
                  type: string
                inventory_quantity:
                  description: The amount of stock kept for the Product Variant.
                  type: integer
                allow_backorder:
                  description: >-
                    Whether the Product Variant can be purchased when out of
                    stock.
                  type: boolean
                manage_inventory:
                  description: >-
                    Whether Medusa should keep track of the inventory for this
                    Product Variant.
                  type: boolean
                weight:
                  description: The wieght of the Product Variant.
                  type: string
                length:
                  description: The length of the Product Variant.
                  type: string
                height:
                  description: The height of the Product Variant.
                  type: string
                width:
                  description: The width of the Product Variant.
                  type: string
                origin_country:
                  description: The country of origin of the Product Variant.
                  type: string
                mid_code:
                  description: >-
                    The Manufacturer Identification code for the Product
                    Variant.
                  type: string
                material:
                  description: The material composition of the Product Variant.
                  type: string
                metadata:
                  description: >-
                    An optional set of key-value pairs with additional
                    information.
                  type: object
                prices:
                  type: array
                  items:
                    properties:
                      region_id:
                        description: The id of the Region for which the price is used.
                        type: string
                      currency_code:
                        description: >-
                          The 3 character ISO currency code for which the price
                          will be used.
                        type: string
                      amount:
                        description: The amount to charge for the Product Variant.
                        type: integer
                      sale_amount:
                        description: The sale amount to charge for the Product Variant.
                        type: integer
                options:
                  type: array
                  items:
                    properties:
                      option_id:
                        description: The id of the Product Option to set the value for.
                        type: string
                      value:
                        description: The value to give for the Product Option.
                        type: string
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  product:
                    $ref: '#/components/schemas/product'
  /products/types:
    get:
      operationId: GetProductsTypes
      summary: List Product Types
      description: Retrieves a list of Product Types.
      x-authenticated: true
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  types:
                    type: array
                    items:
                      $ref: '#/components/schemas/product_type'
  '/products/{id}/metadata':
    post:
      operationId: PostProductsProductMetadata
      summary: Set Product metadata
      description: Set metadata key/value pair for Product
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Product.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - key
                - value
              properties:
                key:
                  description: The metadata key
                  type: string
                value:
                  description: The metadata value
                  type: string
      tags:
        - Product
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  product:
                    $ref: '#/components/schemas/product'
  '/regions/{id}/countries':
    post:
      operationId: PostRegionsRegionCountries
      summary: Add Country
      description: Adds a Country to the list of Countries in a Region
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Region.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - country_code
              properties:
                country_code:
                  description: The 2 character ISO code for the Country.
                  type: string
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  region:
                    $ref: '#/components/schemas/region'
  '/regions/{id}/fulfillment-providers':
    post:
      operationId: PostRegionsRegionFulfillmentProviders
      summary: Add Fulfillment Provider
      description: Adds a Fulfillment Provider to a Region
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Region.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - provider_id
              properties:
                provider_id:
                  description: The id of the Fulfillment Provider to add.
                  type: string
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  region:
                    $ref: '#/components/schemas/region'
  '/regions/{id}/payment-providers':
    post:
      operationId: PostRegionsRegionPaymentProviders
      summary: Add Payment Provider
      description: Adds a Payment Provider to a Region
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Region.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - provider_id
              properties:
                provider_id:
                  description: The id of the Payment Provider to add.
                  type: string
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  region:
                    $ref: '#/components/schemas/region'
  /regions:
    post:
      operationId: PostRegions
      summary: Create a Region
      description: Creates a Region
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              required:
                - name
                - currency_code
                - tax_rate
              properties:
                name:
                  description: The name of the Region
                  type: string
                currency_code:
                  description: The 3 character ISO currency code to use for the Region.
                  type: string
                tax_code:
                  description: An optional tax code the Region.
                  type: string
                tax_rate:
                  description: The tax rate to use on Orders in the Region.
                  type: number
                payment_providers:
                  description: >-
                    A list of Payment Providers that should be enabled for the
                    Region
                  type: array
                  items:
                    type: string
                fulfillment_providers:
                  description: >-
                    A list of Fulfillment Providers that should be enabled for
                    the Region
                  type: array
                  items:
                    type: string
                countries:
                  description: A list of countries that should be included in the Region.
                  type: array
                  items:
                    type: string
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  region:
                    $ref: '#/components/schemas/region'
    get:
      operationId: GetRegions
      summary: List Regions
      description: Retrieves a list of Regions.
      x-authenticated: true
      parameters:
        - in: query
          name: limit
          schema:
            type: integer
          required: false
          description: limit the number of regions in response
        - in: query
          name: offset
          schema:
            type: integer
          required: false
          description: Offset of regions in response (used for pagination)
        - in: query
          name: created_at
          schema:
            type: object
          required: false
          description: >-
            Date comparison for when resulting region was created, i.e. less
            than, greater than etc.
        - in: query
          name: updated_at
          schema:
            type: object
          required: false
          description: >-
            Date comparison for when resulting region was updated, i.e. less
            than, greater than etc.
        - in: query
          name: deleted_at
          schema:
            type: object
          required: false
          description: >-
            Date comparison for when resulting region was deleted, i.e. less
            than, greater than etc.
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  regions:
                    type: array
                    items:
                      $ref: '#/components/schemas/region'
  '/regions/{id}/metadata/{key}':
    delete:
      operationId: DeleteRegionsRegionMetadataKey
      summary: Delete Metadata
      description: Deletes a metadata key.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Region.
          schema:
            type: string
        - in: path
          name: key
          required: true
          description: The metadata key.
          schema:
            type: string
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  region:
                    $ref: '#/components/schemas/region'
  '/regions/{id}':
    delete:
      operationId: DeleteRegionsRegion
      summary: Delete a Region
      description: Deletes a Region.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Region.
          schema:
            type: string
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted Region.
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
    get:
      operationId: GetRegionsRegion
      summary: Retrieve a Region
      description: Retrieves a Region.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Region.
          schema:
            type: string
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  region:
                    $ref: '#/components/schemas/region'
    post:
      operationId: PostRegionsRegion
      summary: Update a Region
      description: Updates a Region
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Region.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: The name of the Region
                  type: string
                currency_code:
                  description: The 3 character ISO currency code to use for the Region.
                  type: string
                automatic_taxes:
                  description: >-
                    If true Medusa will automatically calculate taxes for carts
                    in this region. If false you have to manually call POST
                    /carts/:id/taxes.
                  type: boolean
                gift_cards_taxable:
                  description: >-
                    Whether gift cards in this region should be applied sales
                    tax when purchasing a gift card
                  type: boolean
                tax_provider_id:
                  description: >-
                    The id of the tax provider to use; if null the system tax
                    provider is used
                  type: string
                tax_code:
                  description: An optional tax code the Region.
                  type: string
                tax_rate:
                  description: The tax rate to use on Orders in the Region.
                  type: number
                payment_providers:
                  description: >-
                    A list of Payment Providers that should be enabled for the
                    Region
                  type: array
                  items:
                    type: string
                fulfillment_providers:
                  description: >-
                    A list of Fulfillment Providers that should be enabled for
                    the Region
                  type: array
                  items:
                    type: string
                countries:
                  description: A list of countries that should be included in the Region.
                  type: array
                  items:
                    type: string
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  region:
                    $ref: '#/components/schemas/region'
  '/regions/{id}/fulfillment-options':
    get:
      operationId: GetRegionsRegionFulfillmentOptions
      summary: List Fulfillment Options available in the Region
      description: Gathers all the fulfillment options available to in the Region.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Region.
          schema:
            type: string
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  fulfillment_options:
                    type: array
                    items:
                      properties:
                        provider_id:
                          type: string
                          description: id of the fulfillment provider
                        options:
                          type: object
                          description: fulfillment provider options
  '/regions/{id}/countries/{country_code}':
    delete:
      operationId: PostRegionsRegionCountriesCountry
      summary: Remove Country
      x-authenticated: true
      description: Removes a Country from the list of Countries in a Region
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Region.
          schema:
            type: string
        - in: path
          name: country_code
          required: true
          description: The 2 character ISO code for the Country.
          schema:
            type: string
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  region:
                    $ref: '#/components/schemas/region'
  '/regions/{id}/fulfillment-providers/{provider_id}':
    delete:
      operationId: PostRegionsRegionFulfillmentProvidersProvider
      summary: Remove Fulfillment Provider
      description: Removes a Fulfillment Provider.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Region.
          schema:
            type: string
        - in: path
          name: provider_id
          required: true
          description: The id of the Fulfillment Provider.
          schema:
            type: string
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  region:
                    $ref: '#/components/schemas/region'
  '/regions/{id}/payment-providers/{provider_id}':
    delete:
      operationId: PostRegionsRegionPaymentProvidersProvider
      summary: Remove Payment Provider
      description: Removes a Payment Provider.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Region.
          schema:
            type: string
        - in: path
          name: provider_id
          required: true
          description: The id of the Payment Provider.
          schema:
            type: string
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  region:
                    $ref: '#/components/schemas/region'
  '/regions/{id}/metadata':
    post:
      operationId: PostRegionsRegionMetadata
      summary: Set the metadata of a Region
      description: Sets the metadata of a Region
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Region.
          schema:
            type: string
      tags:
        - Region
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  region:
                    $ref: '#/components/schemas/region'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - key
                - value
              properties:
                key:
                  type: string
                  description: Key for the metadata value.
                value:
                  type: string
                  description: The value that the key relates to.
  /return-reasons:
    post:
      operationId: PostReturnReasons
      summary: Create a Return Reason
      description: Creates a Return Reason
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              required:
                - label
                - value
              properties:
                label:
                  description: The label to display to the Customer.
                  type: string
                value:
                  description: >-
                    The value that the Return Reason will be identified by. Must
                    be unique.
                  type: string
                parent_return_reason_id:
                  description: The id of the parent return reason.
                  type: string
                description:
                  description: An optional description to for the Reason.
                  type: string
                metadata:
                  description: >-
                    An optional set of key-value pairs with additional
                    information.
                  type: object
      tags:
        - Return Reason
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  return_reason:
                    $ref: '#/components/schemas/return_reason'
    get:
      operationId: GetReturnReasons
      summary: List Return Reasons
      description: Retrieves a list of Return Reasons.
      x-authenticated: true
      tags:
        - Return Reason
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  return_reasons:
                    type: array
                    items:
                      $ref: '#/components/schemas/return_reason'
  '/return-reasons/{id}':
    delete:
      operationId: DeleteReturnReason
      summary: Delete a return reason
      description: Deletes a return reason.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the return reason
          schema:
            type: string
      tags:
        - Return Reason
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted return reason
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
    get:
      operationId: GetReturnReasonsReason
      summary: Retrieve a Return Reason
      description: Retrieves a Return Reason.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Return Reason.
          schema:
            type: string
      tags:
        - Return Reason
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  return_reason:
                    $ref: '#/components/schemas/return_reason'
    post:
      operationId: PostReturnReasonsReason
      summary: Update a Return Reason
      description: Updates a Return Reason
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Return Reason.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                label:
                  description: The label to display to the Customer.
                  type: string
                description:
                  description: An optional description to for the Reason.
                  type: string
                metadata:
                  description: >-
                    An optional set of key-value pairs with additional
                    information.
                  type: object
      tags:
        - Return Reason
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  return_reason:
                    $ref: '#/components/schemas/return_reason'
  '/returns/{id}/cancel':
    post:
      operationId: PostReturnsReturnCancel
      summary: Cancel a Return
      description: Registers a Return as canceled.
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Return.
          schema:
            type: string
      tags:
        - Return
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  return:
                    $ref: '#/components/schemas/order'
  /returns:
    get:
      operationId: GetReturns
      summary: List Returns
      description: Retrieves a list of Returns
      parameters:
        - in: path
          name: limit
          required: true
          description: The upper limit for the amount of responses returned.
          schema:
            type: number
        - in: path
          name: offset
          required: true
          description: The offset of the list returned.
          schema:
            type: number
      tags:
        - Return
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  returns:
                    type: array
                    items:
                      $ref: '#/components/schemas/return'
  '/returns/{id}/receive':
    post:
      operationId: PostReturnsReturnReceive
      summary: Receive a Return
      description: >-
        Registers a Return as received. Updates statuses on Orders and Swaps
        accordingly.
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Return.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - items
              properties:
                items:
                  description: The Line Items that have been received.
                  type: array
                  items:
                    properties:
                      item_id:
                        description: The id of the Line Item.
                        type: string
                      quantity:
                        description: The quantity of the Line Item.
                        type: integer
                refund:
                  description: The amount to refund.
                  type: integer
      tags:
        - Return
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  return:
                    $ref: '#/components/schemas/return'
  /shipping-options:
    post:
      operationId: PostShippingOptions
      summary: Create Shipping Option
      description: Creates a Shipping Option
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: The name of the Shipping Option
                  type: string
                region_id:
                  description: >-
                    The id of the Region in which the Shipping Option will be
                    available.
                  type: string
                provider_id:
                  description: >-
                    The id of the Fulfillment Provider that handles the Shipping
                    Option.
                  type: string
                profile_id:
                  description: >-
                    The id of the Shipping Profile to add the Shipping Option
                    to.
                  type: number
                data:
                  description: >-
                    The data needed for the Fulfillment Provider to handle
                    shipping with this Shipping Option.
                  type: object
                price_type:
                  description: The type of the Shipping Option price.
                  type: string
                  enum:
                    - flat_rate
                    - calculated
                amount:
                  description: The amount to charge for the Shipping Option.
                  type: integer
                requirements:
                  description: >-
                    The requirements that must be satisfied for the Shipping
                    Option to be available.
                  type: array
                  items:
                    properties:
                      type:
                        description: The type of the requirement
                        type: string
                        enum:
                          - max_subtotal
                          - min_subtotal
                      amount:
                        description: The amount to compare with.
                        type: integer
                is_return:
                  description: Whether the Shipping Option defines a return shipment.
                  type: boolean
                admin_only:
                  description: 'If true, the option can be used for draft orders'
                  type: boolean
                metadata:
                  description: >-
                    An optional set of key-value pairs with additional
                    information.
                  type: object
      tags:
        - Shipping Option
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  shipping_option:
                    $ref: '#/components/schemas/shipping_option'
    get:
      operationId: GetShippingOptions
      summary: List Shipping Options
      description: Retrieves a list of Shipping Options.
      x-authenticated: true
      parameters:
        - in: query
          name: region_id
          schema:
            type: string
          description: Region to fetch options from
        - in: query
          name: is_return
          schema:
            type: boolean
          description: Flag for fetching return options
        - in: query
          name: admin_only
          schema:
            type: boolean
          description: Flag for fetching admin specific options
      tags:
        - Shipping Option
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  shipping_options:
                    type: array
                    items:
                      $ref: '#/components/schemas/shipping_option'
  '/shipping-options/{id}':
    delete:
      operationId: DeleteShippingOptionsOption
      summary: Delete a Shipping Option
      description: Deletes a Shipping Option.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Shipping Option.
          schema:
            type: string
      tags:
        - Shipping Option
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted Shipping Option.
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
    get:
      operationId: GetShippingOptionsOption
      summary: Retrieve a Shipping Option
      description: Retrieves a Shipping Option.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Shipping Option.
          schema:
            type: string
      tags:
        - Shipping Option
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  shipping_option:
                    $ref: '#/components/schemas/shipping_option'
    post:
      operationId: PostShippingOptionsOption
      summary: Update Shipping Option
      description: Updates a Shipping Option
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Shipping Option.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: The name of the Shipping Option
                  type: string
                amount:
                  description: The amount to charge for the Shipping Option.
                  type: integer
                admin_only:
                  description: 'If true, the option can be used for draft orders'
                  type: boolean
                metadata:
                  description: >-
                    An optional set of key-value pairs with additional
                    information.
                  type: object
                requirements:
                  description: >-
                    The requirements that must be satisfied for the Shipping
                    Option to be available.
                  type: array
                  items:
                    properties:
                      type:
                        description: The type of the requirement
                        type: string
                        enum:
                          - max_subtotal
                          - min_subtotal
                      amount:
                        description: The amount to compare with.
                        type: integer
      tags:
        - Shipping Option
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  shipping_option:
                    $ref: '#/components/schemas/shipping_option'
  /shipping-profiles:
    post:
      operationId: PostShippingProfiles
      summary: Create a Shipping Profile
      description: Creates a Shipping Profile
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              required:
                - name
              properties:
                name:
                  description: The name of the Shipping Profile
                  type: string
      tags:
        - Shipping Profile
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  shipping_profile:
                    $ref: '#/components/schemas/shipping_profile'
    get:
      operationId: GetShippingProfiles
      summary: List Shipping Profiles
      description: Retrieves a list of Shipping Profile.
      x-authenticated: true
      tags:
        - Shipping Profile
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  shipping_profiles:
                    type: array
                    items:
                      $ref: '#/components/schemas/shipping_profile'
  '/shipping-profiles/{id}':
    delete:
      operationId: DeleteShippingProfilesProfile
      summary: Delete a Shipping Profile
      description: Deletes a Shipping Profile.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Shipping Profile.
          schema:
            type: string
      tags:
        - Shipping Profile
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted Shipping Profile.
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
    get:
      operationId: GetShippingProfilesProfile
      summary: Retrieve a Shipping Profile
      description: Retrieves a Shipping Profile.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Shipping Profile.
          schema:
            type: string
      tags:
        - Shipping Profile
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  shipping_profile:
                    $ref: '#/components/schemas/shipping_profile'
    post:
      operationId: PostShippingProfilesProfile
      summary: Update a Shipping Profiles
      description: Updates a Shipping Profile
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Shipping Profile.
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: The name of the Shipping Profile
                  type: string
      tags:
        - Shipping Profile
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  shipping_profiles:
                    $ref: '#/components/schemas/shipping_profile'
  '/store/currencies/{code}':
    post:
      operationId: PostStoreCurrenciesCode
      summary: Add a Currency Code
      description: Adds a Currency Code to the available currencies.
      x-authenticated: true
      parameters:
        - in: path
          name: code
          required: true
          description: The 3 character ISO currency code.
          schema:
            type: string
      tags:
        - Store
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  store:
                    $ref: '#/components/schemas/store'
    delete:
      operationId: DeleteStoreCurrenciesCode
      summary: Remove a Currency Code
      description: Removes a Currency Code from the available currencies.
      x-authenticated: true
      parameters:
        - in: path
          name: code
          required: true
          description: The 3 character ISO currency code.
          schema:
            type: string
      tags:
        - Store
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  store:
                    $ref: '#/components/schemas/store'
  /store:
    get:
      operationId: GetStore
      summary: Retrieve Store details.
      description: Retrieves the Store details
      x-authenticated: true
      tags:
        - Store
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  store:
                    $ref: '#/components/schemas/store'
    post:
      operationId: PostStore
      summary: Update Store details.
      description: Updates the Store details
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: The name of the Store
                  type: string
                swap_link_template:
                  description: >-
                    A template for Swap links - use `{{cart_id}}` to insert the
                    Swap Cart id
                  type: string
                payment_link_template:
                  description: >-
                    A template for payment links links - use `{{cart_id}}` to
                    insert the Cart id
                  type: string
                invite_link_template:
                  description: >-
                    A template for invite links - use `{{invite_token}}` to
                    insert the invite token
                  type: string
                default_currency_code:
                  description: The default currency code for the Store.
                  type: string
      tags:
        - Store
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  store:
                    $ref: '#/components/schemas/store'
  /store/payment-providers:
    get:
      operationId: GetStorePaymentProviders
      summary: Retrieve configured Payment Providers
      description: Retrieves the configured Payment Providers
      x-authenticated: true
      tags:
        - Store
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  payment_providers:
                    type: array
                    items:
                      $ref: '#/components/schemas/store'
  /store/tax-providers:
    get:
      operationId: GetStoreTaxProviders
      summary: Retrieve configured Tax Providers
      description: Retrieves the configured Tax Providers
      x-authenticated: true
      tags:
        - Store
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  tax_providers:
                    type: array
                    items:
                      $ref: '#/components/schemas/store'
  '/swaps/{id}':
    get:
      operationId: GetSwapsSwap
      summary: Retrieve a Swap
      description: Retrieves a Swap.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Swap.
          schema:
            type: string
      tags:
        - Swap
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  swap:
                    $ref: '#/components/schemas/swap'
  /swaps:
    get:
      operationId: GetSwaps
      summary: List Swaps
      description: Retrieves a list of Swaps.
      x-authenticated: true
      tags:
        - Swap
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  swaps:
                    type: array
                    items:
                      $ref: '#/components/schemas/swap'
  '/tax-rates/:id/product-types/batch':
    post:
      operationId: PostTaxRatesTaxRateProductTypes
      summary: Add Tax Rate to Product Types
      description: Associates a Tax Rate with a list of Product Types
      x-authenticated: true
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  tax_rate:
                    type: array
                    items:
                      $ref: '#/components/schemas/tax_rate'
    delete:
      operationId: DeleteTaxRatesTaxRateProductTypes
      summary: Remove Tax Rate from Product Types
      description: Removes a Tax Rate from a list of Product Types
      x-authenticated: true
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  tax_rate:
                    type: array
                    items:
                      $ref: '#/components/schemas/tax_rate'
  '/tax-rates/:id/products/batch':
    post:
      operationId: PostTaxRatesTaxRateProducts
      summary: Add Tax Rate to Products
      description: Associates a Tax Rate with a list of Products
      x-authenticated: true
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  tax_rate:
                    type: array
                    items:
                      $ref: '#/components/schemas/tax_rate'
    delete:
      operationId: DeleteTaxRatesTaxRateProducts
      summary: Removes Tax Rate from Products
      description: Removes a Tax Rate from a list of Products
      x-authenticated: true
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  tax_rate:
                    type: array
                    items:
                      $ref: '#/components/schemas/tax_rate'
  '/tax-rates/:id/shipping-options/batch':
    post:
      operationId: PostTaxRatesTaxRateShippingOptions
      summary: Add Tax Rate to Product Types
      description: Associates a Tax Rate with a list of Product Types
      x-authenticated: true
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  tax_rate:
                    type: array
                    items:
                      $ref: '#/components/schemas/tax_rate'
    delete:
      operationId: DeleteTaxRatesTaxRateShippingOptions
      summary: Removes a Tax Rate from Product Types
      description: Removes a Tax Rate from a list of Product Types
      x-authenticated: true
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  tax_rate:
                    type: array
                    items:
                      $ref: '#/components/schemas/tax_rate'
  /tax-rates:
    post:
      operationId: PostTaxRates
      summary: Create a Tax Rate
      description: Creates a Tax Rate
      x-authenticated: true
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  tax_rate:
                    type: array
                    items:
                      $ref: '#/components/schemas/tax_rate'
    get:
      operationId: GetTaxRates
      summary: List Tax Rates
      description: Retrieves a list of TaxRates
      x-authenticated: true
      parameters:
        - in: query
          name: q
          description: Query used for searching orders.
          schema:
            type: string
        - in: query
          name: id
          description: Id of the order to search for.
          schema:
            type: string
        - in: query
          name: region_id
          description: to search for.
          schema:
            type: string
        - in: query
          name: code
          description: to search for.
          schema:
            type: string
        - in: query
          name: rate
          description: to search for.
          schema:
            type: string
        - in: query
          name: created_at
          description: >-
            Date comparison for when resulting orders was created, i.e. less
            than, greater than etc.
          schema:
            type: object
        - in: query
          name: updated_at
          description: >-
            Date comparison for when resulting orders was updated, i.e. less
            than, greater than etc.
          schema:
            type: object
        - in: query
          name: offset
          description: How many orders to skip in the result.
          schema:
            type: string
        - in: query
          name: limit
          description: Limit the number of orders returned.
          schema:
            type: string
        - in: query
          name: fields
          description: >-
            (Comma separated) Which fields should be included in each order of
            the result.
          schema:
            type: string
      tags:
        - Order
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  orders:
                    type: array
                    items:
                      $ref: '#/components/schemas/order'
  '/tax-rates/{id}':
    delete:
      operationId: DeleteTaxRatesTaxRate
      summary: Delete a Tax Rate
      description: Deletes a Tax Rate
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the Shipping Option.
          schema:
            type: string
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted Shipping Option.
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
  '/tax-rates/:id':
    get:
      operationId: GetTaxRatesTaxRate
      summary: Get Tax Rate
      description: Retrieves a TaxRate
      x-authenticated: true
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  tax_rate:
                    type: array
                    items:
                      $ref: '#/components/schemas/tax_rate'
    post:
      operationId: PostTaxRatesTaxRate
      summary: Update a Tax Rate
      description: Updates a Tax Rate
      x-authenticated: true
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  tax_rate:
                    type: array
                    items:
                      $ref: '#/components/schemas/tax_rate'
  /:
    post:
      operationId: PostUploads
      summary: Uploads an array of files
      description: >-
        Uploads an array of files to the specific fileservice that is installed
        in medusa.
      x-authenticated: true
      tags:
        - Uploads
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                files:
                  type: array
                  items:
                    type: string
                    format: binary
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  uploads:
                    type: array
                    items:
                      type: string
  /users:
    post:
      operationId: PostUsers
      summary: Create a User
      description: Creates a User
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              required:
                - email
                - password
              properties:
                email:
                  description: The Users email.
                  type: string
                first_name:
                  description: The name of the User.
                  type: string
                last_name:
                  description: The name of the User.
                  type: string
                role:
                  description: Userrole assigned to the user.
                  type: string
                password:
                  description: The Users password.
                  type: string
      tags:
        - Users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  user:
                    $ref: '#/components/schemas/user'
    get:
      operationId: GetUsers
      summary: Retrieve all users
      description: Retrieves all users.
      x-authenticated: true
      tags:
        - Users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  users:
                    type: array
                    items:
                      $ref: '#/components/schemas/user'
  '/users/{user_id}':
    delete:
      operationId: DeleteUsersUser
      summary: Delete a User
      description: Deletes a User
      x-authenticated: true
      parameters:
        - in: path
          name: user_id
          required: true
          description: The id of the User.
          schema:
            type: string
      tags:
        - Users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  id:
                    type: string
                    description: The id of the deleted Shipping Profile.
                  object:
                    type: string
                    description: The type of the object that was deleted.
                  deleted:
                    type: boolean
    post:
      operationId: PostUsersUser
      summary: Update a User
      description: Updates a User
      x-authenticated: true
      parameters:
        - in: path
          name: user_id
          required: true
          description: The id of the User.
          schema:
            type: string
      tags:
        - Users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  user:
                    $ref: '#/components/schemas/user'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - first_name
                - last_name
                - role
                - api_token
              properties:
                first_name:
                  type: string
                  description: The name of the User.
                last_name:
                  type: string
                  description: The name of the User.
                role:
                  type: string
                  description: 'The role of the User(admin, member, developer).'
                api_token:
                  type: string
                  description: The api_token of the User.
  '/users/{id}':
    get:
      operationId: GetUsersUser
      summary: Retrieve a User
      description: Retrieves a User.
      x-authenticated: true
      parameters:
        - in: path
          name: id
          required: true
          description: The id of the User.
          schema:
            type: string
      tags:
        - Users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  user:
                    $ref: '#/components/schemas/user'
  /users/password-token:
    post:
      operationId: PostUsersUserPassword
      summary: Set the password for a User.
      description: Sets the password for a User given the correct token.
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              required:
                - email
                - token
                - password
              properties:
                email:
                  description: The Users email.
                  type: string
                token:
                  description: The token generated from the 'password-token' endpoint.
                  type: string
                password:
                  description: The Users new password.
                  type: string
      tags:
        - Users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  user:
                    $ref: '#/components/schemas/user'
  /variants:
    get:
      operationId: GetVariants
      summary: List Product Variants.
      description: Retrieves a list of Product Variants
      x-authenticated: true
      parameters:
        - in: query
          name: q
          description: Query used for searching variants.
          schema:
            type: string
        - in: query
          name: offset
          description: How many variants to skip in the result.
          schema:
            type: string
        - in: query
          name: limit
          description: Limit the number of variants returned.
          schema:
            type: string
      tags:
        - Product Variant
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  variants:
                    type: array
                    items:
                      $ref: '#/components/schemas/product_variant'
components:
  schemas:
    address:
      title: Address
      description: An address.
      x-resourceId: address
      properties:
        id:
          type: string
        customer_id:
          type: string
        company:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        address_1:
          type: string
        address_2:
          type: string
        city:
          type: string
        country_code:
          type: string
        country:
          $ref: '#/components/schemas/country'
    cart:
      title: Cart
      description: Represents a user cart
      x-resourceId: cart
      properties:
        id:
          type: string
        email:
          type: string
        billing_address_id:
          type: string
        billing_address:
          $ref: '#/components/schemas/address'
        shipping_address_id:
          type: string
        shipping_address:
          $ref: '#/components/schemas/address'
        items:
          type: array
          items:
            $ref: '#/components/schemas/line_item'
        region_id:
          type: string
        region:
          $ref: '#/components/schemas/region'
        discounts:
          type: array
          items:
            $ref: '#/components/schemas/region'
        gift_cards:
          type: array
          items:
            $ref: '#/components/schemas/gift_card'
        customer_id:
          type: string
        customer:
          $ref: '#/components/schemas/customer'
        payment_session:
          $ref: '#/components/schemas/payment_session'
        payment_sessions:
          type: array
          items:
            $ref: '#/components/schemas/payment_session'
        payment:
          $ref: '#/components/schemas/payment'
        shipping_methods:
          type: array
          items:
            $ref: '#/components/schemas/shipping_method'
        type:
          type: string
          enum:
            - default
            - swap
            - payment_link
        completed_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
        metadata:
          type: object
        shipping_total:
          type: integer
        discount_total:
          type: integer
        tax_total:
          type: integer
        subtotal:
          type: integer
        refundable_amount:
          type: integer
        gift_card_total:
          type: integer
    claim_image:
      title: Claim Image
      description: Represents photo documentation of a claim.
      x-resourceId: claim_image
      properties:
        id:
          type: string
        claim_item_id:
          type: string
        url:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
        metadata:
          type: object
    claim_item:
      title: Claim Item
      description: >-
        Represents a claimed item along with information about the reasons for
        the claim.
      x-resourceId: claim_item
      properties:
        id:
          type: string
        images:
          type: array
          items:
            $ref: '#/components/schemas/claim_image'
        claim_order_id:
          type: string
        item_id:
          type: string
        item:
          description: The Line Item that the claim refers to
          $ref: '#/components/schemas/line_item'
        variant_id:
          type: string
        variant:
          description: The Product Variant that is claimed.
          $ref: '#/components/schemas/product_variant'
        reason:
          description: The reason for the claim
          type: string
          enum:
            - missing_item
            - wrong_item
            - production_failure
            - other
        note:
          description: 'An optional note about the claim, for additional information'
          type: string
        quantity:
          description: >-
            The quantity of the item that is being claimed; must be less than or
            equal to the amount purchased in the original order.
          type: integer
        tags:
          description: User defined tags for easy filtering and grouping.
          type: array
          items:
            $ref: '#/components/schemas/claim_tag'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
        metadata:
          type: object
    claim_order:
      title: Claim Order
      description: >-
        Claim Orders represent a group of faulty or missing items. Each claim
        order consists of a subset of items associated with an original order,
        and can contain additional information about fulfillments and returns.
      x-resourceId: claim_order
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - refund
            - replace
        payment_status:
          type: string
          enum:
            - na
            - not_refunded
            - refunded
        fulfillment_status:
          type: string
          enum:
            - not_fulfilled
            - partially_fulfilled
            - fulfilled
            - partially_shipped
            - shipped
            - partially_returned
            - returned
            - canceled
            - requires_action
        claim_items:
          description: The items that have been claimed
          type: array
          items:
            $ref: '#/components/schemas/claim_item'
        additional_items:
          description: >-
            Refers to the new items to be shipped when the claim order has the
            type `replace`
          type: array
          items:
            $ref: '#/components/schemas/line_item'
        order_id:
          description: The id of the order that the claim comes from.
          type: string
        return_order:
          description: Holds information about the return if the claim is to be returned
          $ref: '#/components/schemas/return'
        shipping_address_id:
          description: The id of the address that the new items should be shipped to
          type: string
        shipping_address:
          description: The address that the new items should be shipped to
          $ref: '#/components/schemas/address'
        shipping_methods:
          description: The shipping methods that the claim order will be shipped with.
          type: array
          items:
            $ref: '#/components/schemas/shipping_method'
        fulfillments:
          description: The fulfillments of the new items to be shipped
          type: array
          items:
            $ref: '#/components/schemas/fulfillment'
        refund_amount:
          description: The amount that will be refunded in conjunction with the claim
          type: integer
        canceled_at:
          description: The date with timezone at which the Swap was canceled.
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
        no_notification:
          description: >-
            Flag for describing whether or not notifications related to this
            should be send.
          type: boolean
        metadata:
          type: object
    claim_tag:
      title: Claim Tag
      description: >-
        Claim Tags are user defined tags that can be assigned to claim items for
        easy filtering and grouping.
      x-resourceId: claim_tag
      properties:
        id:
          description: The id of the claim tag. Will be prefixed by `ctag_`.
          type: string
        value:
          description: The value that the claim tag holds
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        update_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    country:
      title: Country
      description: Country details
      x-resourceId: country
      properties:
        id:
          description: The database id of the country
          type: integer
        iso_2:
          description: The 2 character ISO code for the country.
          type: string
        iso_3:
          description: The 3 character ISO code for the country.
          type: string
        num_code:
          description: The numerical ISO code for the country.
          type: string
        name:
          description: The normalized country name; in upper case.
          type: string
        display_name:
          description: The country name appropriate for display.
          type: string
    currency:
      title: Currency
      description: Currency
      x-resourceId: currency
      properties:
        code:
          description: The 3 character ISO code for the currency.
          type: string
        symbol:
          description: The symbol used to indicate the currency.
          type: string
        symbol_native:
          description: The native symbol used to indicate the currency.
          type: string
        name:
          description: The written name of the currency
          type: string
    custom_shipping_option:
      title: Custom Shipping Option
      description: >-
        Custom Shipping Options are 'overriden' Shipping Options. Store managers
        can attach a Custom Shipping Option to a cart in order to set a custom
        price for a particular Shipping Option
      x-resourceId: custom_shipping_option
      properties:
        id:
          description: >-
            The id of the Custom Shipping Option. This value will be prefixed
            with `cso_`.
          type: string
        price:
          description: >-
            The custom price set that will override the shipping option's
            original price
          type: integer
        shipping_option_id:
          description: >-
            The id of the Shipping Option that the custom shipping option
            overrides
          anyOf:
            - $ref: '#/components/schemas/shipping_option'
        cart_id:
          description: The id of the Cart that the custom shipping option is attached to
          anyOf:
            - $ref: '#/components/schemas/cart'
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    customer_group:
      title: Customer Group
      description: Represents a customer group
      x-resourceId: customer_group
      properties:
        id:
          type: string
        name:
          type: string
        customers:
          type: array
          items:
            $ref: '#/components/schemas/customer'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
        metadata:
          type: object
    customer:
      title: Customer
      description: Represents a customer
      x-resourceId: customer
      properties:
        id:
          type: string
        email:
          type: string
        billing_address_id:
          type: string
        billing_address:
          description: The Customer's billing address.
          anyOf:
            - $ref: '#/components/schemas/address'
        shipping_addresses:
          type: array
          items:
            $ref: '#/components/schemas/address'
        first_name:
          type: string
        last_name:
          type: string
        phone:
          type: string
        has_account:
          type: boolean
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
        metadata:
          type: object
    discount_rule:
      title: Discount Rule
      description: >-
        Holds the rules that governs how a Discount is calculated when applied
        to a Cart.
      x-resourceId: discount_rule
      properties:
        id:
          description: The id of the Discount Rule. Will be prefixed by `dru_`.
          type: string
        type:
          description: >-
            The type of the Discount, can be `fixed` for discounts that reduce
            the price by a fixed amount, `percentage` for percentage reductions
            or `free_shipping` for shipping vouchers.
          type: string
          enum:
            - fixed
            - percentage
            - free_shipping
        description:
          description: A short description of the discount
          type: string
        value:
          description: >-
            The value that the discount represents; this will depend on the type
            of the discount
          type: integer
        allocation:
          description: The scope that the discount should apply to.
          type: string
          enum:
            - total
            - item
        valid_for:
          description: A set of Products that the discount can be used for.
          type: array
          items:
            $ref: '#/components/schemas/product'
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        update_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    discount:
      title: Discount
      description: >-
        Represents a discount that can be applied to a cart for promotional
        purposes.
      x-resourceId: discount
      properties:
        id:
          description: The id of the Discount. Will be prefixed by `disc_`.
          type: string
        code:
          description: >-
            A unique code for the discount - this will be used by the customer
            to apply the discount
          type: string
        is_dynamic:
          description: >-
            A flag to indicate if multiple instances of the discount can be
            generated. I.e. for newsletter discounts
          type: boolean
        rule:
          description: The Discount Rule that governs the behaviour of the Discount
          anyOf:
            - $ref: '#/components/schemas/discount_rule'
        is_disabled:
          description: >-
            Whether the Discount has been disabled. Disabled discounts cannot be
            applied to carts
          type: boolean
        parent_discount_id:
          description: >-
            The Discount that the discount was created from. This will always be
            a dynamic discount
          type: string
        starts_at:
          description: The time at which the discount can be used.
          type: string
          format: date-time
        ends_at:
          description: The time at which the discount can no longer be used.
          type: string
          format: date-time
        regions:
          description: The Regions in which the Discount can be used
          type: array
          items:
            $ref: '#/components/schemas/region'
        usage_limit:
          description: The maximum number of times that a discount can be used.
          type: integer
        usage_count:
          description: The number of times a discount has been used.
          type: integer
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    draft-order:
      title: DraftOrder
      description: Represents a draft order
      x-resourceId: draft-order
      properties:
        id:
          type: string
        status:
          type: string
          enum:
            - open
            - completed
        display_id:
          type: string
        cart_id:
          type: string
        cart:
          anyOf:
            - $ref: '#/components/schemas/cart'
        order_id:
          type: string
        order:
          anyOf:
            - $ref: '#/components/schemas/order'
        canceled_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        update_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
        no_notification_order:
          type: boolean
        metadata:
          type: object
        idempotency_key:
          type: string
    fulfillment_item:
      title: Fulfillment Item
      description: >-
        Correlates a Line Item with a Fulfillment, keeping track of the quantity
        of the Line Item.
      x-resourceId: fulfillment_item
      properties:
        fulfillment_id:
          description: The id of the Fulfillment that the Fulfillment Item belongs to.
          type: string
        item_id:
          description: The id of the Line Item that the Fulfillment Item references.
          type: string
        item:
          description: The Line Item that the Fulfillment Item references.
          anyOf:
            - $ref: '#/components/schemas/line_item'
        quantity:
          description: The quantity of the Line Item that is included in the Fulfillment.
          type: integer
    fulfillment_provider:
      title: Fulfillment Provider
      description: >-
        Represents a fulfillment provider plugin and holds its installation
        status.
      x-resourceId: fulfillment_provider
      properties:
        id:
          description: The id of the fulfillment provider as given by the plugin.
          type: string
        is_installed:
          description: >-
            Whether the plugin is installed in the current version. Plugins that
            are no longer installed are not deleted by will have this field set
            to `false`.
          type: boolean
    fulfillment:
      title: Fulfillment
      description: >-
        Fulfillments are created once store operators can prepare the purchased
        goods. Fulfillments will eventually be shipped and hold information
        about how to track shipments. Fulfillments are created through a
        provider, which is typically an external shipping aggregator, shipping
        partner og 3PL, most plugins will have asynchronous communications with
        these providers through webhooks in order to automatically update and
        synchronize the state of Fulfillments.
      x-resourceId: fulfillment
      properties:
        id:
          description: The id of the Fulfillment. This value will be prefixed by `ful_`.
          type: string
        claim_order_id:
          description: The id of the Claim that the Fulfillment belongs to.
          type: string
        swap_id:
          description: The id of the Swap that the Fulfillment belongs to.
          type: string
        order_id:
          description: The id of the Order that the Fulfillment belongs to.
          type: string
        provider_id:
          description: >-
            The id of the Fulfillment Provider responsible for handling the
            fulfillment
          type: string
        items:
          description: >-
            The Fulfillment Items in the Fulfillment - these hold information
            about how many of each Line Item has been fulfilled.
          type: array
          items:
            $ref: '#/components/schemas/fulfillment_item'
        tracking_links:
          description: >-
            The Tracking Links that can be used to track the status of the
            Fulfillment, these will usually be provided by the Fulfillment
            Provider.
          type: array
          items:
            $ref: '#/components/schemas/tracking_link'
        tracking_numbers:
          deprecated: true
          description: >-
            The tracking numbers that can be used to track the status of the
            fulfillment.
          type: array
          items:
            type: string
        shipped_at:
          description: The date with timezone at which the Fulfillment was shipped.
          type: string
          format: date-time
        no_notification:
          description: >-
            Flag for describing whether or not notifications related to this
            should be send.
          type: boolean
        canceled_at:
          description: The date with timezone at which the Fulfillment was canceled.
          type: string
          format: date-time
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    gift_card_transaction:
      title: Gift Card Transaction
      description: >-
        Gift Card Transactions are created once a Customer uses a Gift Card to
        pay for their Order
      x-resourceId: gift_card_transaction
      properties:
        id:
          description: >-
            The id of the Gift Card Transaction. This value will be prefixed by
            `gct_`.
          type: string
        gift_card_id:
          description: The id of the Gift Card that was used in the transaction.
          type: string
        gift_card:
          description: The Gift Card that was used in the transaction.
          anyOf:
            - $ref: '#/components/schemas/gift_card'
        order_id:
          description: The id of the Order that the Gift Card was used to pay for.
          type: string
        amount:
          description: The amount that was used from the Gift Card.
          type: integer
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
    gift_card:
      title: Gift Card
      description: >-
        Gift Cards are redeemable and represent a value that can be used towards
        the payment of an Order.
      x-resourceId: gift_card
      properties:
        id:
          description: The id of the Gift Card. This value will be prefixed by `gift_`.
          type: string
        code:
          description: >-
            The unique code that identifies the Gift Card. This is used by the
            Customer to redeem the value of the Gift Card.
          type: string
        value:
          description: The value that the Gift Card represents.
          type: integer
        balance:
          description: The remaining value on the Gift Card.
          type: integer
        region_id:
          description: The id of the Region in which the Gift Card is available.
          type: string
        region:
          description: The Region in which the Gift Card is available.
          anyOf:
            - $ref: '#/components/schemas/region'
        order_id:
          description: The id of the Order that the Gift Card was purchased in.
          type: string
        is_disabled:
          description: >-
            Whether the Gift Card has been disabled. Disabled Gift Cards cannot
            be applied to carts.
          type: boolean
        ends_at:
          description: The time at which the Gift Card can no longer be used.
          type: string
          format: date-time
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    image:
      title: Image
      description: Images holds a reference to a URL at which the image file can be found.
      x-resourceId: image
      properties:
        id:
          description: The id of the Image. This value will be prefixed by `img_`.
          type: string
        url:
          description: The URL at which the image file can be found.
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        update_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    invite:
      title: Invite
      description: Represents an invite
      x-resourceId: invite
      properties:
        id:
          type: string
        user_email:
          type: string
        role:
          type: string
          enum:
            - admin
            - member
            - developer
        accepted:
          type: boolean
        token:
          type: string
        expores_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
        metadata:
          type: object
    line_item:
      title: Line Item
      description: >-
        Line Items represent purchasable units that can be added to a Cart for
        checkout. When Line Items are purchased they will get copied to the
        resulting order and can eventually be referenced in Fulfillments and
        Returns. Line Items may also be created when processing Swaps and
        Claims.
      x-resourceId: line_item
      properties:
        id:
          description: The id of the Line Item. This value will be prefixed by `item_`.
          type: string
        cart_id:
          description: The id of the Cart that the Line Item belongs to.
          type: string
        order_id:
          description: The id of the Order that the Line Item belongs to.
          type: string
        swap_id:
          description: The id of the Swap that the Line Item belongs to.
          type: string
        claim_order_id:
          description: The id of the Claim that the Line Item belongs to.
          type: string
        title:
          description: >-
            The title of the Line Item, this should be easily identifiable by
            the Customer.
          type: string
        description:
          description: A more detailed description of the contents of the Line Item.
          type: string
        thumbnail:
          description: A URL string to a small image of the contents of the Line Item.
          type: string
        is_giftcard:
          description: Flag to indicate if the Line Item is a Gift Card.
          type: boolean
        should_merge:
          description: >-
            Flag to indicate if new Line Items with the same variant should be
            merged or added as an additional Line Item.
          type: boolean
        allow_discounts:
          description: >-
            Flag to indicate if the Line Item should be included when doing
            discount calculations.
          type: boolean
        unit_price:
          description: >-
            The price of one unit of the content in the Line Item. This should
            be in the currency defined by the Cart/Order/Swap/Claim that the
            Line Item belongs to.
          type: boolean
        variant_id:
          description: The id of the Product Variant contained in the Line Item.
          type: string
        variant:
          description: The Product Variant contained in the Line Item.
          anyOf:
            - $ref: '#/components/schemas/product_variant'
        quantity:
          description: The quantity of the content in the Line Item.
          type: integer
        fulfilled_quantity:
          description: The quantity of the Line Item that has been fulfilled.
          type: integer
        returned_quantity:
          description: The quantity of the Line Item that has been returned.
          type: integer
        shipped_quantity:
          description: The quantity of the Line Item that has been shipped.
          type: integer
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
        refundable:
          description: >-
            The amount that can be refunded from the given Line Item. Takes
            taxes and discounts into consideration.
          type: integer
    money_amount:
      title: Money Amount
      description: >-
        Money Amounts represents an amount that a given Product Variant can be
        purcased for. Each Money Amount either has a Currency or Region
        associated with it to indicate the pricing in a given Currency or, for
        fully region-based pricing, the given price in a specific Region. If
        region-based pricing is used the amount will be in the currency defined
        for the Reigon.
      x-resourceId: money_amount
      properties:
        id:
          description: The id of the Money Amount. This value will be prefixed by `ma_`.
          type: string
        currency_code:
          description: The 3 character currency code that the Money Amount is given in.
          type: string
        amount:
          description: >-
            The amount in the smallest currecny unit (e.g. cents 100 cents to
            charge $1) that the Product Variant will cost.
          type: integer
        sale_amount:
          description: >-
            An optional sale amount that the Product Variant will be available
            for when defined.
          type: integer
        variant_id:
          description: The id of the Product Variant that the Money Amount belongs to.
          type: string
        region_id:
          description: The id of the Region that the Money Amount is defined for.
          type: string
        region:
          description: The Region that the Money Amount is defined for.
          anyOf:
            - $ref: '#/components/schemas/region'
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
    note:
      title: Note
      description: >-
        Notes are elements which we can use in association with different
        resources to allow users to describe additional information in relation
        to these.
      x-resourceId: note
      properties:
        id:
          description: The id of the Note. This value will be prefixed by `note_`.
          type: string
        resource_type:
          description: The type of resource that the Note refers to.
          type: string
        resource_id:
          description: The id of the resource that the Note refers to.
          type: string
        value:
          description: The contents of the note.
          type: string
        author:
          description: The author of the note.
          anyOf:
            - $ref: '#/components/schemas/user'
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    notification_provider:
      title: Notification Provider
      description: >-
        Represents a notification provider plugin and holds its installation
        status.
      x-resourceId: notification_provider
      properties:
        id:
          description: The id of the notification provider as given by the plugin.
          type: string
        is_installed:
          description: >-
            Whether the plugin is installed in the current version. Plugins that
            are no longer installed are not deleted by will have this field set
            to `false`.
          type: boolean
    notification:
      title: Notification
      description: >-
        Notifications a communications sent via Notification Providers as a
        reaction to internal events such as `order.placed`. Notifications can be
        used to show a chronological timeline for communications sent to a
        Customer regarding an Order, and enables resends.
      x-resourceId: notification
      properties:
        id:
          description: The id of the Notification. This value will be prefixed by `noti_`.
          type: string
        event_name:
          description: The name of the event that the notification was sent for.
          type: string
        resource_type:
          description: The type of resource that the Notification refers to.
          type: string
        resource_id:
          description: The id of the resource that the Notification refers to.
          type: string
        customer_id:
          description: The id of the Customer that the Notification was sent to.
          type: string
        customer:
          description: The Customer that the Notification was sent to.
          anyOf:
            - $ref: '#/components/schemas/customer'
        to:
          description: >-
            The address that the Notification was sent to. This will usually be
            an email address, but represent other addresses such as a chat bot
            user id
          type: string
        data:
          description: >-
            The data that the Notification was sent with. This contains all the
            data necessary for the Notification Provider to initiate a resend.
          type: object
        parent_id:
          description: The id of the Notification that was originally sent.
          type: string
        resends:
          description: >-
            The resends that have been completed after the original
            Notification.
          type: array
          items:
            $ref: '#/components/schemas/notification_resend'
        provider_id:
          description: The id of the Notification Provider that handles the Notification.
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
    notification_resend:
      title: Notification Resend
      description: A resend of a Notification.
      x-resourceId: notification_resend
      properties:
        id:
          description: The id of the Notification. This value will be prefixed by `noti_`.
          type: string
        event_name:
          description: The name of the event that the notification was sent for.
          type: string
        resource_type:
          description: The type of resource that the Notification refers to.
          type: string
        resource_id:
          description: The id of the resource that the Notification refers to.
          type: string
        to:
          description: >-
            The address that the Notification was sent to. This will usually be
            an email address, but represent other addresses such as a chat bot
            user id
          type: string
        data:
          description: >-
            The data that the Notification was sent with. This contains all the
            data necessary for the Notification Provider to initiate a resend.
          type: object
        parent_id:
          description: The id of the Notification that was originally sent.
          type: string
        provider_id:
          description: The id of the Notification Provider that handles the Notification.
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
    OAuth:
      title: OAuth
      description: Represent an OAuth app
      x-resourceId: OAuth
      properties:
        id:
          type: string
        display_name:
          type: string
        application_name:
          type: string
        install_url:
          type: string
        uninstall_url:
          type: integer
        data:
          type: object
    order:
      title: Order
      description: Represents an order
      x-resourceId: order
      properties:
        id:
          type: string
        status:
          type: string
          enum:
            - pending
            - completed
            - archived
            - canceled
            - requires_action
        fulfillment_status:
          type: string
          enum:
            - not_fulfilled
            - partially_fulfilled
            - fulfilled
            - partially_shipped
            - shipped
            - partially_returned
            - returned
            - canceled
            - requires_action
        payment_status:
          type: string
          enum:
            - not_paid
            - awaiting
            - captured
            - partially_refunded
            - refuneded
            - canceled
            - requires_action
        display_id:
          type: integer
        cart_id:
          type: string
        currency_code:
          type: string
        tax_rate:
          type: number
        discounts:
          type: array
          items:
            $ref: '#/components/schemas/discount'
        email:
          type: string
        billing_address_id:
          type: string
        billing_address:
          anyOf:
            - $ref: '#/components/schemas/address'
        shipping_address_id:
          type: string
        shipping_address:
          anyOf:
            - $ref: '#/components/schemas/address'
        items:
          type: array
          items:
            $ref: '#/components/schemas/line_item'
        region_id:
          type: string
        region:
          anyOf:
            - $ref: '#/components/schemas/region'
        gift_cards:
          type: array
          items:
            $ref: '#/components/schemas/gift_card'
        customer_id:
          type: string
        customer:
          anyOf:
            - $ref: '#/components/schemas/customer'
        payment_session:
          anyOf:
            - $ref: '#/components/schemas/payment_session'
        payment_sessions:
          type: array
          items:
            $ref: '#/components/schemas/payment_session'
        payments:
          type: array
          items:
            $ref: '#/components/schemas/payment'
        shipping_methods:
          type: array
          items:
            $ref: '#/components/schemas/shipping_method'
        fulfillments:
          type: array
          items:
            $ref: '#/components/schemas/fulfillment'
        returns:
          type: array
          items:
            $ref: '#/components/schemas/return'
        claims:
          type: array
          items:
            $ref: '#/components/schemas/claim_order'
        refunds:
          type: array
          items:
            $ref: '#/components/schemas/refund'
        swaps:
          type: array
          items:
            $ref: '#/components/schemas/refund'
        gift_card_transactions:
          type: array
          items:
            $ref: '#/components/schemas/gift_card_transaction'
        canceled_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        update_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
        metadata:
          type: object
        shipping_total:
          type: integer
        discount_total:
          type: integer
        tax_total:
          type: integer
        subtotal:
          type: integer
        refundable_amount:
          type: integer
        gift_card_total:
          type: integer
        paid_total:
          type: integer
        no_notification:
          description: >-
            Flag for describing whether or not notifications related to this
            should be send.
          type: boolean
    payment_provider:
      title: Payment Provider
      description: Represents a Payment Provider plugin and holds its installation status.
      x-resourceId: payment_provider
      properties:
        id:
          description: The id of the payment provider as given by the plugin.
          type: string
        is_installed:
          description: >-
            Whether the plugin is installed in the current version. Plugins that
            are no longer installed are not deleted by will have this field set
            to `false`.
          type: boolean
    payment_session:
      title: Payment Session
      description: >-
        Payment Sessions are created when a Customer initilizes the checkout
        flow, and can be used to hold the state of a payment flow. Each Payment
        Session is controlled by a Payment Provider, who is responsible for the
        communication with external payment services. Authorized Payment
        Sessions will eventually get promoted to Payments to indicate that they
        are authorized for capture/refunds/etc.
      x-resourceId: payment_session
      properties:
        id:
          description: >-
            The id of the Payment Session. This value will be prefixed with
            `ps_`.
          type: string
        cart_id:
          description: The id of the Cart that the Payment Session is created for.
          type: string
        provider_id:
          description: >-
            The id of the Payment Provider that is responsible for the Payment
            Session
          type: string
        is_selected:
          description: >-
            A flag to indicate if the Payment Session has been selected as the
            method that will be used to complete the purchase.
          type: boolean
        status:
          description: >-
            Indicates the status of the Payment Session. Will default to
            `pending`, and will eventually become `authorized`. Payment Sessions
            may have the status of `requires_more` to indicate that further
            actions are to be completed by the Customer.
          type: string
          enum:
            - authorized
            - pending
            - requires_more
            - error
            - canceled
        data:
          description: >-
            The data required for the Payment Provider to identify, modify and
            process the Payment Session. Typically this will be an object that
            holds an id to the external payment session, but can be an empty
            object if the Payment Provider doesn't hold any state.
          type: object
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
    payment:
      title: Payment
      description: >-
        Payments represent an amount authorized with a given payment method,
        Payments can be captured, canceled or refunded.
      x-resourceId: payment
      properties:
        id:
          description: The id of the Payment. This value will be prefixed with `pay_`.
          type: string
        swap_id:
          description: The id of the Swap that the Payment is used for.
          type: string
        order_id:
          description: The id of the Order that the Payment is used for.
          type: string
        cart_id:
          description: The id of the Cart that the Payment Session is created for.
          type: string
        amount:
          description: The amount that the Payment has been authorized for.
          type: integer
        currency_code:
          description: The 3 character ISO currency code that the Payment is completed in.
          type: string
        amount_refunded:
          description: >-
            The amount of the original Payment amount that has been refunded
            back to the Customer.
          type: integer
        provider_id:
          description: The id of the Payment Provider that is responsible for the Payment
          type: string
        data:
          description: >-
            The data required for the Payment Provider to identify, modify and
            process the Payment. Typically this will be an object that holds an
            id to the external payment session, but can be an empty object if
            the Payment Provider doesn't hold any state.
          type: object
        captured_at:
          description: The date with timezone at which the Payment was captured.
          type: string
          format: date-time
        canceled_at:
          description: The date with timezone at which the Payment was canceled.
          type: string
          format: date-time
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    product_collection:
      title: Product Collection
      description: Product Collections represents a group of Products that are related.
      x-resourceId: product_collection
      properties:
        id:
          description: >-
            The id of the Product Collection. This value will be prefixed with
            `pcol_`.
          type: string
        title:
          description: The title that the Product Collection is identified by.
          type: string
        handle:
          description: >-
            A unique string that identifies the Product Collection - can for
            example be used in slug structures.
          type: string
        products:
          description: The Products contained in the Product Collection.
          type: array
          items:
            $ref: '#/components/schemas/product'
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    product_option_value:
      title: Product Option Value
      description: >-
        A value given to a Product Variant's option set. Product Variant have a
        Product Option Value for each of the Product Options defined on the
        Product.
      x-resourceId: product_option_value
      properties:
        id:
          description: >-
            The id of the Product Option Value. This value will be prefixed with
            `optval_`.
          type: string
        value:
          description: >-
            The value that the Product Variant has defined for the specific
            Product Option (e.g. if the Product Option is "Size" this value
            could be "Small", "Medium" or "Large").
          type: string
        option_id:
          description: >-
            The id of the Product Option that the Product Option Value is
            defined for.
          type: string
        variant_id:
          description: >-
            The id of the Product Variant that the Product Option Value is
            defined for.
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    product_option:
      title: Product Option
      description: >-
        Product Options define properties that may vary between different
        variants of a Product. Common Product Options are "Size" and "Color",
        but Medusa doesn't limit what Product Options that can be defined.
      x-resourceId: product_option
      properties:
        id:
          description: >-
            The id of the Product Option. This value will be prefixed with
            `opt_`.
          type: string
        title:
          description: The title that the Product Option is defined by (e.g. "Size").
          type: string
        values:
          description: The Product Option Values that are defined for the Product Option.
          type: array
          items:
            $ref: '#/components/schemas/product_option_value'
        product_id:
          description: The id of the Product that the Product Option is defined for.
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    product_tag:
      title: Product Tag
      description: Product Tags can be added to Products for easy filtering and grouping.
      x-resourceId: product_tag
      properties:
        id:
          description: The id of the Product Tag. This value will be prefixed with `ptag_`.
          type: string
        value:
          description: The value that the Product Tag represents (e.g. "Pants").
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    product_tax_rate:
      title: Product Tax Rate
      description: >-
        Associates a tax rate with a product to indicate that the product is
        taxed in a certain way
      x-resourceId: product_tax_rate
      properties:
        product_id:
          description: The id of the Product
          type: string
        rate_id:
          description: The id of the Tax Rate
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    product_type_tax_rate:
      title: Product Type Tax Rate
      description: >-
        Associates a tax rate with a product type to indicate that the product
        type is taxed in a certain way
      x-resourceId: product_type_tax_rate
      properties:
        product_type_id:
          description: The id of the Product type
          type: string
        rate_id:
          description: The id of the Tax Rate
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    product_type:
      title: Product Type
      description: >-
        Product Type can be added to Products for filtering and reporting
        purposes.
      x-resourceId: product_type
      properties:
        id:
          description: >-
            The id of the Product Type. This value will be prefixed with
            `ptyp_`.
          type: string
        value:
          description: The value that the Product Type represents (e.g. "Clothing").
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    product_variant:
      title: Product Variant
      description: >-
        Product Variants represent a Product with a specific set of Product
        Option configurations. The maximum number of Product Variants that a
        Product can have is given by the number of available Product Option
        combinations.
      x-resourceId: product_variant
      properties:
        id:
          description: >-
            The id of the Product Variant. This value will be prefixed with
            `variant_`.
          type: string
        title:
          description: >-
            A title that can be displayed for easy identification of the Product
            Variant.
          type: string
        product_id:
          description: The id of the Product that the Product Variant belongs to.
          type: string
        prices:
          description: >-
            The Money Amounts defined for the Product Variant. Each Money Amount
            represents a price in a given currency or a price in a specific
            Region.
          type: array
          items:
            $ref: '#/components/schemas/money_amount'
        sku:
          description: >-
            The unique stock keeping unit used to identify the Product Variant.
            This will usually be a unqiue identifer for the item that is to be
            shipped, and can be referenced across multiple systems.
          type: string
        barcode:
          description: >-
            A generic field for a GTIN number that can be used to identify the
            Product Variant.
          type: string
        ean:
          description: >-
            An EAN barcode number that can be used to identify the Product
            Variant.
          type: string
        upc:
          description: >-
            A UPC barcode number that can be used to identify the Product
            Variant.
          type: string
        inventory_quantity:
          description: The current quantity of the item that is stocked.
          type: integer
        allow_backorder:
          description: >-
            Whether the Product Variant should be purchasable when
            `inventory_quantity` is 0.
          type: boolean
        manage_inventory:
          description: Whether Medusa should manage inventory for the Product Variant.
          type: boolean
        hs_code:
          description: >-
            The Harmonized System code of the Product Variant. May be used by
            Fulfillment Providers to pass customs information to shipping
            carriers.
          type: string
        origin_country:
          description: >-
            The country in which the Product Variant was produced. May be used
            by Fulfillment Providers to pass customs information to shipping
            carriers.
          type: string
        mid_code:
          description: >-
            The Manufacturers Identification code that identifies the
            manufacturer of the Product Variant. May be used by Fulfillment
            Providers to pass customs information to shipping carriers.
          type: string
        material:
          description: >-
            The material and composition that the Product Variant is made of,
            May be used by Fulfillment Providers to pass customs information to
            shipping carriers.
          type: string
        weight:
          description: >-
            The weight of the Product Variant. May be used in shipping rate
            calculations.
          type: string
        height:
          description: >-
            The height of the Product Variant. May be used in shipping rate
            calculations.
          type: string
        width:
          description: >-
            The width of the Product Variant. May be used in shipping rate
            calculations.
          type: string
        length:
          description: >-
            The length of the Product Variant. May be used in shipping rate
            calculations.
          type: string
        options:
          description: The Product Option Values specified for the Product Variant.
          type: array
          items:
            $ref: '#/components/schemas/product_option_value'
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    product:
      title: Product
      description: >-
        Products are a grouping of Product Variants that have common properties
        such as images and descriptions. Products can have multiple options
        which define the properties that Product Variants differ by.
      x-resourceId: product
      properties:
        id:
          description: The id of the Product. This value will be prefixed with `prod_`.
          type: string
        title:
          description: >-
            A title that can be displayed for easy identification of the
            Product.
          type: string
        subtitle:
          description: >-
            An optional subtitle that can be used to further specify the
            Product.
          type: string
        description:
          description: A short description of the Product.
          type: string
        handle:
          description: A unique identifier for the Product (e.g. for slug structure).
          type: string
        is_giftcard:
          description: >-
            Whether the Product represents a Gift Card. Products that represent
            Gift Cards will automatically generate a redeemable Gift Card code
            once they are purchased.
          type: boolean
        discountable:
          description: >-
            Whether the Product can be discounted. Discounts will not apply to
            Line Items of this Product when this flag is set to `false`.
          type: boolean
        images:
          description: Images of the Product
          type: array
          items:
            $ref: '#/components/schemas/image'
        thumbnail:
          description: A URL to an image file that can be used to identify the Product.
          type: string
        options:
          description: >-
            The Product Options that are defined for the Product. Product
            Variants of the Product will have a unique combination of Product
            Option Values.
          type: array
          items:
            $ref: '#/components/schemas/product_option'
        variants:
          description: >-
            The Product Variants that belong to the Product. Each will have a
            unique combination of Product Option Values.
          type: array
          items:
            $ref: '#/components/schemas/product_variant'
        profile_id:
          description: >-
            The id of the Shipping Profile that the Product belongs to. Shipping
            Profiles have a set of defined Shipping Options that can be used to
            Fulfill a given set of Products.
          type: string
        hs_code:
          description: >-
            The Harmonized System code of the Product Variant. May be used by
            Fulfillment Providers to pass customs information to shipping
            carriers.
          type: string
        origin_country:
          description: >-
            The country in which the Product Variant was produced. May be used
            by Fulfillment Providers to pass customs information to shipping
            carriers.
          type: string
        mid_code:
          description: >-
            The Manufacturers Identification code that identifies the
            manufacturer of the Product Variant. May be used by Fulfillment
            Providers to pass customs information to shipping carriers.
          type: string
        material:
          description: >-
            The material and composition that the Product Variant is made of,
            May be used by Fulfillment Providers to pass customs information to
            shipping carriers.
          type: string
        weight:
          description: >-
            The weight of the Product Variant. May be used in shipping rate
            calculations.
          type: string
        height:
          description: >-
            The height of the Product Variant. May be used in shipping rate
            calculations.
          type: string
        width:
          description: >-
            The width of the Product Variant. May be used in shipping rate
            calculations.
          type: string
        length:
          description: >-
            The length of the Product Variant. May be used in shipping rate
            calculations.
          type: string
        type:
          description: The Product Type of the Product (e.g. "Clothing")
          anyOf:
            - $ref: '#/components/schemas/product_type'
        collection:
          description: The Product Collection that the Product belongs to (e.g. "SS20")
          anyOf:
            - $ref: '#/components/schemas/product_collection'
        tags:
          description: The Product Tags assigned to the Product.
          type: array
          items:
            $ref: '#/components/schemas/product_tag'
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    refund:
      title: Refund
      description: >-
        Refund represent an amount of money transfered back to the Customer for
        a given reason. Refunds may occur in relation to Returns, Swaps and
        Claims, but can also be initiated by a store operator.
      x-resourceId: refund
      properties:
        id:
          description: The id of the Refund. This value will be prefixed with `ref_`.
          type: string
        order_id:
          description: The id of the Order that the Refund is related to.
          type: string
        amount:
          description: The amount that has be refunded to the Customer.
          type: integer
        note:
          description: An optional note explaining why the amount was refunded.
          type: string
        reason:
          description: >-
            The reason given for the Refund, will automatically be set when
            processed as part of a Swap, Claim or Return.
          type: string
          enum:
            - discount
            - return
            - swap
            - claim
            - other
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    region:
      title: Region
      description: >-
        Regions hold settings for how Customers in a given geographical location
        shop. The is, for example, where currencies and tax rates are defined. A
        Region can consist of multiple countries to accomodate common shopping
        settings across countries.
      x-resourceId: region
      properties:
        id:
          description: The id of the Region. This value will be prefixed with `reg_`.
          type: string
        name:
          description: >-
            The name of the region as displayed to the customer. If the Region
            only has one country it is recommended to write the country name.
          type: string
        currency_code:
          description: >-
            The 3 character ISO currency code that Customers will shop in in the
            Region.
          type: string
        tax_rate:
          description: The tax rate that should be charged on purchases in the Region.
          type: number
        tax_code:
          description: >-
            The tax code used on purchases in the Region. This may be used by
            other systems for accounting purposes.
          type: string
        countries:
          description: The countries that are included in the Region.
          type: array
          items:
            $ref: '#/components/schemas/country'
        payment_providers:
          description: >-
            The Payment Providers that can be used to process Payments in the
            Region.
          type: array
          items:
            $ref: '#/components/schemas/payment_provider'
        fulfillment_providers:
          description: >-
            The Fulfillment Providers that can be used to fulfill orders in the
            Region.
          type: array
          items:
            $ref: '#/components/schemas/fulfillment_provider'
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    return_item:
      title: Return Item
      description: >-
        Correlates a Line Item with a Return, keeping track of the quantity of
        the Line Item that will be returned.
      x-resourceId: return_item
      properties:
        return_id:
          description: The id of the Return that the Return Item belongs to.
          type: string
        item_id:
          description: The id of the Line Item that the Return Item references.
          type: string
        item:
          description: The Line Item that the Return Item references.
          anyOf:
            - $ref: '#/components/schemas/line_item'
        quantity:
          description: The quantity of the Line Item that is included in the Return.
          type: integer
        is_requested:
          description: >-
            Whether the Return Item was requested initially or received
            unexpectedly in the warehouse.
          type: boolean
        requested_quantity:
          description: The quantity that was originally requested to be returned.
          type: integer
        recieved_quantity:
          description: The quantity that was received in the warehouse.
          type: integer
        reason:
          description: The reason for returning the item.
          anyOf:
            - $ref: '#/components/schemas/return_reason'
        note:
          description: An optional note with additional details about the Return.
          type: string
        metadata:
          description: An optional key-value map with additional information.
          type: object
    return_reason:
      title: Return Reason
      description: >-
        A Reason for why a given product is returned. A Return Reason can be
        used on Return Items in order to indicate why a Line Item was returned.
      x-resourceId: return_reason
      properties:
        id:
          description: The id of the Return Reason will start with `rr_`.
          type: string
        description:
          description: A description of the Reason.
          type: string
        label:
          description: A text that can be displayed to the Customer as a reason.
          type: string
        value:
          description: The value to identify the reason by.
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    return:
      title: Return
      description: >-
        Return orders hold information about Line Items that a Customer wishes
        to send back, along with how the items will be returned. Returns can be
        used as part of a Swap.
      x-resourceId: return
      properties:
        id:
          description: The id of the Return. This value will be prefixed with `ret_`.
          type: string
        status:
          description: Status of the Return.
          type: string
          enum:
            - requested
            - received
            - requires_action
        items:
          description: >-
            The Return Items that will be shipped back to the warehouse. type:
            array items: $ref: 
        swap_id:
          description: The id of the Swap that the Return is a part of.
          type: string
        order_id:
          description: The id of the Order that the Return is made from.
          type: string
        claim_order_id:
          description: The id of the Claim that the Return is a part of.
          type: string
        shipping_method:
          description: >-
            The Shipping Method that will be used to send the Return back. Can
            be null if the Customer facilitates the return shipment themselves.
          anyOf:
            - $ref: '#/components/schemas/shipping_method'
        shipping_data:
          description: >-
            Data about the return shipment as provided by the Fulfilment
            Provider that handles the return shipment.
          type: object
        refund_amount:
          description: The amount that should be refunded as a result of the return.
          type: integer
        received_at:
          description: The date with timezone at which the return was received.
          type: string
          format: date-time
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        no_notification:
          description: >-
            When set to true, no notification will be sent related to this
            return.
          type: boolean
        metadata:
          description: An optional key-value map with additional information.
          type: object
    shipping_method:
      title: Shipping Method
      description: >-
        Shipping Methods represent a way in which an Order or Return can be
        shipped. Shipping Methods are built from a Shipping Option, but may
        contain additional details, that can be necessary for the Fulfillment
        Provider to handle the shipment.
      x-resourceId: shipping_method
      properties:
        id:
          description: >-
            The id of the Shipping Method. This value will be prefixed with
            `sm_`.
          type: string
        shipping_option_id:
          description: >-
            The id of the Shipping Option that the Shipping Method is built
            from.
          type: string
        shipping_option:
          description: The Shipping Option that the Shipping Method is built from.
          anyOf:
            - $ref: '#/components/schemas/shipping_option'
        order_id:
          description: The id of the Order that the Shipping Method is used on.
          type: string
        return_id:
          description: The id of the Return that the Shipping Method is used on.
          type: string
        swap_id:
          description: The id of the Swap that the Shipping Method is used on.
          type: string
        cart_id:
          description: The id of the Cart that the Shipping Method is used on.
          type: string
        claim_order_id:
          description: The id of the Claim that the Shipping Method is used on.
          type: string
        price:
          description: >-
            The amount to charge for the Shipping Method. The currency of the
            price is defined by the Region that the Order that the Shipping
            Method belongs to is a part of.
          type: integer
        data:
          description: >-
            Additional data that the Fulfillment Provider needs to fulfill the
            shipment. This is used in combination with the Shipping Options
            data, and may contain information such as a drop point id.
          type: object
    shipping_option_requirement:
      title: Shipping Option Requirement
      description: >-
        A requirement that a Cart must satisfy for the Shipping Option to be
        available to the Cart.
      x-resourceId: shipping_option_requirement
      properties:
        id:
          description: >-
            The id of the Shipping Option Requirement. This value will be
            prefixed with `sor_`.
          type: string
        shipping_option_id:
          description: >-
            The id of the Shipping Option that the Shipping Option Requirement
            belongs to.
          type: string
        type:
          description: >-
            The type of the requirement, this defines how the value will be
            compared to the Cart's total. `min_subtotal` requirements define the
            minimum subtotal that is needed for the Shipping Option to be
            available, while the `max_subtotal` defines the maximum subtotal
            that the Cart can have for the Shipping Option to be available.
          type: string
          enum:
            - min_subtotal
            - max_subtotal
        amount:
          description: The amount to compare the Cart subtotal to.
          type: integer
    shipping_option:
      title: Shipping Option
      description: >-
        Shipping Options represent a way in which an Order or Return can be
        shipped. Shipping Options have an associated Fulfillment Provider that
        will be used when the fulfillment of an Order is initiated. Shipping
        Options themselves cannot be added to Carts, but serve as a template for
        Shipping Methods. This distinction makes it possible to customize
        individual Shipping Methods with additional information.
      x-resourceId: shipping_option
      properties:
        id:
          description: >-
            The id of the Shipping Option. This value will be prefixed with
            `so_`.
          type: string
        name:
          description: >-
            The name given to the Shipping Option - this may be displayed to the
            Customer.
          type: string
        region_id:
          description: The id of the Region that the Shipping Option belongs to.
          type: string
        region:
          description: The id of the Region that the Shipping Option belongs to.
          anyOf:
            - $ref: '#/components/schemas/region'
        profile_id:
          description: >-
            The id of the Shipping Profile that the Shipping Option belongs to.
            Shipping Profiles have a set of defined Shipping Options that can be
            used to Fulfill a given set of Products.
          type: string
        provider_id:
          description: >-
            The id of the Fulfillment Provider, that will be used to process
            Fulfillments from the Shipping Option.
          type: string
        price_type:
          description: >-
            The type of pricing calculation that is used when creatin Shipping
            Methods from the Shipping Option. Can be `flat_rate` for fixed
            prices or `calculated` if the Fulfillment Provider can provide price
            calulations.
          type: string
          enum:
            - flat_rate
            - calculated
        amount:
          description: >-
            The amount to charge for shipping when the Shipping Option price
            type is `flat_rate`.
          type: integer
        is_return:
          description: >-
            Flag to indicate if the Shipping Option can be used for Return
            shipments.
          type: boolean
        requirements:
          description: >-
            The requirements that must be satisfied for the Shipping Option to
            be available for a Cart.
          type: array
          items:
            $ref: '#/components/schemas/shipping_option_requirement'
        data:
          description: >-
            The data needed for the Fulfillment Provider to identify the
            Shipping Option.
          type: object
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    shipping_profile:
      title: Shipping Profile
      description: >-
        Shipping Profiles have a set of defined Shipping Options that can be
        used to fulfill a given set of Products.
      x-resourceId: shipping_profile
      properties:
        id:
          description: >-
            The id of the Shipping Profile. This value will be prefixed with
            `sp_`.
          type: string
        name:
          description: >-
            The name given to the Shipping profile - this may be displayed to
            the Customer.
          type: string
        type:
          description: >-
            The type of the Shipping Profile, may be `default`, `gift_card` or
            `custom`.
          type: string
          enum:
            - default
            - gift_card
            - custom
        products:
          description: The Products that the Shipping Profile defines Shipping Options for.
          type: array
          items:
            $ref: '#/components/schemas/product'
        shipping_options:
          description: >-
            The Shipping Options that can be used to fulfill the Products in the
            Shipping Profile.
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/shipping_option'
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    shipping_tax_rate:
      title: Shipping Tax Rate
      description: >-
        Associates a tax rate with a shipping option to indicate that the
        shipping option is taxed in a certain way
      x-resourceId: shipping_tax_rate
      properties:
        shipping_option_id:
          description: The id of the Shipping Option
          type: string
        rate_id:
          description: The id of the Tax Rate
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    store:
      title: Store
      description: 'Holds settings for the Store, such as name, currencies, etc.'
      x-resourceId: store
      properties:
        id:
          description: The id of the Store. This value will be prefixed with `store_`.
          type: string
        name:
          description: The name of the Store - this may be displayed to the Customer.
          type: string
        default_currency_code:
          description: >-
            The default currency code used when no other currency code is
            specified.
          type: string
        currencies:
          description: The currencies that are enabled for the Store.
          type: array
          items:
            $ref: '#/components/schemas/currency'
        swap_link_template:
          description: >-
            A template to generate Swap links from use {{cart_id}} to include
            the Swap's `cart_id` in the link.
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    swap:
      title: Swap
      description: >-
        Swaps can be created when a Customer wishes to exchange Products that
        they have purchased to different Products. Swaps consist of a Return of
        previously purchased Products and a Fulfillment of new Products, the
        amount paid for the Products being returned will be used towards payment
        for the new Products. In the case where the amount paid for the the
        Products being returned exceed the amount to be paid for the new
        Products, a Refund will be issued for the difference.
      x-resourceId: swap
      properties:
        id:
          description: The id of the Swap. This value will be prefixed with `swap_`.
          type: string
        fulfillment_status:
          description: The status of the Fulfillment of the Swap.
          type: string
          enum:
            - not_fulfilled
            - partially_fulfilled
            - fulfilled
            - partially_shipped
            - shipped
            - partially_returned
            - returned
            - canceled
            - requires_action
        payment_status:
          description: >-
            The status of the Payment of the Swap. The payment may either refer
            to the refund of an amount or the authorization of a new amount.
          type: string
          enum:
            - not_paid
            - awaiting
            - captured
            - canceled
            - difference_refunded
            - requires_action
        order_id:
          description: >-
            The id of the Order where the Line Items to be returned where
            purchased.
          type: string
        additional_items:
          description: The new Line Items to ship to the Customer.
          type: array
          items:
            $ref: '#/components/schemas/line_item'
        return_order:
          description: The Return that is issued for the return part of the Swap.
          anyOf:
            - $ref: '#/components/schemas/return'
        fulfillments:
          description: The Fulfillments used to send the new Line Items.
          type: array
          items:
            $ref: '#/components/schemas/fulfillment'
        payment:
          description: >-
            The Payment authorized when the Swap requires an additional amount
            to be charged from the Customer.
          anyOf:
            - $ref: '#/components/schemas/payment'
        difference_due:
          description: >-
            The difference that is paid or refunded as a result of the Swap. May
            be negative when the amount paid for the returned items exceed the
            total of the new Products.
          type: integer
        shipping_address:
          description: >-
            The Address to send the new Line Items to - in most cases this will
            be the same as the shipping address on the Order.
          anyOf:
            - $ref: '#/components/schemas/address'
        shipping_methods:
          description: The Shipping Methods used to fulfill the addtional items purchased.
          type: array
          items:
            $ref: '#/components/schemas/shipping_method'
        cart_id:
          description: The id of the Cart that the Customer will use to confirm the Swap.
          type: string
        allow_backorder:
          description: 'If true, swaps can be completed with items out of stock'
          type: boolean
        confirmed_at:
          description: >-
            The date with timezone at which the Swap was confirmed by the
            Customer.
          type: string
          format: date-time
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        canceled_at:
          description: The date with timezone at which the Swap was canceled.
          type: string
          format: date-time
        no_notification:
          description: 'If set to true, no notification will be sent related to this swap'
          type: boolean
        metadata:
          description: An optional key-value map with additional information.
          type: object
    tax_line:
      title: Tax Line
      description: Line item that specifies an amount of tax to add to a line item.
      x-resourceId: tax_line
      properties:
        id:
          description: The id of the Tax Line. This value will be prefixed by `tl_`.
          type: string
        code:
          description: A code to identify the tax type by
          type: string
        name:
          description: A human friendly name for the tax
          type: string
        rate:
          description: The numeric rate to charge tax by
          type: number
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    tax_provider:
      title: Tax Provider
      description: The tax service used to calculate taxes
      x-resourceId: tax_provider
      properties:
        id:
          description: The id of the tax provider as given by the plugin.
          type: string
        is_installed:
          description: >-
            Whether the plugin is installed in the current version. Plugins that
            are no longer installed are not deleted by will have this field set
            to `false`.
          type: boolean
    tax_rate:
      title: Tax Rate
      description: >-
        A Tax Rate can be used to associate a certain rate to charge on products
        within a given Region
      x-resourceId: line_item
      properties:
        id:
          description: The id of the Tax Rate. This value will be prefixed by `txr_`.
          type: string
        rate:
          description: The numeric rate to charge
          type: number
        code:
          description: A code to identify the tax type by
          type: string
        name:
          description: A human friendly name for the tax
          type: string
        region_id:
          description: The id of the Region that the rate belongs to
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
        refundable:
          description: >-
            The amount that can be refunded from the given Line Item. Takes
            taxes and discounts into consideration.
          type: integer
    tracking_link:
      title: Tracking Link
      description: >-
        Tracking Link holds information about tracking numbers for a
        Fulfillment. Tracking Links can optionally contain a URL that can be
        visited to see the status of the shipment.
      x-resourceId: tracking_link
      properties:
        id:
          description: >-
            The id of the Tracking Link. This value will be prefixed with
            `tlink_`.
          type: string
        url:
          description: The URL at which the status of the shipment can be tracked.
          type: string
        tracking_number:
          description: The tracking number given by the shipping carrier.
          type: string
        fulfillment_id:
          description: The id of the Fulfillment that the Tracking Link references.
          type: string
        created_at:
          description: The date with timezone at which the resource was created.
          type: string
          format: date-time
        updated_at:
          description: The date with timezone at which the resource was last updated.
          type: string
          format: date-time
        deleted_at:
          description: The date with timezone at which the resource was deleted.
          type: string
          format: date-time
        metadata:
          description: An optional key-value map with additional information.
          type: object
    user:
      title: User
      description: Represents a User who can manage store settings.
      x-resourceId: user
      properties:
        id:
          description: The unique id of the User. This will be prefixed with `usr_`
          type: string
        email:
          description: The email of the User
          type: string
        first_name:
          type: string
        last_name:
          description: The Customer's billing address.
          anyOf:
            - $ref: '#/components/schemas/address'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
        metadata:
          type: object
