openapi: 3.0.0
info:
  version: 2.0.0
  title: Medusa Admin API
  license:
    name: MIT
    url: https://github.com/medusajs/medusa/blob/develop/LICENSE
servers:
  - url: http://localhost:9000
  - url: https://api.medusajs.com
tags:
  - name: Api Keys
    description: |
      API keys can be used for authentication or resource-scoping.

      A secret API key can be used to authenticate admin users.  A publishable API key can be used to scope client requests to one or more sales channels.

      These API routes allow admin users to manage both publishable and secret API keys.
    externalDocs:
      description: Learn more about the API Key Module
      url: https://docs.medusajs.com/resources/commerce-modules/api-key
    x-associatedSchema:
      $ref: '#/components/schemas/AdminApiKey'
  - name: Auth
    description: |
      Auth API routes allow you to manage an admin user's authentication.
  - name: Campaigns
    description: |
      A campaign is a group of promotions that have the same conditions, such as start and end dates.

      These API routes allow admin users to manage campaigns, their conditions, and promotions that belong to them.
    externalDocs:
      description: Learn more about campaigns.
      url: https://docs.medusajs.com/resources/commerce-modules/promotion/campaign
    x-associatedSchema:
      $ref: '#/components/schemas/AdminCampaign'
  - name: Claims
    description: |
      An admin creates a claim for an order when a customer reports that an item is defective or incorrect.

      Using these API routes, admin users manage order claims, their items, and more.
    x-associatedSchema:
      $ref: '#/components/schemas/AdminClaim'
    externalDocs:
      description: Learn more about order claims.
      url: https://docs.medusajs.com/resources/commerce-modules/order/claim
  - name: Collections
    description: |
      A product collection organizes products into a collection for marketing purposes. For example, a summer collection.

      These API routes allow admin users to manage collections and the products in them.
    x-associatedSchema:
      $ref: '#/components/schemas/AdminCollection'
  - name: Currencies
    description: |
      A store can use unlimited currencies, and each region must be associated with at least one currency.

      Currencies are defined by the Currency Module. Currency API Routes allow admins to list and update currencies.
    externalDocs:
      description: Learn more about the Currency Module
      url: https://docs.medusajs.com/resources/commerce-modules/currency
    x-associatedSchema:
      $ref: '#/components/schemas/AdminCurrency'
  - name: Customer Groups
    description: |
      Customers can be organized into groups. These groups are useful for segregation and marketing purposes.

      For example, you can provide different prices for specific customers by creating a price list conditioned to their group.

      These API routes allow admin users to manage groups and the customers in them.
    externalDocs:
      description: Learn more about the Customer Module
      url: https://docs.medusajs.com/resources/commerce-modules/customer
    x-associatedSchema:
      $ref: '#/components/schemas/AdminCustomerGroup'
  - name: Customers
    description: |
      Customers can either be created when they register through the Store APIs, or created by the admin using the Admin APIs.

      These API routes allow admin users to manage customers in their store.
    externalDocs:
      description: Learn more about the Customer Module
      url: https://docs.medusajs.com/resources/commerce-modules/customer
    x-associatedSchema:
      $ref: '#/components/schemas/AdminCustomer'
  - name: Draft Orders
    description: |
      A draft order is an order created by the admin user. This is useful for orders created offline or from clients other than a storefront, such as a third-party integration.

      These API routes allow admin users to create and manage draft orders.
    externalDocs:
      description: Learn more about the Order Module
      url: https://docs.medusajs.com/resources/commerce-modules/order
    x-associatedSchema:
      $ref: '#/components/schemas/AdminDraftOrder'
  - name: Exchanges
    description: |
      An exchange is the replacement of an item that the customer ordered with another.

      These API routes allow admin users to create and manage exchanges.
    externalDocs:
      description: Learn more about the order exchanges.
      url: https://docs.medusajs.com/resources/commerce-modules/order/exchange
    x-associatedSchema:
      $ref: '#/components/schemas/AdminExchange'
  - name: Feature Flags
    description: |
      Feature flags are used to enable or disable certain features in your Medusa application.
      These API routes allow admin users to view feature flags.
  - name: Fulfillment Providers
    description: |
      A fulfillment provider is a third-party integration or custom logic used to  fulfill an order's items.

      Fulfillment providers are installed as module providers.
    externalDocs:
      description: Learn more about the fulfillment providers and how to create them.
      url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/fulfillment-provider
    x-associatedSchema:
      $ref: '#/components/schemas/AdminFulfillmentProvider'
  - name: Fulfillment Sets
    description: |
      A fulfillment set is a general form or way of fulfillment, such as "shipping" or "pick up".

      All fulfillment-related configurations in a store are related to a fulfillment set.

      These API routes allow admin users to manage fulfillment sets.
    externalDocs:
      description: Learn more about fulfillment sets.
      url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/concepts
    x-associatedSchema:
      $ref: '#/components/schemas/AdminFulfillmentSet'
  - name: Fulfillments
    description: |
      A fulfillment is created for items in an order, return, exchanges, or claims to deliver items to/from the customer.

      These API routes allow admin users to manage fulfillments.
    externalDocs:
      description: Learn more about fulfillments.
      url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/item-fulfillment
    x-associatedSchema:
      $ref: '#/components/schemas/AdminFulfillment'
  - name: Gift Cards
    description: |
      A gift card is a prepaid card that can be used to pay for items during checkout.
      Gift cards can be purchased by customers, or created by admin users. When a gift card is redeemed, its amount is added to the customer's store credit account, which can then be used to pay for items during checkout.
      These API routes allow admin users to manage gift cards, transfer gift cards between customers, and more.
      <Note>
      Gift Card routes are only available for Cloud users using the [Loyalty Plugin](https://docs.medusajs.com/cloud/loyalty-plugin).
      </Note>
    x-associatedSchema:
      $ref: '#/components/schemas/AdminGiftCard'
  - name: Index
    description: |
      The Index Module is a tool to perform high-performance queries across modules, for example, to filter linked modules.
      The Index Module is currently experimental and is hidden behind a feature flag. Learn more about it and how to enable it in the [Index Module guide](https://docs.medusajs.com/learn/fundamentals/module-links/index-module).
  - name: Inventory Items
    description: |
      An inventory item is a stock-kept product whose inventory is managed.

      These API routes allow admin users to manage inventory items.
    externalDocs:
      description: Learn more about inventory items.
      url: https://docs.medusajs.com/resources/commerce-modules/inventory/concepts
    x-associatedSchema:
      $ref: '#/components/schemas/AdminInventoryItem'
  - name: Invites
    description: |
      An admin can invite new users to manage their team. This allows new users to authenticate as admins and perform admin functionalities.

      These API routes allow admin users to manage invites.
    externalDocs:
      description: Learn more about the User Module
      url: https://docs.medusajs.com/resources/commerce-modules/user
    x-associatedSchema:
      $ref: '#/components/schemas/AdminInvite'
  - name: Locales
    description: |
      A locale is a language that content is translated into for customers to view in a storefront.
      Medusa installs locales by default. These API routes allow admin users to retrieve and view locales.
    externalDocs:
      description: Learn more about locales and translations.
      url: https://docs.medusajs.com/resources/commerce-modules/translation/concepts
    x-associatedSchema:
      $ref: '#/components/schemas/AdminLocale'
  - name: Notifications
    description: |
      A notification informs an admin user of store changes or status changes of background tasks.

      These API routes allow admin users to view and manage notifications.
    x-associatedSchema:
      $ref: '#/components/schemas/AdminNotification'
  - name: Order Changes
    description: |
      An order change is a proposed change to an order, such as adding or removing items, changing shipping methods, and more. They can be associated with order edits, claims, or exchanges.
      These API routes allow admin users to manage order changes.
    externalDocs:
      description: Learn more about order changes.
      url: https://docs.medusajs.com/resources/commerce-modules/order/order-change
    x-associatedSchema:
      $ref: '#/components/schemas/AdminOrderChange'
  - name: Order Edits
    description: |
      An order edit is a change to an order's details, such as items, shipping methods, and more.

      Changes made by an order edit are only applied on the order once they're confirmed.

      The order's previous version is retained due to versioning.

      These API routes allow admin users to make edits to an order and manage those edits.
    externalDocs:
      description: Learn more about the Order Module
      url: https://docs.medusajs.com/resources/commerce-modules/order
  - name: Orders
    description: |
      An order is a purchase made by a customer through a storefront.

      Orders can also originally be created as draft orders.

      These API routes allow admin users to view and manage orders.
    externalDocs:
      description: Learn more about the orders
      url: https://docs.medusajs.com/resources/commerce-modules/order/concepts
    x-associatedSchema:
      $ref: '#/components/schemas/AdminOrder'
  - name: Payment Collections
    description: |
      A payment collection is one or more payments of an order. They're also used for outstanding payments due to order exchanges or claims.

      Every purchase or request for payment starts with a payment collection.

      A payment collection holds the payment sessions used to authorize the payment amount, and the payments to be captured / refunded.

      These API routes allow admin users to manage payment collections.
    externalDocs:
      description: Learn more about payment collections.
      url: https://docs.medusajs.com/resources/commerce-modules/payment/payment-collection
    x-associatedSchema:
      $ref: '#/components/schemas/AdminPaymentCollection'
  - name: Payments
    description: |
      A payment is created when a payment amount is authorized. The payment can then be captured or refunded.

      A payment is created from the payment session that was authorized, and it belongs to the payment session's collection.

      These API routes allow admin users to manage payments.
    externalDocs:
      description: Learn more about payments.
      url: https://docs.medusajs.com/resources/commerce-modules/payment/payment
    x-associatedSchema:
      $ref: '#/components/schemas/AdminPayment'
  - name: Plugins
    description: |
      A plugin is a package of reusable Medusa customizations that you can install in any Medusa application.
      Plugins can be used to add new functionality, such as wishlists, or integrate third-party services, such as payment providers.
      These API routes allow admin users to retrieve plugins installed in their Medusa application.
    externalDocs:
      description: Learn more about plugins.
      url: https://docs.medusajs.com/learn/fundamentals/plugins
    x-associatedSchema:
      $ref: '#/components/schemas/AdminPlugin'
  - name: Price Lists
    description: |
      A price list is a group of prices applied if the specified conditions and rules are satisfied.

      Price lists are useful for sales or special prices for special conditions, such as applying prices for a set of customers.

      These API routes allow admin users to manage price lists.
    externalDocs:
      description: Learn more about price lists.
      url: https://docs.medusajs.com/resources/commerce-modules/pricing/concepts#price-list
    x-associatedSchema:
      $ref: '#/components/schemas/AdminPriceList'
  - name: Price Preferences
    description: |
      A price preference is used to specify whether tax-inclusiveness is enabled for a context, such as a region or currency code.

      These API routes allow admin users to manage whether a region or currency is tax inclusive.
    externalDocs:
      description: Learn more about tax-inclusiveness and the role of a price preference.
      url: https://docs.medusajs.com/resources/commerce-modules/pricing/tax-inclusive-pricing
    x-associatedSchema:
      $ref: '#/components/schemas/AdminPricePreference'
  - name: Product Categories
    description: |
      Products can be categorized into categories.

      Categories are nested and their heirarchy can be managed, giving admin users flexibility in how they categorize their products.

      These API routes allow admin users to manage categories and the products in them.
    externalDocs:
      description: Learn more about the Product Module
      url: https://docs.medusajs.com/resources/commerce-modules/product
    x-associatedSchema:
      $ref: '#/components/schemas/AdminProductCategory'
  - name: Product Tags
    description: |
      A tag is another way of organizing a product. Each tag has a name and a value.

      Products are organized into the same tag if they have the same value.

      These API routes allow admin users to manage product tags.
    externalDocs:
      description: Learn more about the Product Module
      url: https://docs.medusajs.com/resources/commerce-modules/product
    x-associatedSchema:
      $ref: '#/components/schemas/AdminProductTag'
  - name: Product Types
    description: |
      Products can be organized into types. Each type has a name and a value.

      Products are organized into the same type if they have the same value.

      These API routes allow admin users to manage product types.
    externalDocs:
      description: Learn more about the Product Module
      url: https://docs.medusajs.com/resources/commerce-modules/product
    x-associatedSchema:
      $ref: '#/components/schemas/AdminProductType'
  - name: Product Variants
    description: |
      A product variant is a saleable form of the product.

      Each variant has different option values. For example, a "Shirt" product may have a  "Blue" variant and a "Green" variant. Customers choose from these variants when they buy the product.

      These API routes allow admin users to manage product variants.
    externalDocs:
      description: Learn more about the Product Module
      url: https://docs.medusajs.com/resources/commerce-modules/product
    x-associatedSchema:
      $ref: '#/components/schemas/AdminProductVariant'
  - name: Products
    description: |
      A product is a set of variants that the customer chooses from when making a purchase.

      A product can be organized into categories or collections.

      A product can have many options, and variants for each of these options' values.

      These API routes allow admin users to manage products.
    externalDocs:
      description: Learn more about the Product Module
      url: https://docs.medusajs.com/resources/commerce-modules/product
    x-associatedSchema:
      $ref: '#/components/schemas/AdminProduct'
  - name: Promotions
    description: |
      A promotion discounts an amount or percentage off a cart's items, shipping methods, or the entire order.

      Promotions have different types, such as a `standard` promotion that just discounts an amount, or a `buyget` promotion to enforce a "buy X get Y" promotion.

      A promotion has rules to restrict how and when they're applied.

      Promotions belong to a campaign, which sets conditions on the promotion such as when it starts and ends.

      These API routes allow admin users to manage promotions.
    externalDocs:
      description: Learn more about promotions.
      url: https://docs.medusajs.com/resources/commerce-modules/promotion/concepts
    x-associatedSchema:
      $ref: '#/components/schemas/AdminPromotion'
  - name: Refund Reasons
    description: |
      A refund reason is a possible reason used when issuing a refund to the customer, such as when returning an item and refunding the customer.

      These API routes allow admin users to manage refund reasons.
    x-associatedSchema:
      $ref: '#/components/schemas/AdminRefundReason'
  - name: Regions
    description: |
      Regions are different countries or geographical regions that the commerce store serves customers in.

      These API routes allow admin users to manage regions, their providers, and more.
    externalDocs:
      description: Learn more about the Region Module.
      url: https://docs.medusajs.com/resources/commerce-modules/region
    x-associatedSchema:
      $ref: '#/components/schemas/AdminRegion'
  - name: Reservations
    description: |
      A reservation is unavailable quantity of an inventory item in a location.

      A reservation is created automatically for variants in an order whose `manage_inventory` is enabled. Admin users can also create reservations manually.

      These API routes allow admin users to manage reservations.
    externalDocs:
      description: Learn more about reservations and other inventory concepts.
      url: https://docs.medusajs.com/resources/commerce-modules/inventory/concepts
    x-associatedSchema:
      $ref: '#/components/schemas/AdminReservation'
  - name: Return Reasons
    description: |
      A return reason is a possible reason that an item is returned from the customer, such as when returning an item.

      These API routes allow admin users to manage return reasons.
    x-associatedSchema:
      $ref: '#/components/schemas/AdminReturnReason'
  - name: Returns
    description: |
      Admin users create a return when a customer returns an item to them.

      Returns can also be created by customers through the storefront, and admins will be able to manage them and make refunds, if necessary. Refunds are made through the [Payment API Routes](#payment)

      These API routes allow admin users to manage returns.
    externalDocs:
      description: Learn more about order returns.
      url: https://docs.medusajs.com/resources/commerce-modules/order/return
    x-associatedSchema:
      $ref: '#/components/schemas/AdminReturn'
  - name: Sales Channels
    description: |
      A sales channel indicates a channel where products can be sold in. For example, a webshop or a mobile app.

      These API routes allow admins to manage sales channels and the products available in them.
    externalDocs:
      description: Learn more about the Sales Channel Module.
      url: https://docs.medusajs.com/resources/commerce-modules/sales-channel
    x-associatedSchema:
      $ref: '#/components/schemas/AdminSalesChannel'
  - name: Shipping Option Types
    x-associatedSchema:
      $ref: '#/components/schemas/AdminShippingOptionType'
    description: |
      Shipping option types define a group of shipping options with shared shipping characterstics. For example,  you may have "Standard" and "Express" shipping option types.
      These API routes allow admins to manage shipping option types.
    externalDocs:
      description: Learn more about shipping option types.
      url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#shipping-profiles-and-types
  - name: Shipping Options
    description: |
      A shipping option is a way of shipping an item to or from the customer.

      Shipping options are associated with the fulfillment provider used to handle their fulfillment.

      Shipping options can be restricted geographically by service zones, and by custom rules, such as an item's weight or the customer's group.

      These API routes allow admins to manage shipping options.
    externalDocs:
      description: Learn more about shipping options.
      url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option
    x-associatedSchema:
      $ref: '#/components/schemas/AdminShippingOption'
  - name: Shipping Profiles
    description: |
      A shipping profile defines a type of items that are shipping in a similar manner. For example,  digital products may have a `digital` shipping profile.

      These API routes allow admin users to manage shipping profiles.
    externalDocs:
      description: Learn more about shipping profiles and other fulfillment concepts.
      url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/concepts#shipping-profile
    x-associatedSchema:
      $ref: '#/components/schemas/AdminShippingProfile'
  - name: Stock Locations
    description: |
      A stock location is where stock-kept items (products) are kept.

      Stock locations are linked to fulfillment providers used to fulfill items from this location.

      A stock location is also link to a fulfillment set, indicating where an item is fulfilled from  when an order is placed.

      These API routes allow admin users to manage stock locations and their linked data.
    externalDocs:
      description: Learn more about stock locations.
      url: https://docs.medusajs.com/resources/commerce-modules/stock-location/concepts
    x-associatedSchema:
      $ref: '#/components/schemas/AdminStockLocation'
  - name: Store Credit Accounts
    description: |
      A store credit account is a ledger of store credit transactions for a customer. They hold the customer's store credit balance,  including their credit and debit amounts.
      Store credit accounts allow you to build features that let customers pay for items using their store credit balance, such as gift cards or loyalty points.
      These API routes allow admin users to manage store credit accounts, their transactions, and more.
      <Note>
      Store Credit Account routes are only available for Cloud users using the [Loyalty Plugin](https://docs.medusajs.com/cloud/loyalty-plugin).
      </Note>
    x-associatedSchema:
      $ref: '#/components/schemas/AdminStoreCreditAccount'
  - name: Stores
    description: |
      A store holds the main configuration and information of your commerce store, such as supported currencies or default sales channel.

      By default, the Medusa application has one default store. There are no API routes to create more stores. Instead, you'd have  to handle that customization manually.

      These API routes allow admin users to manage their store.
    externalDocs:
      description: Learn more about the Store Module.
      url: https://docs.medusajs.com/resources/commerce-modules/store
    x-associatedSchema:
      $ref: '#/components/schemas/AdminStore'
  - name: Tax Providers
    description: |
      A tax provider is a third-party integration or custom logic used to calculate taxes for a cart or an order.
      These API routes allow admin users to manage tax providers installed in their Medusa application.
    externalDocs:
      description: Learn more about the Tax Module Providers
      url: https://docs.medusajs.com/resources/commerce-modules/tax/tax-provider
    x-associatedSchema:
      $ref: '#/components/schemas/AdminTaxProvider'
  - name: Tax Rates
    description: |
      A tax rate is a percentage amount used to calculate the tax amount of each taxable item's price, such as line items or shipping methods.

      Each tax region has a default tax rate. You can create tax rates that override the default using tax rules.

      These API routes allow admin users to manage tax rates and their rules.
    externalDocs:
      description: Learn more about tax rates and rules.
      url: https://docs.medusajs.com/resources/commerce-modules/tax/tax-rates-and-rules
    x-associatedSchema:
      $ref: '#/components/schemas/AdminTaxRate'
  - name: Tax Regions
    description: |
      A tax region is a region's tax settings. It has tax rates and rules. So, after you create a region, you must create a tax region for it.

      A tax region can extend settings from a parent tax region.

      These API routes allow admin users to manage tax regions. 
    externalDocs:
      description: Learn more about tax regions.
      url: https://docs.medusajs.com/resources/commerce-modules/tax/tax-region
    x-associatedSchema:
      $ref: '#/components/schemas/AdminTaxRegion'
  - name: Translations
    description: |
      A translation is a localized version of content in a specific locale. For example, a product description in French.
      These API routes allow admin users to manage translations for different locales and resources.
    externalDocs:
      description: Learn more about the Translation Module.
      url: https://docs.medusajs.com/resources/commerce-modules/translation
    x-associatedSchema:
      $ref: '#/components/schemas/AdminTranslation'
  - name: Uploads
    description: |
      Use these API routes to upload files to your Medusa application using the installed file module provider.

      You can upload public files, such as product images, or private files, such as CSV files used to import products.
    externalDocs:
      description: Check out available file module providers.
      url: https://docs.medusajs.com/resources/infrastructure-modules/file
  - name: Users
    description: |
      A user is an admin user that can authenticate and perform functionalities as an admin user.

      An admin user can invite other users to join their team. Once they accept the invite, they'll become admin users as well.

      These API routes allow admin users to manage their team.
    externalDocs:
      description: Learn more about the User Module.
      url: https://docs.medusajs.com/resources/commerce-modules/user
    x-associatedSchema:
      $ref: '#/components/schemas/AdminUser'
  - name: Views
  - name: Workflows Executions
    description: |
      These API routes allow you to track workflow executions in your Medusa application.

      Depending on the workflow engine you use, executions may only be retained for a short while, or only until the Medusa application is restarted.
    externalDocs:
      description: Check out available Workflow Engine Modules
      url: https://docs.medusajs.com/resources/infrastructure-modules/workflow-engine
paths:
  /admin/api-keys:
    get:
      operationId: GetApiKeys
      summary: List API Keys
      description: Retrieve a list of API keys. The API keys can be filtered by fields such as `id`. The API keys can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: q
          in: query
          description: A search term to search the API keys' searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: The search term.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by an API key's ID.
              - type: array
                description: Filter by API key IDs.
                items:
                  type: string
                  title: id
                  description: The API key ID.
        - name: title
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: title
                description: Filter by an API key's title.
              - type: array
                description: Filter by API key titles.
                items:
                  type: string
                  title: title
                  description: The API key title.
        - name: token
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: token
                description: Filter by an API key's token.
              - type: array
                description: Filter by API key tokens.
                items:
                  type: string
                  title: token
                  description: The API key token.
        - name: type
          in: query
          description: Filter by the API key's type.
          required: false
          schema:
            type: string
            enum:
              - secret
              - publishable
        - name: created_at
          in: query
          description: Filter by the API key's creation date.
          required: false
          schema:
            type: object
            description: Filter by the API key's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the API key's update date.
          required: false
          schema:
            type: object
            description: Filter by the API key's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by the API key's deletion date.
          required: false
          schema:
            type: object
            description: Filter by the API key's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: revoked_at
          in: query
          description: Filter by the API key's revoke date.
          required: false
          schema:
            type: object
            description: Filter by the API key's revoke date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: revoked_at
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.apiKey.list()
            .then(({ api_keys, count, limit, offset }) => {
              console.log(api_keys)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/api-keys' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Api Keys
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned in the list.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total count of items.
                  - type: object
                    required:
                      - api_keys
                    properties:
                      api_keys:
                        type: array
                        description: The list of API keys.
                        items:
                          $ref: '#/components/schemas/ApiKeyResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostApiKeys
      summary: Create Api Key
      description: |
        Create a secret or publishable API key.
        A secret API key is used for admin authentication.

        A publishable API key is used by client applications to set the scope of the request.
      x-authenticated: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateApiKey'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.apiKey.create({
              title: "Development",
              type: "publishable"
            })
            .then(({ api_key }) => {
              console.log(api_key)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/api-keys' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "title": "{value}",
              "type": "{value}"
            }'
      tags:
        - Api Keys
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminApiKeyResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createApiKeysWorkflow
      x-events: []
  /admin/api-keys/{id}:
    get:
      operationId: GetApiKeysId
      summary: Get API Key
      description: Retrieve an API key by its ID. You can expand the API key's relations or select the fields that should be returned using the query parameters.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The API key's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.apiKey.retrieve("apk_123")
            .then(({ api_key }) => {
              console.log(api_key)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/api-keys/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Api Keys
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminApiKeyResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostApiKeysId
      summary: Update an API Key
      description: Update an API key's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The API key's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateApiKey'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.apiKey.update("apk_123", {
              title: "Development"
            })
            .then(({ api_key }) => {
              console.log(api_key)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/api-keys/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "title": "{value}"
            }'
      tags:
        - Api Keys
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminApiKeyResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateApiKeysWorkflow
      x-events: []
    delete:
      operationId: DeleteApiKeysId
      summary: Delete an Api Key
      description: |
        Delete a publishable or secret API key.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The API key's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.apiKey.delete("apk_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/api-keys/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Api Keys
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The API key's ID.
                  object:
                    type: string
                    title: object
                    description: The name of the object that was deleted.
                    default: api_key
                  deleted:
                    type: boolean
                    title: deleted
                    description: Whether the API key was deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteApiKeysWorkflow
      x-events: []
  /admin/api-keys/{id}/revoke:
    post:
      operationId: PostApiKeysIdRevoke
      summary: Revoke API Key
      description: |
        Revokes an API key. If the API key is a secret, it can't be used for authentication anymore. If it's publishable, it can't be used by client applications.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The API key's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminRevokeApiKey'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.apiKey.revoke("apk_123")
            .then(({ api_key }) => {
              console.log(api_key)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/api-keys/{id}/revoke' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Api Keys
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminApiKeyResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: revokeApiKeysWorkflow
      x-events: []
  /admin/api-keys/{id}/sales-channels:
    post:
      operationId: PostApiKeysIdSalesChannels
      summary: Manage Sales Channels of a Publishable API Key
      x-sidebar-summary: Manage Sales Channels
      description: Manage the sales channels of a publishable API key, either to associate them or remove them from the API key.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The API key's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchLink'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.apiKey.batchSalesChannels("apk_123", {
              add: ["sc_123"],
              remove: ["sc_321"]
            })
            .then(({ api_key }) => {
              console.log(api_key)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/api-keys/{id}/sales-channels' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Api Keys
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminApiKeyResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: linkSalesChannelsToApiKeyWorkflow
      x-events: []
  /admin/campaigns:
    get:
      operationId: GetCampaigns
      summary: List Campaigns
      description: Retrieve a list of campaigns. The campaigns can be filtered by fields such as `id`. The campaigns can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
        - name: q
          in: query
          description: Apply a search query to the campaign's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Apply a search query to the campaign's searchable properties.
        - name: campaign_identifier
          in: query
          description: Filter by a campaign identifier.
          required: false
          schema:
            type: string
            title: campaign_identifier
            description: Filter by a campaign identifier.
        - name: budget
          in: query
          description: Filter by the campaign's budget.
          required: false
          schema:
            type: object
            description: Filter by the campaign's budget.
            properties:
              currency_code:
                type: string
                title: currency_code
                description: The budget's currency code.
                example: usd
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.campaign.list()
            .then(({ campaigns, count, limit, offset }) => {
              console.log(campaigns)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/campaigns' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Campaigns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of campaigns.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items retrieved.
                      offset:
                        type: number
                        title: offset
                        description: The number of its skipped before the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The list of campaigns
                    required:
                      - campaigns
                    properties:
                      campaigns:
                        type: array
                        description: The list of campaigns.
                        items:
                          $ref: '#/components/schemas/CampaignResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostCampaigns
      summary: Create Campaign
      description: Create a campaign.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The campaign's details.
                  required:
                    - name
                    - campaign_identifier
                    - description
                    - budget
                    - starts_at
                    - ends_at
                  properties:
                    name:
                      type: string
                      title: name
                      description: The campaign's name.
                    campaign_identifier:
                      type: string
                      title: campaign_identifier
                      description: The campaign's identifier.
                    description:
                      type: string
                      title: description
                      description: The campaign's description.
                    budget:
                      type: object
                      description: The campaign's budget which, when crossed, ends the campaign.
                      required:
                        - type
                        - limit
                        - currency_code
                      properties:
                        type:
                          type: string
                          title: type
                          description: |
                            The budget's type. This can't be edited later. Use `spend` to set a limit on the total amount discounted by the campaign's promotions. Use `usage` to set a limit on the total number of times the campaign's promotions can be used.
                          enum:
                            - spend
                            - usage
                        limit:
                          type: number
                          title: limit
                          description: The campaign budget's limit.
                        currency_code:
                          type: string
                          title: currency_code
                          description: The campaign budget's currency code. This can't be edited later.
                    starts_at:
                      type: string
                      title: starts_at
                      description: The campaign's start date.
                      format: date-time
                    ends_at:
                      type: string
                      title: ends_at
                      description: The campaign's end date.
                      format: date-time
                    promotions:
                      type: array
                      description: The campaign's promotions.
                      items:
                        type: object
                        description: The promotions to add to the campaign.
                        required:
                          - id
                        properties:
                          id:
                            type: string
                            title: id
                            description: A promotion's ID.
                - type: object
                  description: The campaign's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The campaign's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.campaign.create({
              name: "Summer Campaign"
            })
            .then(({ campaign }) => {
              console.log(campaign)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/campaigns' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Gunner",
              "campaign_identifier": "{value}",
              "description": "{value}",
              "starts_at": "2024-08-24T00:19:14.144Z",
              "ends_at": "2024-10-01T06:47:50.133Z"
            }'
      tags:
        - Campaigns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCampaignResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createCampaignsWorkflow
      x-events: []
  /admin/campaigns/{id}:
    get:
      operationId: GetCampaignsId
      summary: Get a Campaign
      description: Retrieve a campaign by its ID. You can expand the campaign's relations or select the fields that should be returned using the query parameters.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The campaign's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.campaign.retrieve("procamp_123")
            .then(({ campaign }) => {
              console.log(campaign)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/campaigns/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Campaigns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCampaignResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostCampaignsId
      summary: Update a Campaign
      description: Update a campaign's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The campaign's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The campaign's details.
                  required:
                    - description
                    - starts_at
                    - ends_at
                  properties:
                    name:
                      type: string
                      title: name
                      description: The campaign's name.
                    campaign_identifier:
                      type: string
                      title: campaign_identifier
                      description: The campaign's identifier.
                    description:
                      type: string
                      title: description
                      description: The campaign's description.
                    budget:
                      type: object
                      description: The campaign's budget.
                      required:
                        - limit
                      properties:
                        limit:
                          type: number
                          title: limit
                          description: The campaign budget's limit.
                    starts_at:
                      type: string
                      title: starts_at
                      description: The campaign's start date.
                      format: date-time
                    ends_at:
                      type: string
                      title: ends_at
                      description: The campaign's end date.
                      format: date-time
                    promotions:
                      type: array
                      description: The campaign's promotions.
                      items:
                        type: object
                        description: The promotions to add to the campaign.
                        required:
                          - id
                        properties:
                          id:
                            type: string
                            title: id
                            description: A promotion's ID.
                - type: object
                  description: The campaign's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The campaign's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.campaign.update("procamp_123", {
              name: "Summer Campaign"
            })
            .then(({ campaign }) => {
              console.log(campaign)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/campaigns/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "description": "{value}",
              "starts_at": "2024-08-10T14:44:10.530Z",
              "ends_at": "2024-07-13T17:45:37.462Z"
            }'
      tags:
        - Campaigns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCampaignResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateCampaignsWorkflow
      x-events: []
    delete:
      operationId: DeleteCampaignsId
      summary: Delete a Campaign
      description: |
        Delete a campaign by its ID. This doesn't delete promotions that belong to this campaign.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The campaign's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.campaign.delete("procamp_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/campaigns/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Campaigns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The campaign's ID.
                  object:
                    type: string
                    title: object
                    description: The name of the object that was deleted.
                    default: campaign
                  deleted:
                    type: boolean
                    title: deleted
                    description: Whether the campaign was deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteCampaignsWorkflow
      x-events: []
  /admin/campaigns/{id}/promotions:
    post:
      operationId: PostCampaignsIdPromotions
      summary: Manage the Promotions of a Campaign
      x-sidebar-summary: Manage Promotions
      description: Manage the promotions of a campaign, either by adding them or removing them from the campaign.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The campaign's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchLink'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.campaign.batchPromotions("procamp_123", {
              add: ["prom_123", "prom_456"],
              remove: ["prom_789"]
            })
            .then(({ campaign }) => {
              console.log(campaign)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/campaigns/{id}/promotions' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Campaigns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCampaignResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: addOrRemoveCampaignPromotionsWorkflow
      x-events: []
  /admin/claims:
    get:
      operationId: GetClaims
      summary: List Claims
      description: Retrieve a list of claims. The claims can be filtered by fields such as `id`. The claims can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: deleted_at
          in: query
          description: Filter by the claim's deletion date.
          required: false
          schema:
            type: object
            description: The claim's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by an exact match.
                            items:
                              type: string
                              title: $eq
                              description: Filter by an exact match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not equal to this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: Filter by values in this array.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: Filter by values not in this array.
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching the conditions in this parameter.
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the conditions in this parameter.
                            items:
                              type: string
                              title: $not
                              description: Filter by values not matching the conditions in this parameter.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: Filter arrays that have overlapping values with this parameter.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: Filter arrays that contain some of the values of this parameter.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: Filter arrays that contain all values of this parameter.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: q
          in: query
          description: The claim's q.
          required: false
          schema:
            type: string
            title: q
            description: The claim's q.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: The claim's ID.
              - type: array
                description: The claim's ID.
                items:
                  type: string
                  title: id
                  description: The id's ID.
        - name: order_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: order_id
                description: The claim's order id.
              - type: array
                description: The claim's order id.
                items:
                  type: string
                  title: order_id
                  description: The order id's details.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by the claim's status.
              - type: array
                description: Filter by the claim's status.
                items:
                  type: string
                  title: status
                  description: The claim's status.
        - name: created_at
          in: query
          description: Filter by the claim's creation date.
          required: false
          schema:
            type: object
            description: The claim's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by an exact match.
                            items:
                              type: string
                              title: $eq
                              description: Filter by an exact match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not equal to this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: Filter by values in this array.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: Filter by values not in this array.
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching the conditions in this parameter.
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the conditions in this parameter.
                            items:
                              type: string
                              title: $not
                              description: Filter by values not matching the conditions in this parameter.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: Filter arrays that have overlapping values with this parameter.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: Filter arrays that contain some of the values of this parameter.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: Filter arrays that contain all values of this parameter.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the claim's update date.
          required: false
          schema:
            type: object
            description: The claim's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by an exact match.
                            items:
                              type: string
                              title: $eq
                              description: Filter by an exact match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not equal to this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: Filter by values in this array.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: Filter by values not in this array.
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching the conditions in this parameter.
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the conditions in this parameter.
                            items:
                              type: string
                              title: $not
                              description: Filter by values not matching the conditions in this parameter.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: Filter arrays that have overlapping values with this parameter.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: Filter arrays that contain some of the values of this parameter.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: Filter arrays that contain all values of this parameter.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.list()
            .then(({ claims, count, limit, offset }) => {
              console.log(claims)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/claims' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostClaims
      summary: Create a Claim
      description: Create a claim. The claim is still in the request state, and the changes are only applied on the order once the claim is confirmed.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by the claim's ID.
              - type: array
                description: Filter by multiple claim IDs.
                items:
                  type: string
                  title: id
                  description: A claim ID.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by the claim's status.
              - type: array
                description: Filter by multiple claim statuses.
                items:
                  type: string
                  title: status
                  description: A claim status.
        - name: created_at
          in: query
          description: Filter by a claim's creation date.
          required: false
          schema:
            type: object
            description: Filter by a claim's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a claim's update date.
          required: false
          schema:
            type: object
            description: Filter by a claim's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a claim's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a claim's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateClaim'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.create({
              type: "refund",
              order_id: "order_123",
            })
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/claims' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "type": "{value}",
              "order_id": "{value}",
              "metadata": {}
            }'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: beginClaimOrderWorkflow
      x-events: []
  /admin/claims/{id}:
    get:
      operationId: GetClaimsId
      summary: Get a Claim
      description: Retrieve a claim by its ID. You can expand the claim's relations or select the fields that should be returned using the query parameters.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.retrieve("claim_123")
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/claims/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/claims/{id}/cancel:
    post:
      operationId: PostClaimsIdCancel
      summary: Cancel a Claim
      description: Cancel a claim and its associated return.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostCancelClaimReqSchema'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.cancel("claim_123")
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/claims/{id}/cancel' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: cancelOrderClaimWorkflow
      x-events: []
  /admin/claims/{id}/claim-items:
    post:
      operationId: PostClaimsIdClaimItems
      summary: Add Claim Items to a Claim
      x-sidebar-summary: Add Claim Items
      description: Add order items to a claim as claim items. These claim items will have the action `WRITE_OFF_ITEM`.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by the claim's ID.
              - type: array
                description: Filter by claim IDs.
                items:
                  type: string
                  title: id
                  description: A claim's ID.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by the claim's status.
              - type: array
                description: Filter by claim statuses.
                items:
                  type: string
                  title: status
                  description: A claim status.
        - name: created_at
          in: query
          description: Filter by a claim's creation date.
          required: false
          schema:
            type: object
            description: Filter by a claim's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a claim's update date.
          required: false
          schema:
            type: object
            description: Filter by a claim's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a claim's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a claim's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminAddClaimItems'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.addItems("claim_123", {
              items: [
                {
                  id: "orli_123",
                  quantity: 1
                }
              ]
            })
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/claims/{id}/claim-items' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: orderClaimItemWorkflow
      x-events: []
  /admin/claims/{id}/claim-items/{action_id}:
    post:
      operationId: PostClaimsIdClaimItemsAction_id
      summary: Update a Claim Item
      description: |
        Update an order item in a claim by the ID of the item's `WRITE_OFF_ITEM` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the order item's `WRITE_OFF_ITEM` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by the claim's ID.
              - type: array
                description: Filter by claim IDs.
                items:
                  type: string
                  title: id
                  description: A claim's ID.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by the claim's status.
              - type: array
                description: Filter by claim statuses.
                items:
                  type: string
                  title: status
                  description: A claim status.
        - name: created_at
          in: query
          description: Filter by a claim's creation date.
          required: false
          schema:
            type: object
            description: Filter by a claim's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a claim's update date.
          required: false
          schema:
            type: object
            description: Filter by a claim's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a claim's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a claim's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateClaimItem'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.updateItem(
              "claim_123", 
              "ordchact_123",
              {
                quantity: 1
              }
              )
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/claims/{id}/claim-items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateClaimItemWorkflow
      x-events: []
    delete:
      operationId: DeleteClaimsIdClaimItemsAction_id
      summary: Remove a Claim Item from a Claim
      x-sidebar-summary: Remove Claim Item
      description: |
        Remove an order item from a claim by the ID of the item's `WRITE_OFF_ITEM` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the order item's `WRITE_OFF_ITEM` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.removeItem(
              "claim_123", 
              "ordchact_123",
              )
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/claims/{id}/claim-items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeItemClaimActionWorkflow
      x-events: []
  /admin/claims/{id}/inbound/items:
    post:
      operationId: PostClaimsIdInboundItems
      summary: Add Inbound Items to a Claim
      x-sidebar-summary: Add Inbound Items
      description: |
        Add inbound (or return) items to a claim. These inbound items will have a `RETURN_ITEM` action.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostReturnsRequestItemsReqSchema'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.addInboundItems(
              "claim_123", 
              {
                items: [
                  {
                    id: "orli_123",
                    quantity: 1
                  }
                ]
              },
              )
            .then(({ return: returnData }) => {
              console.log(returnData)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/claims/{id}/inbound/items' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: orderClaimRequestItemReturnWorkflow
      x-events: []
  /admin/claims/{id}/inbound/items/{action_id}:
    post:
      operationId: PostClaimsIdInboundItemsAction_id
      summary: Update Inbound Items of a Claim
      x-sidebar-summary: Update Inbound Items
      description: |
        Update an inbound (or return) item of a claim using the `ID` of the item's `RETURN_ITEM` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the return item's `RETURN_ITEM` action.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostReturnsRequestItemsActionReqSchema'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.updateInboundItem(
              "claim_123", 
              "ordchact_123",
              {
                quantity: 1
              },
              )
            .then(({ return: returnData }) => {
              console.log(returnData)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/claims/{id}/inbound/items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateRequestItemReturnWorkflow
      x-events: []
    delete:
      operationId: DeleteClaimsIdInboundItemsAction_id
      summary: Remove an Inbound Item from Claim
      x-sidebar-summary: Remove Inbound Item
      description: |
        Remove an inbound (or return) item from a claim using the `ID` of the item's `RETURN_ITEM` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the return item's `RETURN_ITEM` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.removeInboundItem(
              "claim_123", 
              "ordchact_123",
              )
            .then(({ return: returnData }) => {
              console.log(returnData)
            })
        - lang: Shell
          label: cURL
          source: 'curl -X DELETE ''{backend_url}/admin/claims/{id}/inbound/items/{action_id}'' \ -H ''Authorization: Bearer {jwt_token}'''
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeItemReturnActionWorkflow
      x-events: []
  /admin/claims/{id}/inbound/shipping-method:
    post:
      operationId: PostClaimsIdInboundShippingMethod
      summary: Add an Inbound Shipping Method to a Claim
      x-sidebar-summary: Add Inbound Shipping
      description: |
        Add an inbound (or return) shipping method to a claim. The inbound shipping method will have a `SHIPPING_ADD` action.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostReturnsShippingReqSchema'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.addInboundShipping(
              "claim_123", 
              {
                shipping_option_id: "so_123",
                custom_amount: 10
              },
              )
            .then(({ return: returnData }) => {
              console.log(returnData)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/claims/{id}/inbound/shipping-method' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "shipping_option_id": "{value}"
            }'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createClaimShippingMethodWorkflow
      x-events: []
  /admin/claims/{id}/inbound/shipping-method/{action_id}:
    post:
      operationId: PostClaimsIdInboundShippingMethodAction_id
      summary: Update Inbound Shipping Method of a Claim
      x-sidebar-summary: Update Inbound Shipping
      description: |
        Update the shipping method for returning items in the claim using the `ID` of the method's `SHIPPING_ADD` action.

        Every shipping method has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by the claim's ID.
              - type: array
                description: Filter by claim IDs.
                items:
                  type: string
                  title: id
                  description: A claim's ID.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by the claim's status.
              - type: array
                description: Filter by claim statuses.
                items:
                  type: string
                  title: status
                  description: A claim status.
        - name: created_at
          in: query
          description: Filter by a claim's creation date.
          required: false
          schema:
            type: object
            description: Filter by a claim's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a claim's update date.
          required: false
          schema:
            type: object
            description: Filter by a claim's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a claim's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a claim's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminClaimUpdateInboundShipping'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.updateInboundShipping(
              "claim_123", 
              "ordchact_123",
              {
                custom_amount: 10
              },
              )
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/claims/{id}/inbound/shipping-method/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateReturnShippingMethodWorkflow
      x-events: []
    delete:
      operationId: DeleteClaimsIdInboundShippingMethodAction_id
      summary: Remove Inbound Shipping Method from Claim
      x-sidebar-summary: Remove Inbound Shipping Method
      description: |
        Remove the shipping method for returning items in the claim using the `ID` of the method's `SHIPPING_ADD` action.

        Every shipping method has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.deleteInboundShipping(
              "claim_123", 
              "ordchact_123",
              )
            .then(({ return: returnData }) => {
              console.log(returnData)
            })
        - lang: Shell
          label: cURL
          source: 'curl -X DELETE ''{backend_url}/admin/claims/{id}/inbound/shipping-method/{action_id}'' \ -H ''Authorization: Bearer {jwt_token}'''
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeClaimShippingMethodWorkflow
      x-events: []
  /admin/claims/{id}/outbound/items:
    post:
      operationId: PostClaimsIdOutboundItems
      summary: Add Outbound Items to a Claim
      x-sidebar-summary: Add Outbound Items
      description: |
        Add outbound (or new) items to a claim. These outbound items will have an `ITEM_ADD` action.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by the claim's ID.
              - type: array
                description: Filter by claim IDs.
                items:
                  type: string
                  title: id
                  description: A claim's ID.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by the claim's status.
              - type: array
                description: Filter by claim statuses.
                items:
                  type: string
                  title: status
                  description: A claim status.
        - name: created_at
          in: query
          description: Filter by a claim's creation date.
          required: false
          schema:
            type: object
            description: Filter by a claim's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a claim's update date.
          required: false
          schema:
            type: object
            description: Filter by a claim's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a claim's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a claim's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminAddClaimOutboundItems'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.addOutboundItems(
              "claim_123", 
              {
                items: [{
                  id: "orli_123",
                  quantity: 1
                }]
              },
              )
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/claims/{id}/outbound/items' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: orderClaimAddNewItemWorkflow
      x-events: []
  /admin/claims/{id}/outbound/items/{action_id}:
    post:
      operationId: PostClaimsIdOutboundItemsAction_id
      summary: Update Outbound Item of a Claim
      x-sidebar-summary: Update Outbound Item
      description: |
        Update an outbound (or new) item of a claim using the `ID` of the item's `ITEM_ADD` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the new claim item's `ITEM_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by the claim's ID.
              - type: array
                description: Filter by claim IDs.
                items:
                  type: string
                  title: id
                  description: A claim's ID.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by the claim's status.
              - type: array
                description: Filter by claim statuses.
                items:
                  type: string
                  title: status
                  description: A claim status.
        - name: created_at
          in: query
          description: Filter by a claim's creation date.
          required: false
          schema:
            type: object
            description: Filter by a claim's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a claim's update date.
          required: false
          schema:
            type: object
            description: Filter by a claim's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a claim's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a claim's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateClaimOutboundItem'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.updateOutboundItem(
              "claim_123", 
              "ordchact_123",
              {
                quantity: 1
              },
              )
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/claims/{id}/outbound/items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateClaimAddItemWorkflow
      x-events: []
    delete:
      operationId: DeleteClaimsIdOutboundItemsAction_id
      summary: Remove an Outbound Item from Claim
      x-sidebar-summary: Remove Outbound Item
      description: |
        Remove an outbound (or new) item from a claim using the `ID` of the item's `ITEM_ADD` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the new claim item's `ITEM_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.removeOutboundItem(
              "claim_123", 
              "ordchact_123",
            )
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: 'curl -X DELETE ''{backend_url}/admin/claims/{id}/outbound/items/{action_id}'' \ -H ''Authorization: Bearer {jwt_token}'''
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeAddItemClaimActionWorkflow
      x-events: []
  /admin/claims/{id}/outbound/shipping-method:
    post:
      operationId: PostClaimsIdOutboundShippingMethod
      summary: Add Outbound Shipping Methods to a Claim
      x-sidebar-summary: Add Outbound Shipping
      description: |
        Add an outbound shipping method to a claim. The outbound shipping method will have a `SHIPPING_ADD` action.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by the claim's ID.
              - type: array
                description: Filter by claim IDs.
                items:
                  type: string
                  title: id
                  description: A claim's ID.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by the claim's status.
              - type: array
                description: Filter by claim statuses.
                items:
                  type: string
                  title: status
                  description: A claim status.
        - name: created_at
          in: query
          description: Filter by a claim's creation date.
          required: false
          schema:
            type: object
            description: Filter by a claim's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a claim's update date.
          required: false
          schema:
            type: object
            description: Filter by a claim's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a claim's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a claim's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminClaimAddOutboundShipping'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.addOutboundShipping(
              "claim_123", 
              {
                shipping_option_id: "so_123",
                custom_amount: 10
              },
            )
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/claims/{id}/outbound/shipping-method' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "shipping_option_id": "{value}"
            }'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createClaimShippingMethodWorkflow
      x-events: []
  /admin/claims/{id}/outbound/shipping-method/{action_id}:
    post:
      operationId: PostClaimsIdOutboundShippingMethodAction_id
      summary: Update Outbound Shipping Method of a Claim
      x-sidebar-summary: Update Outbound Shipping
      description: |
        Update the shipping method for delivering outbound items in a claim using the `ID` of the method's `SHIPPING_ADD` action.

        Every shipping method has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by the claim's ID.
              - type: array
                description: Filter by claim IDs.
                items:
                  type: string
                  title: id
                  description: A claim's ID.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by the claim's status.
              - type: array
                description: Filter by claim statuses.
                items:
                  type: string
                  title: status
                  description: A claim status.
        - name: created_at
          in: query
          description: Filter by a claim's creation date.
          required: false
          schema:
            type: object
            description: Filter by a claim's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a claim's update date.
          required: false
          schema:
            type: object
            description: Filter by a claim's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a claim's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a claim's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminClaimUpdateOutboundShipping'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.updateOutboundShipping(
              "claim_123", 
              "ordchact_123",
              {
                custom_amount: 10
              },
            )
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/claims/{id}/outbound/shipping-method/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateClaimShippingMethodWorkflow
      x-events: []
    delete:
      operationId: DeleteClaimsIdOutboundShippingMethodAction_id
      summary: Remove Outbound Shipping Method from Claim
      x-sidebar-summary: Remove Outbound Shipping Method
      description: |
        Remove the shipping method for delivering outbound items in the claim using the `ID` of the method's `SHIPPING_ADD` action.

        Every shipping method has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.deleteOutboundShipping(
              "claim_123", 
              "ordchact_123",
            )
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: 'curl -X DELETE ''{backend_url}/admin/claims/{id}/outbound/shipping-method/{action_id}'' \ -H ''Authorization: Bearer {jwt_token}'''
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeClaimShippingMethodWorkflow
      x-events: []
  /admin/claims/{id}/request:
    post:
      operationId: PostClaimsIdRequest
      summary: Confirm a Claim Request
      x-sidebar-summary: Confirm Claim
      description: Confirm a claim request, applying its changes on the associated order.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by the claim's ID.
              - type: array
                description: Filter by claim IDs.
                items:
                  type: string
                  title: id
                  description: A claim's ID.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by the claim's status.
              - type: array
                description: Filter by claim statuses.
                items:
                  type: string
                  title: status
                  description: A claim status.
        - name: created_at
          in: query
          description: Filter by a claim's creation date.
          required: false
          schema:
            type: object
            description: Filter by a claim's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a claim's update date.
          required: false
          schema:
            type: object
            description: Filter by a claim's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a claim's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a claim's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.request(
              "claim_123", 
              {},
            )
            .then(({ claim }) => {
              console.log(claim)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/claims/{id}/request' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimRequestResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: confirmClaimRequestWorkflow
      x-events:
        - name: order.claim_created
          payload: |-
            ```ts
            {
              order_id, // The ID of the order
              claim_id, // The ID of the claim
            }
            ```
          description: Emitted when a claim is created for an order.
          deprecated: false
    delete:
      operationId: DeleteClaimsIdRequest
      summary: Cancel Claim Request
      description: Cancel a requested claim.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The claim's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.claim.cancelRequest(
              "claim_123", 
            )
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/claims/{id}/request' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Claims
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminClaimDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: cancelBeginOrderClaimWorkflow
      x-events: []
  /admin/collections:
    get:
      operationId: GetCollections
      summary: List Collections
      description: Retrieve a list of collections. The collections can be filtered by fields such as `id`. The collections can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: deleted_at
          in: query
          description: Filter by the collection's deletion date.
          required: false
          schema:
            type: object
            description: Filter by the collection's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: q
          in: query
          description: Search term to filter the collection's searchable properties by.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the collection's searchable properties by.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a collection's ID.
              - type: array
                description: Filter by collection IDs.
                items:
                  type: string
                  title: id
                  description: The collection's ID.
        - name: handle
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: handle
                description: Filter by a collection's handle.
              - type: array
                description: Filter by collection handles.
                items:
                  type: string
                  title: handle
                  description: The collection's handle.
        - name: title
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: title
                description: Filter by a collection's title.
              - type: array
                description: Filter by collection titles.
                items:
                  type: string
                  title: title
                  description: The collection's title.
        - name: created_at
          in: query
          description: Filter by the collection's creation date.
          required: false
          schema:
            type: object
            description: Filter by the collection's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the collection's update date.
          required: false
          schema:
            type: object
            description: Filter by the collection's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productCollection.list()
            .then(({ collections, count, limit, offset }) => {
              console.log(collections)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/collections' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Collections
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCollectionListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostCollections
      summary: Create Collection
      description: Create a collection.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The collection's details.
                  required:
                    - title
                  properties:
                    title:
                      type: string
                      title: title
                      description: The collection's title.
                    handle:
                      type: string
                      title: handle
                      description: The collection's handle.
                    metadata:
                      type: object
                      description: The collection's metadata. Can hold custom key-value pairs.
                - type: object
                  description: The collection's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: the product collection's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productCollection.create({
              title: "Summer Collection"
            })
            .then(({ collection }) => {
              console.log(collection)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/collections' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "title": "{value}",
              "metadata": {}
            }'
      tags:
        - Collections
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCollectionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createCollectionsWorkflow
      x-events:
        - name: product-collection.created
          payload: |-
            ```ts
            {
              id, // The ID of the product collection
            }
            ```
          description: Emitted when product collections are created.
          deprecated: false
  /admin/collections/{id}:
    get:
      operationId: GetCollectionsId
      summary: Get a Collection
      description: Retrieve a collection by its ID. You can expand the collection's relations or select the fields that should be returned using the query parameters.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The collection's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productCollection.retrieve("pcol_123")
            .then(({ collection }) => {
              console.log(collection)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/collections/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Collections
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCollectionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostCollectionsId
      summary: Update a Collection
      description: Update a collection's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The collection's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The details to update in a collection.
                  properties:
                    title:
                      type: string
                      title: title
                      description: The collection's title.
                    handle:
                      type: string
                      title: handle
                      description: The collection's handle.
                    metadata:
                      type: object
                      description: The collection's metadata.
                - type: object
                  description: The details to update in a collection.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The details to update in a collection.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productCollection.update("pcol_123", {
              title: "Summer Collection"
            })
            .then(({ collection }) => {
              console.log(collection)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/collections/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "metadata": {}
            }'
      tags:
        - Collections
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCollectionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateCollectionsWorkflow
      x-events:
        - name: product-collection.updated
          payload: |-
            ```ts
            {
              id, // The ID of the product collection
            }
            ```
          description: Emitted when product collections are updated.
          deprecated: false
    delete:
      operationId: DeleteCollectionsId
      summary: Delete a Collection
      description: Delete a product collection.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The collection's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productCollection.delete("pcol_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/collections/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Collections
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCollectionDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteCollectionsWorkflow
      x-events:
        - name: product-collection.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the product collection
            }
            ```
          description: Emitted when product collections are deleted.
          deprecated: false
  /admin/collections/{id}/products:
    post:
      operationId: PostCollectionsIdProducts
      summary: Manage Products of a Collection
      x-sidebar-summary: Manage Products
      description: Manage the products of a collection by adding or removing them from the collection.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The collection's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchLink'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productCollection.updateProducts("pcol_123", {
              add: ["prod_123"],
              remove: ["prod_321"]
            })
            .then(({ collection }) => {
              console.log(collection)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/collections/{id}/products' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Collections
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCollectionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchLinkProductsToCollectionWorkflow
      x-events: []
  /admin/currencies:
    get:
      operationId: GetCurrencies
      summary: List Currencies
      description: Retrieve a list of currencies. The currencies can be filtered by fields such as `id`. The currencies can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: The search term to filter the currency's searchable properties by.
          required: false
          schema:
            type: string
            title: q
            description: The search term to filter the currency's searchable properties by.
        - name: code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: code
                description: Filter by a currency code.
              - type: array
                description: Filter by currency codes.
                items:
                  type: string
                  title: code
                  description: A currency code.
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.currency.list()
            .then(({ currencies, count, limit, offset }) => {
              console.log(currencies)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/currencies' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Currencies
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCurrencyListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/currencies/{code}:
    get:
      operationId: GetCurrenciesCode
      summary: Get a Currency
      description: Retrieve a currency by its code. You can expand the currency's relations or select the fields that should be returned using the query parameters.
      x-authenticated: true
      parameters:
        - name: code
          in: path
          description: The currency's code.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.currency.retrieve("usd")
            .then(({ currency }) => {
              console.log(currency)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/currencies/{code}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Currencies
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCurrencyResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/customer-groups:
    get:
      operationId: GetCustomerGroups
      summary: List Customer Groups
      description: Retrieve a list of customer groups. The customer groups can be filtered by fields such as `id`. The customer groups can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the customer group's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the customer group's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a customer group's IDs.
              - type: array
                description: Filter by customer group IDs.
                items:
                  type: string
                  title: id
                  description: A customer group's ID.
        - name: name
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: name
                description: Filter by a customer group's name.
              - type: array
                description: Filter by customer group names.
                items:
                  type: string
                  title: name
                  description: A customer group's name.
        - name: customers
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: customers
                description: Filter by the ID of a customer to retrieve its groups.
              - type: array
                description: Filter by customer IDs to retrieve their groups.
                items:
                  type: string
                  title: customers
                  description: A customer's ID.
              - $ref: '#/components/schemas/AdminCustomerInGroupFilters'
        - name: created_by
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: created_by
                description: Filter by an ID of a user to retrieve the customer groups they created.
              - type: array
                description: Filter by the IDs of users to retrieve the customer groups they created.
                items:
                  type: string
                  title: created_by
                  description: The user's ID.
        - name: created_at
          in: query
          description: Filter the customer group by its creation date.
          required: false
          schema:
            type: object
            description: Filter the customer group by its creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter the customer groups by their update date.
          required: false
          schema:
            type: object
            description: Filter the customer groups by their update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter the customer groups by their deletion date.
          required: false
          schema:
            type: object
            description: Filter the customer groups by their deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customerGroup.list()
            .then(({ customer_groups, count, limit, offset }) => {
              console.log(customer_groups)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/customer-groups' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Customer Groups
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of customer groups.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items retrieved.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items
                  - type: object
                    description: The paginated list of customer groups.
                    required:
                      - customer_groups
                    properties:
                      customer_groups:
                        type: array
                        description: The list of customer groups.
                        items:
                          $ref: '#/components/schemas/AdminCustomerGroup'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostCustomerGroups
      summary: Create Customer Group
      description: Create a customer group.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateCustomerGroup'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customerGroup.create({
              name: "VIP"
            })
            .then(({ customer_group }) => {
              console.log(customer_group)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/customer-groups' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Solon",
              "metadata": {}
            }'
      tags:
        - Customer Groups
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCustomerGroupResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createCustomerGroupsWorkflow
      x-events: []
  /admin/customer-groups/{id}:
    get:
      operationId: GetCustomerGroupsId
      summary: Get a Customer Group
      description: Retrieve a customer group by its ID. You can expand the customer group's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The customer group's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customerGroup.retrieve("cusgroup_123")
            .then(({ customer_group }) => {
              console.log(customer_group)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/customer-groups/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Customer Groups
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCustomerGroupResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostCustomerGroupsId
      summary: Update a Customer Group
      description: Update a customer group's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The customer group's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateCustomerGroup'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customerGroup.update("cusgroup_123", {
              name: "VIP"
            })
            .then(({ customer_group }) => {
              console.log(customer_group)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/customer-groups/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Corbin",
              "metadata": {}
            }'
      tags:
        - Customer Groups
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCustomerGroupResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateCustomerGroupsWorkflow
      x-events: []
    delete:
      operationId: DeleteCustomerGroupsId
      summary: Delete a Customer Group
      description: |
        Delete a customer group. Customers in the group aren't deleted.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The customer group's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customerGroup.delete("cusgroup_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/customer-groups/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Customer Groups
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The customer group's ID.
                  object:
                    type: string
                    title: object
                    description: The customer group's object.
                  deleted:
                    type: boolean
                    title: deleted
                    description: The customer group's deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteCustomerGroupsWorkflow
      x-events: []
  /admin/customer-groups/{id}/customers:
    post:
      operationId: PostCustomerGroupsIdCustomers
      summary: Manage Customers of a Customer Group
      x-sidebar-summary: Manage Customers
      description: Manage the customers of a group to add or remove them from the group.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The customer group's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchLink'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customerGroup.batchCustomers("cusgroup_123", {
              add: ["cus_123"],
              remove: ["cus_321"]
            })
            .then(({ customer_group }) => {
              console.log(customer_group)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/customer-groups/{id}/customers' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Customer Groups
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCustomerGroupResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: linkCustomersToCustomerGroupWorkflow
      x-events: []
  /admin/customers:
    get:
      operationId: GetCustomers
      summary: List Customers
      description: Retrieve a list of customers. The customers can be filtered by fields such as `id`. The customers can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: groups
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: groups
                description: Filter by a customer group's ID to retrieve customers that belong to it.
              - $ref: '#/components/schemas/CustomerGroupInCustomerFilters'
              - type: array
                description: Filter by customer group IDs to retrieve customers that belong to them.
                items:
                  type: string
                  title: groups
                  description: The customer group's ID.
        - name: q
          in: query
          description: Search term to filter the customer's searchable properties by.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the customer's searchable properties by.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a customer's ID.
              - type: array
                description: Filter by customer IDs.
                items:
                  type: string
                  title: id
                  description: A customer's ID.
              - type: object
                description: Filters to apply on the customer ID.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          oneOf:
                            - type: string
                              title: $eq
                              description: Filter by an exact match.
                            - type: array
                              description: Filter by exact matches.
                              items:
                                type: string
                                title: $eq
                                description: Filter by an exact match.
                  $ne:
                    oneOf:
                      - type: string
                        title: $ne
                        description: Filter by values not equal to this parameter.
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $ne
                          description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $in
                          description: Filter by matching value.
                        - type: array
                          description: Filter by values in this array.
                          items:
                            type: string
                            title: $in
                            description: Filter matching values.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $nin
                          description: Filter by values not matching this parameter.
                        - type: array
                          description: Filter by values not in this array.
                          items:
                            type: string
                            title: $nin
                            description: Filter by values not matching this parameter.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                        properties:
                          $and:
                            type: array
                            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $and
                          $or:
                            type: array
                            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $or
                          $eq:
                            oneOf:
                              - type: string
                                title: $eq
                                description: Filter by an exact match.
                              - type: array
                                description: Filter by exact matches.
                                items:
                                  type: string
                                  title: $eq
                                  description: Filter by an exact match.
                          $ne:
                            type: string
                            title: $ne
                            description: Filter by values not equal to this parameter.
                          $in:
                            type: array
                            description: Filter by values in this array.
                            items:
                              type: string
                              title: $in
                              description: Filter by values in this array.
                          $nin:
                            type: array
                            description: Filter by values not in this array.
                            items:
                              type: string
                              title: $nin
                              description: Filter by values not in this array.
                          $not:
                            oneOf:
                              - type: string
                                title: $not
                                description: Filter by values not matching this parameter.
                              - type: object
                                description: Filter by values not matching the conditions in this parameter.
                              - type: array
                                description: Filter by values not in this array.
                                items:
                                  type: string
                                  title: $not
                                  description: Filter by values not matching this parameter.
                          $gt:
                            type: string
                            title: $gt
                            description: Filter by values greater than this parameter. Useful for numbers and dates only.
                          $gte:
                            type: string
                            title: $gte
                            description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                          $lt:
                            type: string
                            title: $lt
                            description: Filter by values less than this parameter. Useful for numbers and dates only.
                          $lte:
                            type: string
                            title: $lte
                            description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                          $like:
                            type: string
                            title: $like
                            description: Apply a `like` filter. Useful for strings only.
                          $re:
                            type: string
                            title: $re
                            description: Apply a regex filter. Useful for strings only.
                          $ilike:
                            type: string
                            title: $ilike
                            description: Apply a case-insensitive `like` filter. Useful for strings only.
                          $fulltext:
                            type: string
                            title: $fulltext
                            description: Filter to apply on full-text properties.
                          $overlap:
                            type: array
                            description: Filter arrays that have overlapping values with this parameter.
                            items:
                              type: string
                              title: $overlap
                              description: Filter arrays that have overlapping values with this parameter.
                          $contains:
                            type: array
                            description: Filter arrays that contain some of the values of this parameter.
                            items:
                              type: string
                              title: $contains
                              description: Filter arrays that contain some of the values of this parameter.
                          $contained:
                            type: array
                            description: Filter arrays that contain all values of this parameter.
                            items:
                              type: string
                              title: $contained
                              description: Filter arrays that contain all values of this parameter.
                          $exists:
                            type: boolean
                            title: $exists
                            description: Filter by whether a value for this parameter exists (not `null`).
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          oneOf:
                            - type: string
                              title: $not
                              description: Filter by values not matching this parameter.
                            - type: object
                              description: Filter by values not matching the conditions in this parameter.
                              properties:
                                $and:
                                  type: array
                                  description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $and
                                $or:
                                  type: array
                                  description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $or
                                $eq:
                                  oneOf:
                                    - type: string
                                      title: $eq
                                      description: Filter by an exact match.
                                    - type: array
                                      description: Filter by exact matches.
                                      items:
                                        type: string
                                        title: $eq
                                        description: Filter by an exact match.
                                $ne:
                                  type: string
                                  title: $ne
                                  description: Filter by values not equal to this parameter.
                                $in:
                                  type: array
                                  description: Filter by values in this array.
                                  items:
                                    type: string
                                    title: $in
                                    description: Filter by exact matches.
                                $nin:
                                  type: array
                                  description: Filter by values not in this array.
                                  items:
                                    type: string
                                    title: $nin
                                    description: Filter by values not matching this parameter.
                                $not:
                                  oneOf:
                                    - type: string
                                      title: $not
                                      description: Filter by values not matching this parameter.
                                    - type: object
                                      description: Filter by values not matching the conditions in this parameter.
                                    - type: array
                                      description: Filter by values not in this array.
                                      items:
                                        type: string
                                        title: $not
                                        description: Filter by values not matching this parameter.
                                $gt:
                                  type: string
                                  title: $gt
                                  description: Filter by values greater than this parameter. Useful for numbers and dates only.
                                $gte:
                                  type: string
                                  title: $gte
                                  description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                                $lt:
                                  type: string
                                  title: $lt
                                  description: Filter by values less than this parameter. Useful for numbers and dates only.
                                $lte:
                                  type: string
                                  title: $lte
                                  description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                                $like:
                                  type: string
                                  title: $like
                                  description: Apply a `like` filter. Useful for strings only.
                                $re:
                                  type: string
                                  title: $re
                                  description: Apply a regex filter. Useful for strings only.
                                $ilike:
                                  type: string
                                  title: $ilike
                                  description: Apply a case-insensitive `like` filter. Useful for strings only.
                                $fulltext:
                                  type: string
                                  title: $fulltext
                                  description: Filter to apply on full-text properties.
                                $overlap:
                                  type: array
                                  description: Filter arrays that have overlapping values with this parameter.
                                  items:
                                    type: string
                                    title: $overlap
                                    description: Filter arrays that have overlapping values with this parameter.
                                $contains:
                                  type: array
                                  description: Filter arrays that contain some of the values of this parameter.
                                  items:
                                    type: string
                                    title: $contains
                                    description: Filter arrays that contain some of the values of this parameter.
                                $contained:
                                  type: array
                                  description: Filter arrays that contain all values of this parameter.
                                  items:
                                    type: string
                                    title: $contained
                                    description: Filter arrays that contain all values of this parameter.
                                $exists:
                                  type: boolean
                                  title: $exists
                                  description: Filter by whether a value for this parameter exists (not `null`).
                  $gt:
                    oneOf:
                      - type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gt
                          description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    oneOf:
                      - type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gte
                          description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    oneOf:
                      - type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lt
                          description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    oneOf:
                      - type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lte
                          description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: email
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: email
                description: Filter by a customer email.
                format: email
              - type: array
                description: Filter by customer emails.
                items:
                  type: string
                  title: email
                  description: A customer's email.
                  format: email
              - type: object
                description: Filter by conditions on the customer email.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          oneOf:
                            - type: string
                              title: $eq
                              description: Filter by an exact match.
                            - type: array
                              description: Filter by exact matches.
                              items:
                                type: string
                                title: $eq
                                description: Filter by an exact match.
                  $ne:
                    oneOf:
                      - type: string
                        title: $ne
                        description: Filter by values not equal to this parameter.
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $ne
                          description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $in
                          description: Filter by matching value.
                        - type: array
                          description: Filter by values in this array.
                          items:
                            type: string
                            title: $in
                            description: Filter matching values.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $nin
                          description: Filter by values not matching this parameter.
                        - type: array
                          description: Filter by values not in this array.
                          items:
                            type: string
                            title: $nin
                            description: Filter by values not matching this parameter.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                        properties:
                          $and:
                            type: array
                            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $and
                          $or:
                            type: array
                            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $or
                          $eq:
                            oneOf:
                              - type: string
                                title: $eq
                                description: Filter by an exact match.
                              - type: array
                                description: Filter by exact matches.
                                items:
                                  type: string
                                  title: $eq
                                  description: Filter by an exact match.
                          $ne:
                            type: string
                            title: $ne
                            description: Filter by values not equal to this parameter.
                          $in:
                            type: array
                            description: Filter by values in this array.
                            items:
                              type: string
                              title: $in
                              description: Filter by values in this array.
                          $nin:
                            type: array
                            description: Filter by values not in this array.
                            items:
                              type: string
                              title: $nin
                              description: Filter by values not in this array.
                          $not:
                            oneOf:
                              - type: string
                                title: $not
                                description: Filter by values not matching this parameter.
                              - type: object
                                description: Filter by values not matching the conditions in this parameter.
                              - type: array
                                description: Filter by values not in this array.
                                items:
                                  type: string
                                  title: $not
                                  description: Filter by values not matching this parameter.
                          $gt:
                            type: string
                            title: $gt
                            description: Filter by values greater than this parameter. Useful for numbers and dates only.
                          $gte:
                            type: string
                            title: $gte
                            description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                          $lt:
                            type: string
                            title: $lt
                            description: Filter by values less than this parameter. Useful for numbers and dates only.
                          $lte:
                            type: string
                            title: $lte
                            description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                          $like:
                            type: string
                            title: $like
                            description: Apply a `like` filter. Useful for strings only.
                          $re:
                            type: string
                            title: $re
                            description: Apply a regex filter. Useful for strings only.
                          $ilike:
                            type: string
                            title: $ilike
                            description: Apply a case-insensitive `like` filter. Useful for strings only.
                          $fulltext:
                            type: string
                            title: $fulltext
                            description: Filter to apply on full-text properties.
                          $overlap:
                            type: array
                            description: Filter arrays that have overlapping values with this parameter.
                            items:
                              type: string
                              title: $overlap
                              description: Filter arrays that have overlapping values with this parameter.
                          $contains:
                            type: array
                            description: Filter arrays that contain some of the values of this parameter.
                            items:
                              type: string
                              title: $contains
                              description: Filter arrays that contain some of the values of this parameter.
                          $contained:
                            type: array
                            description: Filter arrays that contain all values of this parameter.
                            items:
                              type: string
                              title: $contained
                              description: Filter arrays that contain all values of this parameter.
                          $exists:
                            type: boolean
                            title: $exists
                            description: Filter by whether a value for this parameter exists (not `null`).
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          oneOf:
                            - type: string
                              title: $not
                              description: Filter by values not matching this parameter.
                            - type: object
                              description: Filter by values not matching the conditions in this parameter.
                              properties:
                                $and:
                                  type: array
                                  description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $and
                                $or:
                                  type: array
                                  description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $or
                                $eq:
                                  oneOf:
                                    - type: string
                                      title: $eq
                                      description: Filter by an exact match.
                                    - type: array
                                      description: Filter by exact matches.
                                      items:
                                        type: string
                                        title: $eq
                                        description: Filter by an exact match.
                                $ne:
                                  type: string
                                  title: $ne
                                  description: Filter by values not equal to this parameter.
                                $in:
                                  type: array
                                  description: Filter by values in this array.
                                  items:
                                    type: string
                                    title: $in
                                    description: Filter by exact matches.
                                $nin:
                                  type: array
                                  description: Filter by values not in this array.
                                  items:
                                    type: string
                                    title: $nin
                                    description: Filter by values not matching this parameter.
                                $not:
                                  oneOf:
                                    - type: string
                                      title: $not
                                      description: Filter by values not matching this parameter.
                                    - type: object
                                      description: Filter by values not matching the conditions in this parameter.
                                    - type: array
                                      description: Filter by values not in this array.
                                      items:
                                        type: string
                                        title: $not
                                        description: Filter by values not matching this parameter.
                                $gt:
                                  type: string
                                  title: $gt
                                  description: Filter by values greater than this parameter. Useful for numbers and dates only.
                                $gte:
                                  type: string
                                  title: $gte
                                  description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                                $lt:
                                  type: string
                                  title: $lt
                                  description: Filter by values less than this parameter. Useful for numbers and dates only.
                                $lte:
                                  type: string
                                  title: $lte
                                  description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                                $like:
                                  type: string
                                  title: $like
                                  description: Apply a `like` filter. Useful for strings only.
                                $re:
                                  type: string
                                  title: $re
                                  description: Apply a regex filter. Useful for strings only.
                                $ilike:
                                  type: string
                                  title: $ilike
                                  description: Apply a case-insensitive `like` filter. Useful for strings only.
                                $fulltext:
                                  type: string
                                  title: $fulltext
                                  description: Filter to apply on full-text properties.
                                $overlap:
                                  type: array
                                  description: Filter arrays that have overlapping values with this parameter.
                                  items:
                                    type: string
                                    title: $overlap
                                    description: Filter arrays that have overlapping values with this parameter.
                                $contains:
                                  type: array
                                  description: Filter arrays that contain some of the values of this parameter.
                                  items:
                                    type: string
                                    title: $contains
                                    description: Filter arrays that contain some of the values of this parameter.
                                $contained:
                                  type: array
                                  description: Filter arrays that contain all values of this parameter.
                                  items:
                                    type: string
                                    title: $contained
                                    description: Filter arrays that contain all values of this parameter.
                                $exists:
                                  type: boolean
                                  title: $exists
                                  description: Filter by whether a value for this parameter exists (not `null`).
                  $gt:
                    oneOf:
                      - type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gt
                          description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    oneOf:
                      - type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gte
                          description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    oneOf:
                      - type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lt
                          description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    oneOf:
                      - type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lte
                          description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: company_name
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: company_name
                description: Filter by a customer's company name.
              - type: array
                description: Filter by customer company names.
                items:
                  type: string
                  title: company_name
                  description: The customer's company name.
              - type: object
                description: Filter by conditions on the customer's company name.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          oneOf:
                            - type: string
                              title: $eq
                              description: Filter by an exact match.
                            - type: array
                              description: Filter by exact matches.
                              items:
                                type: string
                                title: $eq
                                description: Filter by an exact match.
                  $ne:
                    oneOf:
                      - type: string
                        title: $ne
                        description: Filter by values not equal to this parameter.
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $ne
                          description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $in
                          description: Filter by matching value.
                        - type: array
                          description: Filter by values in this array.
                          items:
                            type: string
                            title: $in
                            description: Filter matching values.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $nin
                          description: Filter by values not matching this parameter.
                        - type: array
                          description: Filter by values not in this array.
                          items:
                            type: string
                            title: $nin
                            description: Filter by values not matching this parameter.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                        properties:
                          $and:
                            type: array
                            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $and
                          $or:
                            type: array
                            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $or
                          $eq:
                            oneOf:
                              - type: string
                                title: $eq
                                description: Filter by an exact match.
                              - type: array
                                description: Filter by exact matches.
                                items:
                                  type: string
                                  title: $eq
                                  description: Filter by an exact match.
                          $ne:
                            type: string
                            title: $ne
                            description: Filter by values not equal to this parameter.
                          $in:
                            type: array
                            description: Filter by values in this array.
                            items:
                              type: string
                              title: $in
                              description: Filter by values in this array.
                          $nin:
                            type: array
                            description: Filter by values not in this array.
                            items:
                              type: string
                              title: $nin
                              description: Filter by values not in this array.
                          $not:
                            oneOf:
                              - type: string
                                title: $not
                                description: Filter by values not matching this parameter.
                              - type: object
                                description: Filter by values not matching the conditions in this parameter.
                              - type: array
                                description: Filter by values not in this array.
                                items:
                                  type: string
                                  title: $not
                                  description: Filter by values not matching this parameter.
                          $gt:
                            type: string
                            title: $gt
                            description: Filter by values greater than this parameter. Useful for numbers and dates only.
                          $gte:
                            type: string
                            title: $gte
                            description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                          $lt:
                            type: string
                            title: $lt
                            description: Filter by values less than this parameter. Useful for numbers and dates only.
                          $lte:
                            type: string
                            title: $lte
                            description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                          $like:
                            type: string
                            title: $like
                            description: Apply a `like` filter. Useful for strings only.
                          $re:
                            type: string
                            title: $re
                            description: Apply a regex filter. Useful for strings only.
                          $ilike:
                            type: string
                            title: $ilike
                            description: Apply a case-insensitive `like` filter. Useful for strings only.
                          $fulltext:
                            type: string
                            title: $fulltext
                            description: Filter to apply on full-text properties.
                          $overlap:
                            type: array
                            description: Filter arrays that have overlapping values with this parameter.
                            items:
                              type: string
                              title: $overlap
                              description: Filter arrays that have overlapping values with this parameter.
                          $contains:
                            type: array
                            description: Filter arrays that contain some of the values of this parameter.
                            items:
                              type: string
                              title: $contains
                              description: Filter arrays that contain some of the values of this parameter.
                          $contained:
                            type: array
                            description: Filter arrays that contain all values of this parameter.
                            items:
                              type: string
                              title: $contained
                              description: Filter arrays that contain all values of this parameter.
                          $exists:
                            type: boolean
                            title: $exists
                            description: Filter by whether a value for this parameter exists (not `null`).
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          oneOf:
                            - type: string
                              title: $not
                              description: Filter by values not matching this parameter.
                            - type: object
                              description: Filter by values not matching the conditions in this parameter.
                              properties:
                                $and:
                                  type: array
                                  description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $and
                                $or:
                                  type: array
                                  description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $or
                                $eq:
                                  oneOf:
                                    - type: string
                                      title: $eq
                                      description: Filter by an exact match.
                                    - type: array
                                      description: Filter by exact matches.
                                      items:
                                        type: string
                                        title: $eq
                                        description: Filter by an exact match.
                                $ne:
                                  type: string
                                  title: $ne
                                  description: Filter by values not equal to this parameter.
                                $in:
                                  type: array
                                  description: Filter by values in this array.
                                  items:
                                    type: string
                                    title: $in
                                    description: Filter by exact matches.
                                $nin:
                                  type: array
                                  description: Filter by values not in this array.
                                  items:
                                    type: string
                                    title: $nin
                                    description: Filter by values not matching this parameter.
                                $not:
                                  oneOf:
                                    - type: string
                                      title: $not
                                      description: Filter by values not matching this parameter.
                                    - type: object
                                      description: Filter by values not matching the conditions in this parameter.
                                    - type: array
                                      description: Filter by values not in this array.
                                      items:
                                        type: string
                                        title: $not
                                        description: Filter by values not matching this parameter.
                                $gt:
                                  type: string
                                  title: $gt
                                  description: Filter by values greater than this parameter. Useful for numbers and dates only.
                                $gte:
                                  type: string
                                  title: $gte
                                  description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                                $lt:
                                  type: string
                                  title: $lt
                                  description: Filter by values less than this parameter. Useful for numbers and dates only.
                                $lte:
                                  type: string
                                  title: $lte
                                  description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                                $like:
                                  type: string
                                  title: $like
                                  description: Apply a `like` filter. Useful for strings only.
                                $re:
                                  type: string
                                  title: $re
                                  description: Apply a regex filter. Useful for strings only.
                                $ilike:
                                  type: string
                                  title: $ilike
                                  description: Apply a case-insensitive `like` filter. Useful for strings only.
                                $fulltext:
                                  type: string
                                  title: $fulltext
                                  description: Filter to apply on full-text properties.
                                $overlap:
                                  type: array
                                  description: Filter arrays that have overlapping values with this parameter.
                                  items:
                                    type: string
                                    title: $overlap
                                    description: Filter arrays that have overlapping values with this parameter.
                                $contains:
                                  type: array
                                  description: Filter arrays that contain some of the values of this parameter.
                                  items:
                                    type: string
                                    title: $contains
                                    description: Filter arrays that contain some of the values of this parameter.
                                $contained:
                                  type: array
                                  description: Filter arrays that contain all values of this parameter.
                                  items:
                                    type: string
                                    title: $contained
                                    description: Filter arrays that contain all values of this parameter.
                                $exists:
                                  type: boolean
                                  title: $exists
                                  description: Filter by whether a value for this parameter exists (not `null`).
                  $gt:
                    oneOf:
                      - type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gt
                          description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    oneOf:
                      - type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gte
                          description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    oneOf:
                      - type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lt
                          description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    oneOf:
                      - type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lte
                          description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: first_name
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: first_name
                description: Filter by a customer's first name.
              - type: array
                description: Filter by customer first names.
                items:
                  type: string
                  title: first_name
                  description: A customer's first name.
              - type: object
                description: Filter by conditions on the first name.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          oneOf:
                            - type: string
                              title: $eq
                              description: Filter by an exact match.
                            - type: array
                              description: Filter by exact matches.
                              items:
                                type: string
                                title: $eq
                                description: Filter by an exact match.
                  $ne:
                    oneOf:
                      - type: string
                        title: $ne
                        description: Filter by values not equal to this parameter.
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $ne
                          description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $in
                          description: Filter by matching value.
                        - type: array
                          description: Filter by values in this array.
                          items:
                            type: string
                            title: $in
                            description: Filter matching values.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $nin
                          description: Filter by values not matching this parameter.
                        - type: array
                          description: Filter by values not in this array.
                          items:
                            type: string
                            title: $nin
                            description: Filter by values not matching this parameter.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                        properties:
                          $and:
                            type: array
                            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $and
                          $or:
                            type: array
                            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $or
                          $eq:
                            oneOf:
                              - type: string
                                title: $eq
                                description: Filter by an exact match.
                              - type: array
                                description: Filter by exact matches.
                                items:
                                  type: string
                                  title: $eq
                                  description: Filter by an exact match.
                          $ne:
                            type: string
                            title: $ne
                            description: Filter by values not equal to this parameter.
                          $in:
                            type: array
                            description: Filter by values in this array.
                            items:
                              type: string
                              title: $in
                              description: Filter by values in this array.
                          $nin:
                            type: array
                            description: Filter by values not in this array.
                            items:
                              type: string
                              title: $nin
                              description: Filter by values not in this array.
                          $not:
                            oneOf:
                              - type: string
                                title: $not
                                description: Filter by values not matching this parameter.
                              - type: object
                                description: Filter by values not matching the conditions in this parameter.
                              - type: array
                                description: Filter by values not in this array.
                                items:
                                  type: string
                                  title: $not
                                  description: Filter by values not matching this parameter.
                          $gt:
                            type: string
                            title: $gt
                            description: Filter by values greater than this parameter. Useful for numbers and dates only.
                          $gte:
                            type: string
                            title: $gte
                            description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                          $lt:
                            type: string
                            title: $lt
                            description: Filter by values less than this parameter. Useful for numbers and dates only.
                          $lte:
                            type: string
                            title: $lte
                            description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                          $like:
                            type: string
                            title: $like
                            description: Apply a `like` filter. Useful for strings only.
                          $re:
                            type: string
                            title: $re
                            description: Apply a regex filter. Useful for strings only.
                          $ilike:
                            type: string
                            title: $ilike
                            description: Apply a case-insensitive `like` filter. Useful for strings only.
                          $fulltext:
                            type: string
                            title: $fulltext
                            description: Filter to apply on full-text properties.
                          $overlap:
                            type: array
                            description: Filter arrays that have overlapping values with this parameter.
                            items:
                              type: string
                              title: $overlap
                              description: Filter arrays that have overlapping values with this parameter.
                          $contains:
                            type: array
                            description: Filter arrays that contain some of the values of this parameter.
                            items:
                              type: string
                              title: $contains
                              description: Filter arrays that contain some of the values of this parameter.
                          $contained:
                            type: array
                            description: Filter arrays that contain all values of this parameter.
                            items:
                              type: string
                              title: $contained
                              description: Filter arrays that contain all values of this parameter.
                          $exists:
                            type: boolean
                            title: $exists
                            description: Filter by whether a value for this parameter exists (not `null`).
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          oneOf:
                            - type: string
                              title: $not
                              description: Filter by values not matching this parameter.
                            - type: object
                              description: Filter by values not matching the conditions in this parameter.
                              properties:
                                $and:
                                  type: array
                                  description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $and
                                $or:
                                  type: array
                                  description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $or
                                $eq:
                                  oneOf:
                                    - type: string
                                      title: $eq
                                      description: Filter by an exact match.
                                    - type: array
                                      description: Filter by exact matches.
                                      items:
                                        type: string
                                        title: $eq
                                        description: Filter by an exact match.
                                $ne:
                                  type: string
                                  title: $ne
                                  description: Filter by values not equal to this parameter.
                                $in:
                                  type: array
                                  description: Filter by values in this array.
                                  items:
                                    type: string
                                    title: $in
                                    description: Filter by exact matches.
                                $nin:
                                  type: array
                                  description: Filter by values not in this array.
                                  items:
                                    type: string
                                    title: $nin
                                    description: Filter by values not matching this parameter.
                                $not:
                                  oneOf:
                                    - type: string
                                      title: $not
                                      description: Filter by values not matching this parameter.
                                    - type: object
                                      description: Filter by values not matching the conditions in this parameter.
                                    - type: array
                                      description: Filter by values not in this array.
                                      items:
                                        type: string
                                        title: $not
                                        description: Filter by values not matching this parameter.
                                $gt:
                                  type: string
                                  title: $gt
                                  description: Filter by values greater than this parameter. Useful for numbers and dates only.
                                $gte:
                                  type: string
                                  title: $gte
                                  description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                                $lt:
                                  type: string
                                  title: $lt
                                  description: Filter by values less than this parameter. Useful for numbers and dates only.
                                $lte:
                                  type: string
                                  title: $lte
                                  description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                                $like:
                                  type: string
                                  title: $like
                                  description: Apply a `like` filter. Useful for strings only.
                                $re:
                                  type: string
                                  title: $re
                                  description: Apply a regex filter. Useful for strings only.
                                $ilike:
                                  type: string
                                  title: $ilike
                                  description: Apply a case-insensitive `like` filter. Useful for strings only.
                                $fulltext:
                                  type: string
                                  title: $fulltext
                                  description: Filter to apply on full-text properties.
                                $overlap:
                                  type: array
                                  description: Filter arrays that have overlapping values with this parameter.
                                  items:
                                    type: string
                                    title: $overlap
                                    description: Filter arrays that have overlapping values with this parameter.
                                $contains:
                                  type: array
                                  description: Filter arrays that contain some of the values of this parameter.
                                  items:
                                    type: string
                                    title: $contains
                                    description: Filter arrays that contain some of the values of this parameter.
                                $contained:
                                  type: array
                                  description: Filter arrays that contain all values of this parameter.
                                  items:
                                    type: string
                                    title: $contained
                                    description: Filter arrays that contain all values of this parameter.
                                $exists:
                                  type: boolean
                                  title: $exists
                                  description: Filter by whether a value for this parameter exists (not `null`).
                  $gt:
                    oneOf:
                      - type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gt
                          description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    oneOf:
                      - type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gte
                          description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    oneOf:
                      - type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lt
                          description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    oneOf:
                      - type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lte
                          description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: last_name
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: last_name
                description: Filter by a customer's last name.
              - type: array
                description: Filter by customer last names.
                items:
                  type: string
                  title: last_name
                  description: A customer's last name.
              - type: object
                description: Filter by conditions on a customer's last name.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          oneOf:
                            - type: string
                              title: $eq
                              description: Filter by an exact match.
                            - type: array
                              description: Filter by exact matches.
                              items:
                                type: string
                                title: $eq
                                description: Filter by an exact match.
                  $ne:
                    oneOf:
                      - type: string
                        title: $ne
                        description: Filter by values not equal to this parameter.
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $ne
                          description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $in
                          description: Filter by matching value.
                        - type: array
                          description: Filter by values in this array.
                          items:
                            type: string
                            title: $in
                            description: Filter matching values.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $nin
                          description: Filter by values not matching this parameter.
                        - type: array
                          description: Filter by values not in this array.
                          items:
                            type: string
                            title: $nin
                            description: Filter by values not matching this parameter.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                        properties:
                          $and:
                            type: array
                            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $and
                          $or:
                            type: array
                            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $or
                          $eq:
                            oneOf:
                              - type: string
                                title: $eq
                                description: Filter by an exact match.
                              - type: array
                                description: Filter by exact matches.
                                items:
                                  type: string
                                  title: $eq
                                  description: Filter by an exact match.
                          $ne:
                            type: string
                            title: $ne
                            description: Filter by values not equal to this parameter.
                          $in:
                            type: array
                            description: Filter by values in this array.
                            items:
                              type: string
                              title: $in
                              description: Filter by values in this array.
                          $nin:
                            type: array
                            description: Filter by values not in this array.
                            items:
                              type: string
                              title: $nin
                              description: Filter by values not in this array.
                          $not:
                            oneOf:
                              - type: string
                                title: $not
                                description: Filter by values not matching this parameter.
                              - type: object
                                description: Filter by values not matching the conditions in this parameter.
                              - type: array
                                description: Filter by values not in this array.
                                items:
                                  type: string
                                  title: $not
                                  description: Filter by values not matching this parameter.
                          $gt:
                            type: string
                            title: $gt
                            description: Filter by values greater than this parameter. Useful for numbers and dates only.
                          $gte:
                            type: string
                            title: $gte
                            description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                          $lt:
                            type: string
                            title: $lt
                            description: Filter by values less than this parameter. Useful for numbers and dates only.
                          $lte:
                            type: string
                            title: $lte
                            description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                          $like:
                            type: string
                            title: $like
                            description: Apply a `like` filter. Useful for strings only.
                          $re:
                            type: string
                            title: $re
                            description: Apply a regex filter. Useful for strings only.
                          $ilike:
                            type: string
                            title: $ilike
                            description: Apply a case-insensitive `like` filter. Useful for strings only.
                          $fulltext:
                            type: string
                            title: $fulltext
                            description: Filter to apply on full-text properties.
                          $overlap:
                            type: array
                            description: Filter arrays that have overlapping values with this parameter.
                            items:
                              type: string
                              title: $overlap
                              description: Filter arrays that have overlapping values with this parameter.
                          $contains:
                            type: array
                            description: Filter arrays that contain some of the values of this parameter.
                            items:
                              type: string
                              title: $contains
                              description: Filter arrays that contain some of the values of this parameter.
                          $contained:
                            type: array
                            description: Filter arrays that contain all values of this parameter.
                            items:
                              type: string
                              title: $contained
                              description: Filter arrays that contain all values of this parameter.
                          $exists:
                            type: boolean
                            title: $exists
                            description: Filter by whether a value for this parameter exists (not `null`).
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          oneOf:
                            - type: string
                              title: $not
                              description: Filter by values not matching this parameter.
                            - type: object
                              description: Filter by values not matching the conditions in this parameter.
                              properties:
                                $and:
                                  type: array
                                  description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $and
                                $or:
                                  type: array
                                  description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $or
                                $eq:
                                  oneOf:
                                    - type: string
                                      title: $eq
                                      description: Filter by an exact match.
                                    - type: array
                                      description: Filter by exact matches.
                                      items:
                                        type: string
                                        title: $eq
                                        description: Filter by an exact match.
                                $ne:
                                  type: string
                                  title: $ne
                                  description: Filter by values not equal to this parameter.
                                $in:
                                  type: array
                                  description: Filter by values in this array.
                                  items:
                                    type: string
                                    title: $in
                                    description: Filter by exact matches.
                                $nin:
                                  type: array
                                  description: Filter by values not in this array.
                                  items:
                                    type: string
                                    title: $nin
                                    description: Filter by values not matching this parameter.
                                $not:
                                  oneOf:
                                    - type: string
                                      title: $not
                                      description: Filter by values not matching this parameter.
                                    - type: object
                                      description: Filter by values not matching the conditions in this parameter.
                                    - type: array
                                      description: Filter by values not in this array.
                                      items:
                                        type: string
                                        title: $not
                                        description: Filter by values not matching this parameter.
                                $gt:
                                  type: string
                                  title: $gt
                                  description: Filter by values greater than this parameter. Useful for numbers and dates only.
                                $gte:
                                  type: string
                                  title: $gte
                                  description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                                $lt:
                                  type: string
                                  title: $lt
                                  description: Filter by values less than this parameter. Useful for numbers and dates only.
                                $lte:
                                  type: string
                                  title: $lte
                                  description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                                $like:
                                  type: string
                                  title: $like
                                  description: Apply a `like` filter. Useful for strings only.
                                $re:
                                  type: string
                                  title: $re
                                  description: Apply a regex filter. Useful for strings only.
                                $ilike:
                                  type: string
                                  title: $ilike
                                  description: Apply a case-insensitive `like` filter. Useful for strings only.
                                $fulltext:
                                  type: string
                                  title: $fulltext
                                  description: Filter to apply on full-text properties.
                                $overlap:
                                  type: array
                                  description: Filter arrays that have overlapping values with this parameter.
                                  items:
                                    type: string
                                    title: $overlap
                                    description: Filter arrays that have overlapping values with this parameter.
                                $contains:
                                  type: array
                                  description: Filter arrays that contain some of the values of this parameter.
                                  items:
                                    type: string
                                    title: $contains
                                    description: Filter arrays that contain some of the values of this parameter.
                                $contained:
                                  type: array
                                  description: Filter arrays that contain all values of this parameter.
                                  items:
                                    type: string
                                    title: $contained
                                    description: Filter arrays that contain all values of this parameter.
                                $exists:
                                  type: boolean
                                  title: $exists
                                  description: Filter by whether a value for this parameter exists (not `null`).
                  $gt:
                    oneOf:
                      - type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gt
                          description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    oneOf:
                      - type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gte
                          description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    oneOf:
                      - type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lt
                          description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    oneOf:
                      - type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lte
                          description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: created_by
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: created_by
                description: Filter by a user ID to retrieve the customers they created.
              - type: array
                description: Filter by user IDs to retrieve customers they created.
                items:
                  type: string
                  title: created_by
                  description: A user's ID.
              - type: object
                description: Filter by conditions on the user ID that created the customer.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          oneOf:
                            - type: string
                              title: $eq
                              description: Filter by an exact match.
                            - type: array
                              description: Filter by exact matches.
                              items:
                                type: string
                                title: $eq
                                description: Filter by an exact match.
                  $ne:
                    oneOf:
                      - type: string
                        title: $ne
                        description: Filter by values not equal to this parameter.
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $ne
                          description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $in
                          description: Filter by matching value.
                        - type: array
                          description: Filter by values in this array.
                          items:
                            type: string
                            title: $in
                            description: Filter matching values.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $nin
                          description: Filter by values not matching this parameter.
                        - type: array
                          description: Filter by values not in this array.
                          items:
                            type: string
                            title: $nin
                            description: Filter by values not matching this parameter.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                        properties:
                          $and:
                            type: array
                            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $and
                          $or:
                            type: array
                            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $or
                          $eq:
                            oneOf:
                              - type: string
                                title: $eq
                                description: Filter by an exact match.
                              - type: array
                                description: Filter by exact matches.
                                items:
                                  type: string
                                  title: $eq
                                  description: Filter by an exact match.
                          $ne:
                            type: string
                            title: $ne
                            description: Filter by values not equal to this parameter.
                          $in:
                            type: array
                            description: Filter by values in this array.
                            items:
                              type: string
                              title: $in
                              description: Filter by values in this array.
                          $nin:
                            type: array
                            description: Filter by values not in this array.
                            items:
                              type: string
                              title: $nin
                              description: Filter by values not in this array.
                          $not:
                            oneOf:
                              - type: string
                                title: $not
                                description: Filter by values not matching this parameter.
                              - type: object
                                description: Filter by values not matching the conditions in this parameter.
                              - type: array
                                description: Filter by values not in this array.
                                items:
                                  type: string
                                  title: $not
                                  description: Filter by values not matching this parameter.
                          $gt:
                            type: string
                            title: $gt
                            description: Filter by values greater than this parameter. Useful for numbers and dates only.
                          $gte:
                            type: string
                            title: $gte
                            description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                          $lt:
                            type: string
                            title: $lt
                            description: Filter by values less than this parameter. Useful for numbers and dates only.
                          $lte:
                            type: string
                            title: $lte
                            description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                          $like:
                            type: string
                            title: $like
                            description: Apply a `like` filter. Useful for strings only.
                          $re:
                            type: string
                            title: $re
                            description: Apply a regex filter. Useful for strings only.
                          $ilike:
                            type: string
                            title: $ilike
                            description: Apply a case-insensitive `like` filter. Useful for strings only.
                          $fulltext:
                            type: string
                            title: $fulltext
                            description: Filter to apply on full-text properties.
                          $overlap:
                            type: array
                            description: Filter arrays that have overlapping values with this parameter.
                            items:
                              type: string
                              title: $overlap
                              description: Filter arrays that have overlapping values with this parameter.
                          $contains:
                            type: array
                            description: Filter arrays that contain some of the values of this parameter.
                            items:
                              type: string
                              title: $contains
                              description: Filter arrays that contain some of the values of this parameter.
                          $contained:
                            type: array
                            description: Filter arrays that contain all values of this parameter.
                            items:
                              type: string
                              title: $contained
                              description: Filter arrays that contain all values of this parameter.
                          $exists:
                            type: boolean
                            title: $exists
                            description: Filter by whether a value for this parameter exists (not `null`).
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          oneOf:
                            - type: string
                              title: $not
                              description: Filter by values not matching this parameter.
                            - type: object
                              description: Filter by values not matching the conditions in this parameter.
                              properties:
                                $and:
                                  type: array
                                  description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $and
                                $or:
                                  type: array
                                  description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $or
                                $eq:
                                  oneOf:
                                    - type: string
                                      title: $eq
                                      description: Filter by an exact match.
                                    - type: array
                                      description: Filter by exact matches.
                                      items:
                                        type: string
                                        title: $eq
                                        description: Filter by an exact match.
                                $ne:
                                  type: string
                                  title: $ne
                                  description: Filter by values not equal to this parameter.
                                $in:
                                  type: array
                                  description: Filter by values in this array.
                                  items:
                                    type: string
                                    title: $in
                                    description: Filter by exact matches.
                                $nin:
                                  type: array
                                  description: Filter by values not in this array.
                                  items:
                                    type: string
                                    title: $nin
                                    description: Filter by values not matching this parameter.
                                $not:
                                  oneOf:
                                    - type: string
                                      title: $not
                                      description: Filter by values not matching this parameter.
                                    - type: object
                                      description: Filter by values not matching the conditions in this parameter.
                                    - type: array
                                      description: Filter by values not in this array.
                                      items:
                                        type: string
                                        title: $not
                                        description: Filter by values not matching this parameter.
                                $gt:
                                  type: string
                                  title: $gt
                                  description: Filter by values greater than this parameter. Useful for numbers and dates only.
                                $gte:
                                  type: string
                                  title: $gte
                                  description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                                $lt:
                                  type: string
                                  title: $lt
                                  description: Filter by values less than this parameter. Useful for numbers and dates only.
                                $lte:
                                  type: string
                                  title: $lte
                                  description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                                $like:
                                  type: string
                                  title: $like
                                  description: Apply a `like` filter. Useful for strings only.
                                $re:
                                  type: string
                                  title: $re
                                  description: Apply a regex filter. Useful for strings only.
                                $ilike:
                                  type: string
                                  title: $ilike
                                  description: Apply a case-insensitive `like` filter. Useful for strings only.
                                $fulltext:
                                  type: string
                                  title: $fulltext
                                  description: Filter to apply on full-text properties.
                                $overlap:
                                  type: array
                                  description: Filter arrays that have overlapping values with this parameter.
                                  items:
                                    type: string
                                    title: $overlap
                                    description: Filter arrays that have overlapping values with this parameter.
                                $contains:
                                  type: array
                                  description: Filter arrays that contain some of the values of this parameter.
                                  items:
                                    type: string
                                    title: $contains
                                    description: Filter arrays that contain some of the values of this parameter.
                                $contained:
                                  type: array
                                  description: Filter arrays that contain all values of this parameter.
                                  items:
                                    type: string
                                    title: $contained
                                    description: Filter arrays that contain all values of this parameter.
                                $exists:
                                  type: boolean
                                  title: $exists
                                  description: Filter by whether a value for this parameter exists (not `null`).
                  $gt:
                    oneOf:
                      - type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gt
                          description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    oneOf:
                      - type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gte
                          description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    oneOf:
                      - type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lt
                          description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    oneOf:
                      - type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lte
                          description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: created_at
          in: query
          description: Filter by the customer's creation date.
          required: false
          schema:
            type: object
            description: Filter by the customer's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a customer's update date.
          required: false
          schema:
            type: object
            description: Filter by a customer's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter a customer by their deletion date.
          required: false
          schema:
            type: object
            description: Filter a customer by their deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: has_account
          in: query
          description: Filter by whether the customer is registered.
          required: false
          schema:
            type: boolean
            title: has_account
            description: Filter by whether the customer is registered.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customer.list()
            .then(({ customers, count, limit, offset }) => {
              console.log(customers)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/customers' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Customers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of customers.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned in the list.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of customers.
                    required:
                      - customers
                    properties:
                      customers:
                        $ref: '#/components/schemas/AdminCustomer'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostCustomers
      summary: Create Customer
      description: Create a customer.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The customer's details.
                  required:
                    - email
                    - company_name
                    - first_name
                    - last_name
                    - phone
                    - metadata
                  properties:
                    email:
                      type: string
                      title: email
                      description: The customer's email.
                      format: email
                    company_name:
                      type: string
                      title: company_name
                      description: The customer's company name.
                    first_name:
                      type: string
                      title: first_name
                      description: The customer's first name.
                    last_name:
                      type: string
                      title: last_name
                      description: The customer's last name.
                    phone:
                      type: string
                      title: phone
                      description: The customer's phone.
                    metadata:
                      type: object
                      description: The customer's metadata.
                - type: object
                  description: The customer's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The customer's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customer.create({
              email: "customer@gmail.com"
            })
            .then(({ customer }) => {
              console.log(customer)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/customers' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "email": "Tomas.Toy16@yahoo.com",
              "company_name": "{value}",
              "first_name": "{value}",
              "last_name": "{value}",
              "phone": "{value}",
              "metadata": {}
            }'
      tags:
        - Customers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCustomerResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createCustomersWorkflow
      x-events:
        - name: customer.created
          payload: |-
            ```ts
            {
              id, // The ID of the customer
            }
            ```
          description: Emitted when a customer is created.
          deprecated: false
  /admin/customers/{id}:
    get:
      operationId: GetCustomersId
      summary: Get a Customer
      description: Retrieve a customer by its ID. You can expand the customer's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The customer's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customer.retrieve("cus_123")
            .then(({ customer }) => {
              console.log(customer)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/customers/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Customers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCustomerResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostCustomersId
      summary: Update a Customer
      description: Update a customer's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The customer's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The customer's details.
                  required:
                    - email
                    - company_name
                    - first_name
                    - last_name
                    - phone
                    - metadata
                  properties:
                    email:
                      type: string
                      title: email
                      description: The customer's email.
                      format: email
                    company_name:
                      type: string
                      title: company_name
                      description: The customer's company name.
                    first_name:
                      type: string
                      title: first_name
                      description: The customer's first name.
                    last_name:
                      type: string
                      title: last_name
                      description: The customer's last name.
                    phone:
                      type: string
                      title: phone
                      description: The customer's phone.
                    metadata:
                      type: object
                      description: The customer's metadata.
                - type: object
                  description: The customer's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The customer's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customer.update("cus_123", {
              first_name: "John"
            })
            .then(({ customer }) => {
              console.log(customer)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/customers/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "email": "Daren_Rodriguez-Rutherford93@gmail.com",
              "company_name": "{value}",
              "first_name": "{value}",
              "last_name": "{value}",
              "phone": "{value}",
              "metadata": {}
            }'
      tags:
        - Customers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCustomerResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateCustomersWorkflow
      x-events:
        - name: customer.updated
          payload: |-
            ```ts
            {
              id, // The ID of the customer
            }
            ```
          description: Emitted when a customer is updated.
          deprecated: false
    delete:
      operationId: DeleteCustomersId
      summary: Delete a Customer
      description: Delete a customer.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The customer's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customer.delete("cus_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/customers/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Customers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The customer's ID.
                  object:
                    type: string
                    title: object
                    description: The customer's object.
                  deleted:
                    type: boolean
                    title: deleted
                    description: The customer's deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeCustomerAccountWorkflow
      x-events:
        - name: customer.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the customer
            }
            ```
          description: Emitted when a customer is deleted.
          deprecated: false
  /admin/customers/{id}/addresses:
    get:
      operationId: GetCustomersIdAddresses
      summary: List Addresses
      description: Retrieve a list of addresses in a customer. The addresses can be filtered by fields like `query`. The addresses can also be paginated.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The customer's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to apply on the address's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to apply on the address's searchable properties.
        - name: company
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: company
                description: Filter by a company.
              - type: array
                description: Filter by companies.
                items:
                  type: string
                  title: company
                  description: A company's name.
        - name: city
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: city
                description: Filter by a city.
              - type: array
                description: Filter by cities.
                items:
                  type: string
                  title: city
                  description: A city's name.
        - name: country_code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: country_code
                description: Filter by a currency code.
              - type: array
                description: Filter by currency codes.
                items:
                  type: string
                  title: country_code
                  description: A currency code.
        - name: province
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: province
                description: Filter by an ISO 3166-2 province code. Must be lower-case.
                example: us-ca
                externalDocs:
                  url: https://en.wikipedia.org/wiki/ISO_3166-2
                  description: Learn more about ISO 3166-2
              - type: array
                description: Filter by ISO 3166-2 provinces.
                items:
                  type: string
                  title: province
                  description: A ISO 3166-2 province code. Must be lower-case.
                  example: us-ca
                  externalDocs:
                    url: https://en.wikipedia.org/wiki/ISO_3166-2
                    description: Learn more about ISO 3166-2
        - name: postal_code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: postal_code
                description: Filter by a postal code.
              - type: array
                description: Filter by postal codes.
                items:
                  type: string
                  title: postal_code
                  description: A postal code.
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customer.listAddresses("cus_123")
            .then(({ addresses }) => {
              console.log(addresses)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/customers/{id}/addresses' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Customers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of customer addresses.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of customer addresses
                    required:
                      - addresses
                    properties:
                      addresses:
                        type: array
                        description: The customer addresses.
                        items:
                          $ref: '#/components/schemas/AdminCustomerAddress'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostCustomersIdAddresses
      summary: Add a Customer Address
      x-sidebar-summary: Add Address
      description: Add an address to a customer.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The customer's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The address's details.
                  required:
                    - address_name
                    - company
                    - first_name
                    - last_name
                    - address_1
                    - address_2
                    - city
                    - country_code
                    - province
                    - postal_code
                    - phone
                    - metadata
                  properties:
                    address_name:
                      type: string
                      title: address_name
                      description: The name of the address.
                    is_default_shipping:
                      type: boolean
                      title: is_default_shipping
                      description: Whether this address is used by default for shipping when placing an order.
                    is_default_billing:
                      type: boolean
                      title: is_default_billing
                      description: Whether this address is used by default for billing when placing an order.
                    company:
                      type: string
                      title: company
                      description: The address's company.
                    first_name:
                      type: string
                      title: first_name
                      description: The address's first name.
                    last_name:
                      type: string
                      title: last_name
                      description: The address's last name.
                    address_1:
                      type: string
                      title: address_1
                      description: The address's first line.
                    address_2:
                      type: string
                      title: address_2
                      description: The address's second line.
                    city:
                      type: string
                      title: city
                      description: The address's city.
                    country_code:
                      type: string
                      title: country_code
                      description: The address's country code.
                    province:
                      type: string
                      title: province
                      description: The address's ISO 3166-2 province code. Must be lower-case.
                      example: us-ca
                      externalDocs:
                        url: https://en.wikipedia.org/wiki/ISO_3166-2
                        description: Learn more about ISO 3166-2
                    postal_code:
                      type: string
                      title: postal_code
                      description: The address's postal code.
                    phone:
                      type: string
                      title: phone
                      description: The address's phone.
                    metadata:
                      type: object
                      description: The address's metadata.
                - type: object
                  description: The address's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The address's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customer.createAddress("cus_123", {
              address_1: "123 Main St",
              city: "Anytown",
              country_code: "US",
              postal_code: "12345"
            })
            .then(({ customer }) => {
              console.log(customer)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/customers/{id}/addresses' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "address_name": "{value}",
              "company": "{value}",
              "first_name": "{value}",
              "last_name": "{value}",
              "address_1": "{value}",
              "address_2": "{value}",
              "city": "{value}",
              "country_code": "{value}",
              "province": "us-ca",
              "postal_code": "{value}",
              "phone": "{value}",
              "metadata": {}
            }'
      tags:
        - Customers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCustomerResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createCustomerAddressesWorkflow
      x-events: []
  /admin/customers/{id}/addresses/{address_id}:
    get:
      operationId: GetCustomersIdAddressesAddress_id
      summary: List Addresses
      description: Retrieve a list of a customer's addresses. The addresses can be filtered by fields like `company`. The addresses can also be paginated.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The customer's ID.
          required: true
          schema:
            type: string
        - name: address_id
          in: path
          description: The customer's address id.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customer.retrieveAddress("cus_123", "cus_addr_123")
            .then(({ customer }) => {
              console.log(customer)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/customers/{id}/addresses/{address_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Customers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCustomerAddressResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostCustomersIdAddressesAddress_id
      summary: Update a Customer's Address
      x-sidebar-summary: Update Address
      description: Update a customer address's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The customer's ID.
          required: true
          schema:
            type: string
        - name: address_id
          in: path
          description: The customer's address id.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The address's details.
                  required:
                    - address_name
                    - company
                    - first_name
                    - last_name
                    - address_1
                    - address_2
                    - city
                    - country_code
                    - province
                    - postal_code
                    - phone
                    - metadata
                  properties:
                    address_name:
                      type: string
                      title: address_name
                      description: The name of the address.
                    is_default_shipping:
                      type: boolean
                      title: is_default_shipping
                      description: Whether this address is used by default for shipping when placing an order.
                    is_default_billing:
                      type: boolean
                      title: is_default_billing
                      description: Whether this address is used by default for billing when placing an order.
                    company:
                      type: string
                      title: company
                      description: The address's company.
                    first_name:
                      type: string
                      title: first_name
                      description: The address's first name.
                    last_name:
                      type: string
                      title: last_name
                      description: The address's last name.
                    address_1:
                      type: string
                      title: address_1
                      description: The address's first line
                    address_2:
                      type: string
                      title: address_2
                      description: The address's second line
                    city:
                      type: string
                      title: city
                      description: The address's city.
                    country_code:
                      type: string
                      title: country_code
                      description: The address's country code.
                    province:
                      type: string
                      title: province
                      description: The address's ISO 3166-2 province code. Must be lower-case.
                      example: us-ca
                      externalDocs:
                        url: https://en.wikipedia.org/wiki/ISO_3166-2
                        description: Learn more about ISO 3166-2
                    postal_code:
                      type: string
                      title: postal_code
                      description: The address's postal code.
                    phone:
                      type: string
                      title: phone
                      description: The address's phone.
                    metadata:
                      type: object
                      description: The address's metadata.
                - type: object
                  description: The address's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The address's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customer.updateAddress("cus_123", "cus_addr_123", {
              address_1: "123 Main St",
              city: "Anytown",
              country_code: "US",
              postal_code: "12345"
            })
            .then(({ customer }) => {
              console.log(customer)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/customers/{id}/addresses/{address_id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "address_name": "{value}",
              "company": "{value}",
              "first_name": "{value}",
              "last_name": "{value}",
              "address_1": "{value}",
              "address_2": "{value}",
              "city": "{value}",
              "country_code": "{value}",
              "province": "{value}",
              "postal_code": "{value}",
              "phone": "{value}",
              "metadata": {}
            }'
      tags:
        - Customers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCustomerResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateCustomerAddressesWorkflow
      x-events: []
    delete:
      operationId: DeleteCustomersIdAddressesAddress_id
      summary: Remove an Address from Customer
      description: Remove a customer's address.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The customer's ID.
          required: true
          schema:
            type: string
        - name: address_id
          in: path
          description: The customer address's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customer.deleteAddress("cus_123", "cus_addr_123")
            .then(({ customer }) => {
              console.log(customer)
            })
        - lang: Shell
          label: cURL
          source: 'curl -X DELETE ''{backend_url}/admin/customers/{id}/addresses/{address_id}'' \ -H ''Authorization: Bearer {jwt_token}'''
      tags:
        - Customers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The deletion's details.
                    required:
                      - id
                      - object
                      - deleted
                    properties:
                      id:
                        type: string
                        title: id
                        description: The customer's ID.
                      object:
                        type: string
                        title: object
                        description: The name of the deleted object.
                      deleted:
                        type: boolean
                        title: deleted
                        description: Whether the Customer was deleted.
                  - type: object
                    description: The deletion's details.
                    properties:
                      parent:
                        $ref: '#/components/schemas/AdminCustomer'
                description: The deletion's details.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteCustomerAddressesWorkflow
      x-events: []
  /admin/customers/{id}/customer-groups:
    post:
      operationId: PostCustomersIdCustomerGroups
      x-sidebar-summary: Manage Customer Groups
      summary: Manage Customer Groups of Customer
      description: Manage the customer groups of a customer, adding or removing the customer from those groups.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The customer's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in 
            the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchLink'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.customer.batchCustomerGroups("cus_123", {
              add: ["cusgroup_123"],
              remove: ["cusgroup_321"]
            })
            .then(({ customer }) => {
              console.log(customer)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/customers/{id}/customer-groups' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Customers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCustomerResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: linkCustomerGroupsToCustomerWorkflow
      x-events: []
  /admin/draft-orders:
    get:
      operationId: GetDraftOrders
      summary: List Draft Orders
      description: Retrieve a list of draft orders. The draft orders can be filtered by fields such as `id`. The draft orders can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a draft order's ID.
              - type: array
                description: Filter by draft order IDs.
                items:
                  type: string
                  title: id
                  description: A draft order's ID.
              - type: object
                description: Filter by conditions on the draft order's ID.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          oneOf:
                            - type: string
                              title: $eq
                              description: Filter by an exact match.
                            - type: array
                              description: Filter by exact matches.
                              items:
                                type: string
                                title: $eq
                                description: Filter by an exact match.
                  $ne:
                    oneOf:
                      - type: string
                        title: $ne
                        description: Filter by values not equal to this parameter.
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $ne
                          description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $in
                          description: Filter by matching value.
                        - type: array
                          description: Filter by values in this array.
                          items:
                            type: string
                            title: $in
                            description: Filter matching values.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $nin
                          description: Filter by values not matching this parameter.
                        - type: array
                          description: Filter by values not in this array.
                          items:
                            type: string
                            title: $nin
                            description: Filter by values not matching this parameter.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                        properties:
                          $and:
                            type: array
                            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $and
                          $or:
                            type: array
                            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $or
                          $eq:
                            oneOf:
                              - type: string
                                title: $eq
                                description: Filter by an exact match.
                              - type: array
                                description: Filter by exact matches.
                                items:
                                  type: string
                                  title: $eq
                                  description: Filter by an exact match.
                          $ne:
                            type: string
                            title: $ne
                            description: Filter by values not equal to this parameter.
                          $in:
                            type: array
                            description: Filter by values in this array.
                            items:
                              type: string
                              title: $in
                              description: Filter by values in this array.
                          $nin:
                            type: array
                            description: Filter by values not in this array.
                            items:
                              type: string
                              title: $nin
                              description: Filter by values not in this array.
                          $not:
                            oneOf:
                              - type: string
                                title: $not
                                description: Filter by values not matching this parameter.
                              - type: object
                                description: Filter by values not matching the conditions in this parameter.
                              - type: array
                                description: Filter by values not in this array.
                                items:
                                  type: string
                                  title: $not
                                  description: Filter by values not matching this parameter.
                          $gt:
                            type: string
                            title: $gt
                            description: Filter by values greater than this parameter. Useful for numbers and dates only.
                          $gte:
                            type: string
                            title: $gte
                            description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                          $lt:
                            type: string
                            title: $lt
                            description: Filter by values less than this parameter. Useful for numbers and dates only.
                          $lte:
                            type: string
                            title: $lte
                            description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                          $like:
                            type: string
                            title: $like
                            description: Apply a `like` filter. Useful for strings only.
                          $re:
                            type: string
                            title: $re
                            description: Apply a regex filter. Useful for strings only.
                          $ilike:
                            type: string
                            title: $ilike
                            description: Apply a case-insensitive `like` filter. Useful for strings only.
                          $fulltext:
                            type: string
                            title: $fulltext
                            description: Filter to apply on full-text properties.
                          $overlap:
                            type: array
                            description: Filter arrays that have overlapping values with this parameter.
                            items:
                              type: string
                              title: $overlap
                              description: Filter arrays that have overlapping values with this parameter.
                          $contains:
                            type: array
                            description: Filter arrays that contain some of the values of this parameter.
                            items:
                              type: string
                              title: $contains
                              description: Filter arrays that contain some of the values of this parameter.
                          $contained:
                            type: array
                            description: Filter arrays that contain all values of this parameter.
                            items:
                              type: string
                              title: $contained
                              description: Filter arrays that contain all values of this parameter.
                          $exists:
                            type: boolean
                            title: $exists
                            description: Filter by whether a value for this parameter exists (not `null`).
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          oneOf:
                            - type: string
                              title: $not
                              description: Filter by values not matching this parameter.
                            - type: object
                              description: Filter by values not matching the conditions in this parameter.
                              properties:
                                $and:
                                  type: array
                                  description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $and
                                $or:
                                  type: array
                                  description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $or
                                $eq:
                                  oneOf:
                                    - type: string
                                      title: $eq
                                      description: Filter by an exact match.
                                    - type: array
                                      description: Filter by exact matches.
                                      items:
                                        type: string
                                        title: $eq
                                        description: Filter by an exact match.
                                $ne:
                                  type: string
                                  title: $ne
                                  description: Filter by values not equal to this parameter.
                                $in:
                                  type: array
                                  description: Filter by values in this array.
                                  items:
                                    type: string
                                    title: $in
                                    description: Filter by exact matches.
                                $nin:
                                  type: array
                                  description: Filter by values not in this array.
                                  items:
                                    type: string
                                    title: $nin
                                    description: Filter by values not matching this parameter.
                                $not:
                                  oneOf:
                                    - type: string
                                      title: $not
                                      description: Filter by values not matching this parameter.
                                    - type: object
                                      description: Filter by values not matching the conditions in this parameter.
                                    - type: array
                                      description: Filter by values not in this array.
                                      items:
                                        type: string
                                        title: $not
                                        description: Filter by values not matching this parameter.
                                $gt:
                                  type: string
                                  title: $gt
                                  description: Filter by values greater than this parameter. Useful for numbers and dates only.
                                $gte:
                                  type: string
                                  title: $gte
                                  description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                                $lt:
                                  type: string
                                  title: $lt
                                  description: Filter by values less than this parameter. Useful for numbers and dates only.
                                $lte:
                                  type: string
                                  title: $lte
                                  description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                                $like:
                                  type: string
                                  title: $like
                                  description: Apply a `like` filter. Useful for strings only.
                                $re:
                                  type: string
                                  title: $re
                                  description: Apply a regex filter. Useful for strings only.
                                $ilike:
                                  type: string
                                  title: $ilike
                                  description: Apply a case-insensitive `like` filter. Useful for strings only.
                                $fulltext:
                                  type: string
                                  title: $fulltext
                                  description: Filter to apply on full-text properties.
                                $overlap:
                                  type: array
                                  description: Filter arrays that have overlapping values with this parameter.
                                  items:
                                    type: string
                                    title: $overlap
                                    description: Filter arrays that have overlapping values with this parameter.
                                $contains:
                                  type: array
                                  description: Filter arrays that contain some of the values of this parameter.
                                  items:
                                    type: string
                                    title: $contains
                                    description: Filter arrays that contain some of the values of this parameter.
                                $contained:
                                  type: array
                                  description: Filter arrays that contain all values of this parameter.
                                  items:
                                    type: string
                                    title: $contained
                                    description: Filter arrays that contain all values of this parameter.
                                $exists:
                                  type: boolean
                                  title: $exists
                                  description: Filter by whether a value for this parameter exists (not `null`).
                  $gt:
                    oneOf:
                      - type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gt
                          description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    oneOf:
                      - type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gte
                          description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    oneOf:
                      - type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lt
                          description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    oneOf:
                      - type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lte
                          description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by a draft order's status.
              - type: array
                description: Filter by draft order statuses.
                items:
                  type: string
                  title: status
                  description: The draft order status.
              - type: object
                description: Filter by conditions on the status.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                      - type: array
                        description: Filter by exact matches.
                        items:
                          oneOf:
                            - type: string
                              title: $eq
                              description: Filter by an exact match.
                            - type: array
                              description: Filter by exact matches.
                              items:
                                type: string
                                title: $eq
                                description: Filter by an exact match.
                  $ne:
                    oneOf:
                      - type: string
                        title: $ne
                        description: Filter by values not equal to this parameter.
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $ne
                          description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $in
                          description: Filter by matching value.
                        - type: array
                          description: Filter by values in this array.
                          items:
                            type: string
                            title: $in
                            description: Filter matching values.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      oneOf:
                        - type: string
                          title: $nin
                          description: Filter by values not matching this parameter.
                        - type: array
                          description: Filter by values not in this array.
                          items:
                            type: string
                            title: $nin
                            description: Filter by values not matching this parameter.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                        properties:
                          $and:
                            type: array
                            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $and
                          $or:
                            type: array
                            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $or
                          $eq:
                            oneOf:
                              - type: string
                                title: $eq
                                description: Filter by an exact match.
                              - type: array
                                description: Filter by exact matches.
                                items:
                                  type: string
                                  title: $eq
                                  description: Filter by an exact match.
                          $ne:
                            type: string
                            title: $ne
                            description: Filter by values not equal to this parameter.
                          $in:
                            type: array
                            description: Filter by values in this array.
                            items:
                              type: string
                              title: $in
                              description: Filter by values in this array.
                          $nin:
                            type: array
                            description: Filter by values not in this array.
                            items:
                              type: string
                              title: $nin
                              description: Filter by values not in this array.
                          $not:
                            oneOf:
                              - type: string
                                title: $not
                                description: Filter by values not matching this parameter.
                              - type: object
                                description: Filter by values not matching the conditions in this parameter.
                              - type: array
                                description: Filter by values not in this array.
                                items:
                                  type: string
                                  title: $not
                                  description: Filter by values not matching this parameter.
                          $gt:
                            type: string
                            title: $gt
                            description: Filter by values greater than this parameter. Useful for numbers and dates only.
                          $gte:
                            type: string
                            title: $gte
                            description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                          $lt:
                            type: string
                            title: $lt
                            description: Filter by values less than this parameter. Useful for numbers and dates only.
                          $lte:
                            type: string
                            title: $lte
                            description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                          $like:
                            type: string
                            title: $like
                            description: Apply a `like` filter. Useful for strings only.
                          $re:
                            type: string
                            title: $re
                            description: Apply a regex filter. Useful for strings only.
                          $ilike:
                            type: string
                            title: $ilike
                            description: Apply a case-insensitive `like` filter. Useful for strings only.
                          $fulltext:
                            type: string
                            title: $fulltext
                            description: Filter to apply on full-text properties.
                          $overlap:
                            type: array
                            description: Filter arrays that have overlapping values with this parameter.
                            items:
                              type: string
                              title: $overlap
                              description: Filter arrays that have overlapping values with this parameter.
                          $contains:
                            type: array
                            description: Filter arrays that contain some of the values of this parameter.
                            items:
                              type: string
                              title: $contains
                              description: Filter arrays that contain some of the values of this parameter.
                          $contained:
                            type: array
                            description: Filter arrays that contain all values of this parameter.
                            items:
                              type: string
                              title: $contained
                              description: Filter arrays that contain all values of this parameter.
                          $exists:
                            type: boolean
                            title: $exists
                            description: Filter by whether a value for this parameter exists (not `null`).
                      - type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          oneOf:
                            - type: string
                              title: $not
                              description: Filter by values not matching this parameter.
                            - type: object
                              description: Filter by values not matching the conditions in this parameter.
                              properties:
                                $and:
                                  type: array
                                  description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $and
                                $or:
                                  type: array
                                  description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                                  items:
                                    type: object
                                  title: $or
                                $eq:
                                  oneOf:
                                    - type: string
                                      title: $eq
                                      description: Filter by an exact match.
                                    - type: array
                                      description: Filter by exact matches.
                                      items:
                                        type: string
                                        title: $eq
                                        description: Filter by an exact match.
                                $ne:
                                  type: string
                                  title: $ne
                                  description: Filter by values not equal to this parameter.
                                $in:
                                  type: array
                                  description: Filter by values in this array.
                                  items:
                                    type: string
                                    title: $in
                                    description: Filter by exact matches.
                                $nin:
                                  type: array
                                  description: Filter by values not in this array.
                                  items:
                                    type: string
                                    title: $nin
                                    description: Filter by values not matching this parameter.
                                $not:
                                  oneOf:
                                    - type: string
                                      title: $not
                                      description: Filter by values not matching this parameter.
                                    - type: object
                                      description: Filter by values not matching the conditions in this parameter.
                                    - type: array
                                      description: Filter by values not in this array.
                                      items:
                                        type: string
                                        title: $not
                                        description: Filter by values not matching this parameter.
                                $gt:
                                  type: string
                                  title: $gt
                                  description: Filter by values greater than this parameter. Useful for numbers and dates only.
                                $gte:
                                  type: string
                                  title: $gte
                                  description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                                $lt:
                                  type: string
                                  title: $lt
                                  description: Filter by values less than this parameter. Useful for numbers and dates only.
                                $lte:
                                  type: string
                                  title: $lte
                                  description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                                $like:
                                  type: string
                                  title: $like
                                  description: Apply a `like` filter. Useful for strings only.
                                $re:
                                  type: string
                                  title: $re
                                  description: Apply a regex filter. Useful for strings only.
                                $ilike:
                                  type: string
                                  title: $ilike
                                  description: Apply a case-insensitive `like` filter. Useful for strings only.
                                $fulltext:
                                  type: string
                                  title: $fulltext
                                  description: Filter to apply on full-text properties.
                                $overlap:
                                  type: array
                                  description: Filter arrays that have overlapping values with this parameter.
                                  items:
                                    type: string
                                    title: $overlap
                                    description: Filter arrays that have overlapping values with this parameter.
                                $contains:
                                  type: array
                                  description: Filter arrays that contain some of the values of this parameter.
                                  items:
                                    type: string
                                    title: $contains
                                    description: Filter arrays that contain some of the values of this parameter.
                                $contained:
                                  type: array
                                  description: Filter arrays that contain all values of this parameter.
                                  items:
                                    type: string
                                    title: $contained
                                    description: Filter arrays that contain all values of this parameter.
                                $exists:
                                  type: boolean
                                  title: $exists
                                  description: Filter by whether a value for this parameter exists (not `null`).
                  $gt:
                    oneOf:
                      - type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gt
                          description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    oneOf:
                      - type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values greater than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $gte
                          description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    oneOf:
                      - type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lt
                          description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    oneOf:
                      - type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      - type: array
                        description: Filter by values less than or equal to items in this array. Useful for numbers and dates only.
                        items:
                          type: string
                          title: $lte
                          description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: sales_channel_id
          in: query
          description: Filter by the associated sales channels to retrieve its draft orders.
          required: false
          schema:
            type: array
            description: Filter by the associated sales channels to retrieve its draft orders.
            items:
              type: string
              title: sales_channel_id
              description: A sales channel's ID.
        - name: region_id
          in: query
          description: Filter by region IDs to retrieve their associated draft orders.
          required: false
          schema:
            oneOf:
              - type: string
                title: region_id
                description: The draft order's region id.
              - type: array
                description: The draft order's region id.
                items:
                  type: string
                  title: region_id
                  description: The region id's details.
        - name: q
          in: query
          description: Search term to filter the order's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the order's searchable properties.
        - name: created_at
          in: query
          description: Filter by the draft order's creation date.
          required: false
          schema:
            type: object
            description: Filter by the draft order's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the draft order's update date.
          required: false
          schema:
            type: object
            description: Filter by the draft order's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: customer_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: customer_id
                description: The draft order's customer id.
              - type: array
                description: The draft order's customer id.
                items:
                  type: string
                  title: customer_id
                  description: The customer id's details.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.list()
            .then(({ draft_orders, count, limit, offset }) => {
              console.log(draft_orders)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/draft-orders' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminDraftOrderListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: getOrdersListWorkflow
      x-events: []
    post:
      operationId: PostDraftOrders
      summary: Create Draft Order
      description: Create a draft order. This creates an order with the `is_draft_order` property enabled. You can later convert the draft order to an order.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The draft order's details.
                  required:
                    - sales_channel_id
                    - email
                    - customer_id
                    - region_id
                    - currency_code
                    - shipping_methods
                    - metadata
                  properties:
                    status:
                      type: string
                      title: status
                      description: The draft order's status.
                      enum:
                        - completed
                    sales_channel_id:
                      type: string
                      title: sales_channel_id
                      description: The ID of the associated sales channel.
                    email:
                      type: string
                      title: email
                      description: The email of the draft order's customer.
                      format: email
                    customer_id:
                      type: string
                      title: customer_id
                      description: The ID of the draft order's customer.
                    billing_address:
                      type: object
                      description: The billing address's details.
                      required:
                        - first_name
                        - last_name
                        - phone
                        - company
                        - address_1
                        - address_2
                        - city
                        - country_code
                        - province
                        - postal_code
                        - metadata
                      properties:
                        first_name:
                          type: string
                          title: first_name
                          description: The billing address's first name.
                        last_name:
                          type: string
                          title: last_name
                          description: The billing address's last name.
                        phone:
                          type: string
                          title: phone
                          description: The billing address's phone.
                        company:
                          type: string
                          title: company
                          description: The billing address's company.
                        address_1:
                          type: string
                          title: address_1
                          description: The billing address's first line.
                        address_2:
                          type: string
                          title: address_2
                          description: The billing address's second line.
                        city:
                          type: string
                          title: city
                          description: The billing address's city.
                        country_code:
                          type: string
                          title: country_code
                          description: The billing address's country code.
                        province:
                          type: string
                          title: province
                          description: The billing address's ISO 3166-2 province code. Must be lower-case.
                          example: us-ca
                          externalDocs:
                            url: https://en.wikipedia.org/wiki/ISO_3166-2
                            description: Learn more about ISO 3166-2
                        postal_code:
                          type: string
                          title: postal_code
                          description: The billing address's postal code.
                        metadata:
                          type: object
                          description: The billing address's metadata.
                    shipping_address:
                      type: object
                      description: The draft order's shipping address.
                      required:
                        - first_name
                        - last_name
                        - phone
                        - company
                        - address_1
                        - address_2
                        - city
                        - country_code
                        - province
                        - postal_code
                        - metadata
                      properties:
                        first_name:
                          type: string
                          title: first_name
                          description: The shipping address's first name.
                        last_name:
                          type: string
                          title: last_name
                          description: The shipping address's last name.
                        phone:
                          type: string
                          title: phone
                          description: The shipping address's phone.
                        company:
                          type: string
                          title: company
                          description: The shipping address's company.
                        address_1:
                          type: string
                          title: address_1
                          description: The shipping address's first line.
                        address_2:
                          type: string
                          title: address_2
                          description: The shipping address's second line.
                        city:
                          type: string
                          title: city
                          description: The shipping address's city.
                        country_code:
                          type: string
                          title: country_code
                          description: The shipping address's country code.
                        province:
                          type: string
                          title: province
                          description: The shipping address's ISO 3166-2 province code. Must be lower-case.
                          example: us-ca
                          externalDocs:
                            url: https://en.wikipedia.org/wiki/ISO_3166-2
                            description: Learn more about ISO 3166-2
                        postal_code:
                          type: string
                          title: postal_code
                          description: The shipping address's postal code.
                        metadata:
                          type: object
                          description: The shipping address's metadata.
                    items:
                      type: array
                      description: The draft order's items.
                      items:
                        type: object
                        description: The item's details.
                        required:
                          - title
                          - sku
                          - barcode
                          - variant_id
                          - unit_price
                          - quantity
                          - metadata
                        properties:
                          title:
                            type: string
                            title: title
                            description: The item's title.
                          sku:
                            type: string
                            title: sku
                            description: The item's SKU.
                          barcode:
                            type: string
                            title: barcode
                            description: The item's barcode.
                          variant_id:
                            type: string
                            title: variant_id
                            description: The ID of the associated product variant.
                          unit_price:
                            oneOf:
                              - type: string
                                title: unit_price
                                description: The item's unit price.
                              - type: number
                                title: unit_price
                                description: The item's unit price.
                              - type: object
                                description: The item's unit price.
                                required:
                                  - value
                                  - precision
                                properties:
                                  value:
                                    type: string
                                    title: value
                                    description: The unit price's value.
                                  precision:
                                    type: number
                                    title: precision
                                    description: The unit price's rounding precision.
                          quantity:
                            type: number
                            title: quantity
                            description: The item's ordered quantity.
                          metadata:
                            type: object
                            description: The item's metadata.
                    region_id:
                      type: string
                      title: region_id
                      description: The ID of the associated region.
                    promo_codes:
                      type: array
                      description: The promotion codes applied on the draft order.
                      items:
                        type: string
                        title: promo_codes
                        description: A promotion code.
                    currency_code:
                      type: string
                      title: currency_code
                      description: The draft order's currency code.
                    no_notification_order:
                      type: boolean
                      title: no_notification_order
                      description: Whether to send the customer notifications on order changes.
                    shipping_methods:
                      type: array
                      description: The draft order's shipping methods.
                      items:
                        type: object
                        description: The shipping method's details.
                        required:
                          - name
                          - option_id
                          - amount
                        properties:
                          shipping_method_id:
                            type: string
                            title: shipping_method_id
                            description: The ID of an existing shipping method.
                          name:
                            type: string
                            title: name
                            description: The shipping method's name.
                          option_id:
                            type: string
                            title: option_id
                            description: The ID of the shipping option this method is created from.
                          data:
                            type: object
                            description: The shipping method's data, useful for fulfillment providers.
                            externalDocs:
                              url: https://docs.medusajs.com/resources/commerce-modules/order/concepts#data-property
                          amount:
                            oneOf:
                              - type: string
                                title: amount
                                description: The shipping method's amount.
                              - type: number
                                title: amount
                                description: The shipping method's amount.
                              - type: object
                                description: The shipping method's amount.
                                required:
                                  - value
                                  - precision
                                properties:
                                  value:
                                    type: string
                                    title: value
                                    description: The amount's value.
                                  precision:
                                    type: number
                                    title: precision
                                    description: The amount's rounding precision.
                    metadata:
                      type: object
                      description: The draft order's metadata.
                - type: object
                  description: The draft order's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The draft order's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.create({
              email: "test@test.com",
              items: [
                {
                  variant_id: "variant_123",
                  quantity: 1,
                },
              ],
              region_id: "region_123",
              sales_channel_id: "sc_123",
            })
            .then(({ draft_order }) => {
              console.log(draft_order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/draft-orders' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "sales_channel_id": "{value}",
              "email": "Bartholome.Goodwin90@yahoo.com",
              "customer_id": "{value}",
              "region_id": "{value}",
              "currency_code": "{value}",
              "shipping_methods": [
                {
                  "shipping_method_id": "{value}",
                  "order_id": "{value}",
                  "name": "Cheyanne",
                  "option_id": "{value}"
                }
              ],
              "metadata": {}
            }'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminDraftOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createOrderWorkflow
      x-events: []
  /admin/draft-orders/{id}:
    get:
      operationId: GetDraftOrdersId
      summary: Get a Draft Order
      description: Retrieve a draft order by its ID. You can expand the draft order's relations or select the fields that should be returned using the query parameters.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.retrieve("order_123")
            .then(({ draft_order }) => {
              console.log(draft_order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/draft-orders/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminDraftOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: getOrderDetailWorkflow
      x-events: []
    post:
      operationId: PostDraftOrdersId
      summary: Update a Draft Order
      description: Update a draft order's details. This doesn't include updating the draft order's items, shipping methods, or promotions. To update those, you need to create an edit that you can later request or confirm.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateDraftOrder'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.update("order_123", {
              email: "test@test.com",
            })
            .then(({ draft_order }) => {
              console.log(draft_order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/draft-orders/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "email": "test@test.com"
            }'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminDraftOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateDraftOrderWorkflow
      x-events:
        - name: order.updated
          payload: |-
            ```ts
            {
              id, // The ID of the order
            }
            ```
          description: |-
            Emitted when the details of an order or draft order is updated. This
            doesn't include updates made by an edit.
          deprecated: false
    delete:
      operationId: DeleteDraftOrdersId
      summary: Delete a Draft Order
      description: Delete a draft order.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.delete("order_123")
            .then(({ id, object, deleted }) => {
              console.log(id, object, deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/draft-orders/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteDraftOrdersWorkflow
      x-events: []
      x-since: 2.8.4
  /admin/draft-orders/{id}/convert-to-order:
    post:
      operationId: PostDraftOrdersIdConvertToOrder
      summary: Convert a Draft Order to an Order
      x-sidebar-summary: Convert to Order
      description: Convert a draft order to an order. This will finalize the draft order and create a new order with the same details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.convertToOrder("order_123")
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/draft-orders/{id}/convert-to-order' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: convertDraftOrderWorkflow
      x-events:
        - name: order.placed
          payload: |-
            ```ts
            {
              id, // The ID of the order
            }
            ```
          description: |-
            Emitted when an order is placed, or when a draft order is converted to an
            order.
          deprecated: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminDraftOrderParams'
  /admin/draft-orders/{id}/edit:
    post:
      operationId: PostDraftOrdersIdEdit
      summary: Create a Draft Order Edit
      x-sidebar-summary: Create Edit
      description: Create an edit on a draft order. This will allow you to make changes to the draft order's items, shipping methods, or promotions. Once you've made the necessar changes, you can later either request the edit (which requires a confirmation from the customer), or force-confirm the edit.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.beginEdit("order_123")
            .then(({ draft_order_preview }) => {
              console.log(draft_order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/draft-orders/{id}/edit' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: beginDraftOrderEditWorkflow
      x-events: []
    delete:
      operationId: DeleteDraftOrdersIdEdit
      summary: Cancel Edit on Draft Order
      x-sidebar-summary: Cancel Edit
      description: Cancel an unconfirmed edit on a draft order.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.cancelEdit("order_123")
            .then(({ id, object, deleted }) => {
              console.log(id, object, deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/draft-orders/{id}/edit' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: cancelDraftOrderEditWorkflow
      x-events: []
  /admin/draft-orders/{id}/edit/confirm:
    post:
      operationId: PostDraftOrdersIdEditConfirm
      summary: Confirm an Edit on a Draft Order
      x-sidebar-summary: Confirm Edit
      description: Confirm an edit on a draft order. This will apply the changes made to the draft order.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.confirmEdit("order_123")
            .then(({ draft_order_preview }) => {
              console.log(draft_order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/draft-orders/{id}/edit/confirm' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: confirmDraftOrderEditWorkflow
      x-events: []
  /admin/draft-orders/{id}/edit/items:
    post:
      operationId: PostDraftOrdersIdEditItems
      summary: Add Item to Draft Order Edit
      x-sidebar-summary: Add Item
      description: Add an item to a draft order edit.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminAddDraftOrderItems'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.addItems("order_123", {
              items: [
                {
                  variant_id: "variant_123",
                  quantity: 1,
                },
              ],
            })
            .then(({ draft_order_preview }) => {
              console.log(draft_order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/draft-orders/{id}/edit/items' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: addDraftOrderItemsWorkflow
      x-events: []
  /admin/draft-orders/{id}/edit/items/item/{item_id}:
    post:
      operationId: PostDraftOrdersIdEditItemsItemItem_id
      summary: Update Existing Item in Draft Order Edit
      x-sidebar-summary: Update Item
      description: Update an existing item in a draft order edit.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
        - name: item_id
          in: path
          description: The item's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateDraftOrderItem'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.updateItem("order_123", "item_123", {
              quantity: 2,
            })
            .then(({ draft_order_preview }) => {
              console.log(draft_order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/draft-orders/{id}/edit/items/item/{item_id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "quantity": 0
            }'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateDraftOrderItemWorkflow
      x-events: []
  /admin/draft-orders/{id}/edit/items/{action_id}:
    post:
      operationId: PostDraftOrdersIdEditItemsAction_id
      summary: Update New Item in Draft Order Edit
      x-sidebar-summary: Update New Item
      description: |
        Update a new item that was added to a draft order edit by the ID of the item's `ITEM_ADD` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the item's `ITEM_ADD` action.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateDraftOrderItem'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.updateActionItem("order_123", "action_123", {
              quantity: 2,
            })
            .then(({ draft_order_preview }) => {
              console.log(draft_order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/draft-orders/{id}/edit/items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "quantity": 39
            }'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateDraftOrderActionItemWorkflow
      x-events: []
    delete:
      operationId: DeleteDraftOrdersIdEditItemsAction_id
      summary: Remove Item from Draft Order Edit
      x-sidebar-summary: Remove Item
      description: |
        Remove an order item from a draft order edit by the ID of the item's `ITEM_ADD` or `ITEM_UPDATE` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the order item's `ITEM_ADD` or `ITEM_UPDATE` action.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.removeActionItem("order_123", "action_123")
            .then(({ draft_order_preview }) => {
              console.log(draft_order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/draft-orders/{id}/edit/items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeDraftOrderActionItemWorkflow
      x-events: []
  /admin/draft-orders/{id}/edit/promotions:
    post:
      operationId: PostDraftOrdersIdEditPromotions
      summary: Add Promotions to Draft Order Edit
      x-sidebar-summary: Add Promotions
      description: Add promotions to a draft order edit.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminAddDraftOrderPromotions'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.addPromotions("order_123", {
              promo_codes: ["PROMO_CODE_1", "PROMO_CODE_2"],
            })
            .then(({ draft_order_preview }) => {
              console.log(draft_order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/draft-orders/{id}/edit/promotions' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "promo_codes": [
                "{value}"
              ]
            }'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminDraftOrderPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: addDraftOrderPromotionWorkflow
      x-events: []
    delete:
      operationId: DeleteDraftOrdersIdEditPromotions
      summary: Remove Promotions from Draft Order Edit
      x-sidebar-summary: Remove Promotions
      description: Remove specified promotions from a draft order edit.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.removePromotions("order_123", {
              promo_codes: ["PROMO_CODE_1", "PROMO_CODE_2"],
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/draft-orders/{id}/edit/promotions' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminDraftOrderPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeDraftOrderPromotionsWorkflow
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminRemoveDraftOrderPromotions'
      x-events: []
  /admin/draft-orders/{id}/edit/request:
    post:
      operationId: PostDraftOrdersIdEditRequest
      summary: Request Edit on Draft Order
      x-sidebar-summary: Request Edit
      description: Change the status of a draft order's edit to be requested. Later, the edit can be confirmed or canceled.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.requestEdit("order_123")
            .then(({ draft_order_preview }) => {
              console.log(draft_order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/draft-orders/{id}/edit/request' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: requestDraftOrderEditWorkflow
      x-events: []
  /admin/draft-orders/{id}/edit/shipping-methods:
    post:
      operationId: PostDraftOrdersIdEditShippingMethods
      summary: Add Shipping Method to Draft Order Edit
      x-sidebar-summary: Add Shipping Method
      description: Add a shipping method to a draft order edit.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminAddDraftOrderShippingMethod'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.addShippingMethod("order_123", {
              shipping_option_id: "shipping_option_123",
            })
            .then(({ draft_order_preview }) => {
              console.log(draft_order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/draft-orders/{id}/edit/shipping-methods' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "shipping_option_id": "{value}"
            }'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: addDraftOrderShippingMethodsWorkflow
      x-events: []
  /admin/draft-orders/{id}/edit/shipping-methods/method/{method_id}:
    post:
      operationId: PostDraftOrdersIdEditShippingMethodsMethodMethod_id
      summary: Update Existing Shipping Method in Draft Order Edit
      x-sidebar-summary: Update Shipping Method
      description: Update an existing shipping method in a draft order edit.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
        - name: method_id
          in: path
          description: The ID of the shipping method.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateDraftOrderShippingMethod'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.updateShippingMethod("order_123", "sm_123", {
             shipping_option_id: "so_123",
            })
            .then(({ draft_order_preview }) => {
              console.log(draft_order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/draft-orders/{id}/edit/shipping-methods/method/{method_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateDraftOrderShippingMethodWorkflow
      x-events: []
    delete:
      operationId: DeleteDraftOrdersIdEditShippingMethodsMethodMethod_id
      summary: Remove Shipping Method from Draft Order Edit
      x-sidebar-summary: Remove Shipping Method
      description: Remove an existing shipping method from a draft order edit.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
        - name: method_id
          in: path
          description: The shipping method's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.removeShippingMethod(
              "order_123", 
              "shipping_method_123"
            )
            .then(({ draft_order_preview }) => {
              console.log(draft_order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/draft-orders/{id}/edit/shipping-methods/method/{method_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeDraftOrderShippingMethodWorkflow
      x-events: []
  /admin/draft-orders/{id}/edit/shipping-methods/{action_id}:
    post:
      operationId: PostDraftOrdersIdEditShippingMethodsAction_id
      summary: Update New Shipping Method in Draft Order Edit
      x-sidebar-summary: Update New Shipping Method
      description: |
        Update a new shipping method that was added to a draft order edit using the `ID` of the method's `SHIPPING_ADD` action.

        Every shipping method has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateDraftOrderActionShippingMethod'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.updateShippingMethod("order_123", "action_123", {
              shipping_option_id: "shipping_option_123",
            })
            .then(({ draft_order_preview }) => {
              console.log(draft_order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/draft-orders/{id}/edit/shipping-methods/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "shipping_option_id": "{value}"
            }'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateDraftOrderActionShippingMethodWorkflow
      x-events: []
    delete:
      operationId: DeleteDraftOrdersIdEditShippingMethodsAction_id
      summary: Remove New Shipping Method from Draft Order
      x-sidebar-summary: Remove New Shipping Method
      description: |
        Remove a shipping method that was added to a draft order edit using the `ID` of the method's `SHIPPING_ADD` action.

        Every shipping method has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The draft order's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.draftOrder.removeShippingMethod("order_123", "action_123")
            .then(({ draft_order_preview }) => {
              console.log(draft_order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/draft-orders/{id}/edit/shipping-methods/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Draft Orders
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeDraftOrderActionShippingMethodWorkflow
      x-events: []
  /admin/exchanges:
    get:
      operationId: GetExchanges
      summary: List Exchanges
      description: Retrieve a list of exchanges. The exchanges can be filtered by fields such as `id`. The exchanges can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: deleted_at
          in: query
          description: Filter by an exchange's deletion date.
          required: false
          schema:
            type: object
            description: Filter by an exchange's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by an exchange ID.
              - type: array
                description: Filter by exchange IDs.
                items:
                  type: string
                  title: id
                  description: An exchange ID.
        - name: order_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: order_id
                description: Filter by an exchange's order ID.
              - type: array
                description: Filter by order IDs that the exchanges belong to.
                items:
                  type: string
                  title: order_id
                  description: An order's ID.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by an exchange's status.
              - type: array
                description: Filter by exchange statuses.
                items:
                  type: string
                  title: status
                  description: An exchange status.
        - name: created_at
          in: query
          description: Filter by the exchange's creation date.
          required: false
          schema:
            type: object
            description: Filter by the exchange's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the exchange's update date.
          required: false
          schema:
            type: object
            description: Filter by the exchange's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.list()
            .then(({ exchanges, count, limit, offset }) => {
              console.log(exchanges)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/exchanges' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of exchanges.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of exchanges.
                    required:
                      - exchanges
                    properties:
                      exchanges:
                        type: array
                        description: The exchange's exchanges.
                        items:
                          $ref: '#/components/schemas/AdminExchange'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostExchanges
      summary: Create Exchange
      description: Create an exchange request. Its changes aren't applied on the order until the exchange is confirmed.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateExchange'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.create({
              order_id: "order_123"
            })
            .then(({ exchange }) => {
              console.log(exchange)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/exchanges' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "order_id": "{value}",
              "metadata": {}
            }'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangeOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: beginExchangeOrderWorkflow
      x-events: []
  /admin/exchanges/{id}:
    get:
      operationId: GetExchangesId
      summary: Get an Exchange
      description: Retrieve an exchange by its ID. You can expand the exchange's relations or select the fields that should be returned using query parameters.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.retrieve("exchange_123")
            .then(({ exchange }) => {
              console.log(exchange)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/exchanges/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangeResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/exchanges/{id}/cancel:
    post:
      operationId: PostExchangesIdCancel
      summary: Cancel an Exchange
      description: Cancel an exchange and its associated return.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostCancelExchangeReqSchema'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.cancel("exchange_123")
            .then(({ exchange }) => {
              console.log(exchange)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/exchanges/{id}/cancel' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangeResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: cancelOrderExchangeWorkflow
      x-events: []
  /admin/exchanges/{id}/inbound/items:
    post:
      operationId: PostExchangesIdInboundItems
      summary: Add Inbound Items to an Exchange
      x-sidebary-summary: Add Inbound Items
      description: Add inbound (or return) items to an exchange. These inbound items will have the action `RETURN_ITEM`.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminAddExchangeInboundItems'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.addInboundItems("exchange_123", {
              items: [{
                id: "orli_123",
                quantity: 1
              }]
            })
            .then(({ return: returnData }) => {
              console.log(returnData)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/exchanges/{id}/inbound/items' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangeReturnResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: orderExchangeRequestItemReturnWorkflow
      x-events: []
  /admin/exchanges/{id}/inbound/items/{action_id}:
    post:
      operationId: PostExchangesIdInboundItemsAction_id
      summary: Update an Inbount Item of an Exchange
      x-sidebar-summary: Update Inbound Item
      description: |
        Update an inbound (or return) item from an exchange using the `ID` of the item's `RETURN_ITEM` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the return item's `RETURN_ITEM` action.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostExchangesRequestItemsReturnActionReqSchema'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.updateInboundItem(
              "exchange_123", 
              "ordchact_123",
              {
                quantity: 1
              }
            )
            .then(({ return: returnData }) => {
              console.log(returnData)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/exchanges/{id}/inbound/items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangeReturnResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateRequestItemReturnWorkflow
      x-events: []
    delete:
      operationId: DeleteExchangesIdInboundItemsAction_id
      summary: Remove Inbound Item from Exchange
      x-sidebar-summary: Remove Inbound Item
      description: |
        Remove an inbound (or return) item from an exchange using the `ID` of the item's `RETURN_ITEM` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the return item's `RETURN_ITEM` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.removeInboundItem(
              "exchange_123", 
              "ordchact_123",
            )
            .then(({ return: returnData }) => {
              console.log(returnData)
            })
        - lang: Shell
          label: cURL
          source: 'curl -X DELETE ''{backend_url}/admin/exchanges/{id}/inbound/items/{action_id}'' \ -H ''Authorization: Bearer {jwt_token}'''
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangeReturnResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeItemReturnActionWorkflow
      x-events: []
  /admin/exchanges/{id}/inbound/shipping-method:
    post:
      operationId: PostExchangesIdInboundShippingMethod
      summary: Add an Inbound Shipping Method to an Exchange
      x-sidebar-summary: Add Inbound Shipping
      description: Add an inbound (or return) shipping method to an exchange. The inbound shipping method will have a `SHIPPING_ADD` action.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostReturnsShippingReqSchema'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.addInboundShipping("exchange_123", {
              shipping_option_id: "so_123"
            })
            .then(({ return: returnData }) => {
              console.log(returnData)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/exchanges/{id}/inbound/shipping-method' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "shipping_option_id": "{value}"
            }'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangeReturnResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createExchangeShippingMethodWorkflow
      x-events: []
  /admin/exchanges/{id}/inbound/shipping-method/{action_id}:
    post:
      operationId: PostExchangesIdInboundShippingMethodAction_id
      summary: Update Inbound Shipping Method of an Exchange
      x-sidebar-summary: Update Inbound Shipping
      description: |
        Update the shipping method for returning items in the exchange using the `ID` of the method's `SHIPPING_ADD` action.

        Every shipping method has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminExchangeUpdateInboundShipping'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.updateInboundShipping(
              "exchange_123",
              "ordchact_123",
               {
                custom_amount: 10
              }
            )
            .then(({ return: returnData }) => {
              console.log(returnData)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/exchanges/{id}/inbound/shipping-method/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangePreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateReturnShippingMethodWorkflow
      x-events: []
    delete:
      operationId: DeleteExchangesIdInboundShippingMethodAction_id
      summary: Remove Inbound Shipping Method from Exchange
      x-sidebar-summary: Remove Inbound Shipping Method
      description: |
        Remove the shipping method for returning items in the exchange using the `ID` of the method's `SHIPPING_ADD` action.

        Every shipping method has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.deleteInboundShipping(
              "exchange_123",
              "ordchact_123",
            )
            .then(({ return: returnData }) => {
              console.log(returnData)
            })
        - lang: Shell
          label: cURL
          source: 'curl -X DELETE ''{backend_url}/admin/exchanges/{id}/inbound/shipping-method/{action_id}'' \ -H ''Authorization: Bearer {jwt_token}'''
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangeReturnResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeReturnShippingMethodWorkflow
      x-events: []
  /admin/exchanges/{id}/outbound/items:
    post:
      operationId: PostExchangesIdOutboundItems
      summary: Add Outbound Items to Exchange
      description: Add outbound (or new) items to an exchange. These outbound items will have the action `ITEM_ADD`.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminAddExchangeOutboundItems'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.addOutboundItems("exchange_123", {
              items: [{
                id: "variant_123",
                quantity: 1
              }]
            })
            .then(({ exchange }) => {
              console.log(exchange)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/exchanges/{id}/outbound/items' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangePreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: orderExchangeAddNewItemWorkflow
      x-events: []
  /admin/exchanges/{id}/outbound/items/{action_id}:
    post:
      operationId: PostExchangesIdOutboundItemsAction_id
      summary: Update Outbound Item of an Exchange
      x-sidebar-summary: Update Outbound Item
      description: |
        Update an outbound (or new) item from an exchange using the `ID` of the item's `ITEM_ADD` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the new exchange item's `ITEM_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateExchangeOutboundItem'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.updateOutboundItem(
              "exchange_123",
              "ordchact_123",
              {
                quantity: 1
              }
            )
            .then(({ exchange }) => {
              console.log(exchange)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/exchanges/{id}/outbound/items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangePreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateExchangeAddItemWorkflow
      x-events: []
    delete:
      operationId: DeleteExchangesIdOutboundItemsAction_id
      summary: Remove Outbound Item from Exchange
      x-sidebar-summary: Remove Outbound Item
      description: |
        Remove an outbound (or new) item from an exchange using the `ID` of the item's `ITEM_ADD` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the new exchange item's `ITEM_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.removeOutboundItem(
              "exchange_123",
              "ordchact_123",
            )
            .then(({ exchange }) => {
              console.log(exchange)
            })
        - lang: Shell
          label: cURL
          source: 'curl -X DELETE ''{backend_url}/admin/exchanges/{id}/outbound/items/{action_id}'' \ -H ''Authorization: Bearer {jwt_token}'''
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangePreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeItemExchangeActionWorkflow
      x-events: []
  /admin/exchanges/{id}/outbound/shipping-method:
    post:
      operationId: PostExchangesIdOutboundShippingMethod
      summary: Add Outbound Shipping Method to Exchange
      x-sidebar-summary: Add Outbound Shipping
      description: Add an outbound shipping method to an exchange. The outbound shipping method will have a `SHIPPING_ADD` action.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminExchangeAddOutboundShipping'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.addOutboundShipping("exchange_123", {
              shipping_option_id: "so_123"
            })
            .then(({ exchange }) => {
              console.log(exchange)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/exchanges/{id}/outbound/shipping-method' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "shipping_option_id": "{value}"
            }'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangePreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createExchangeShippingMethodWorkflow
      x-events: []
  /admin/exchanges/{id}/outbound/shipping-method/{action_id}:
    post:
      operationId: PostExchangesIdOutboundShippingMethodAction_id
      summary: Update Outbound Shipping Method of Exchange
      x-sidebar-summary: Update Outbound Shipping
      description: |
        Update the shipping method for delivering outbound items in the exchange using the `ID` of the method's `SHIPPING_ADD` action.

        Every shipping method has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminExchangeUpdateOutboundShipping'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.updateOutboundShipping(
              "exchange_123",
              "ordchact_123",
              {
                custom_amount: 10
              }
            )
            .then(({ exchange }) => {
              console.log(exchange)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/exchanges/{id}/outbound/shipping-method/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangePreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateExchangeShippingMethodWorkflow
      x-events: []
    delete:
      operationId: DeleteExchangesIdOutboundShippingMethodAction_id
      summary: Remove Outbound Shipping Method from Exchange
      x-sidebar-summary: Remove Outbound Shipping Method
      description: |
        Remove the shipping method for delivering outbound items in the exchange using the `ID` of the method's `SHIPPING_ADD` action.

        Every shipping method has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.deleteOutboundShipping(
              "exchange_123",
              "ordchact_123",
            )
            .then(({ exchange }) => {
              console.log(exchange)
            })
        - lang: Shell
          label: cURL
          source: 'curl -X DELETE ''{backend_url}/admin/exchanges/{id}/outbound/shipping-method/{action_id}''\ -H ''Authorization: Bearer {jwt_token}'''
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangePreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeExchangeShippingMethodWorkflow
      x-events: []
  /admin/exchanges/{id}/request:
    post:
      operationId: PostExchangesIdRequest
      summary: Confirm an Exchange
      description: Confirm an exchange request, applying its changes on the associated order.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.request("exchange_123", {})
            .then(({ exchange }) => {
              console.log(exchange)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/exchanges/{id}/request' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangeRequestResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: confirmExchangeRequestWorkflow
      x-events:
        - name: order.exchange_created
          payload: |-
            ```ts
            {
              order_id, // The ID of the order
              exchange_id, // The ID of the exchange
            }
            ```
          description: Emitted when an exchange is created for an order.
          deprecated: false
    delete:
      operationId: DeleteExchangesIdRequest
      summary: Cancel Exchange Request
      description: Cancel a requested exchange.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The exchange's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.exchange.cancel("exchange_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/exchanges/{id}/request' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Exchanges
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExchangeDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: cancelBeginOrderExchangeWorkflow
      x-events: []
  /admin/feature-flags:
    get:
      operationId: GetFeatureFlags
      summary: List Feature Flags
      description: Retrieve a list of feature flags. The feature flags can be filtered by fields such as `id`. The feature flags can also be sorted or paginated.
      x-authenticated: false
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: curl '{backend_url}/admin/feature-flags'
      tags:
        - Feature Flags
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: SUMMARY
                required:
                  - feature_flags
                properties:
                  feature_flags:
                    type: object
                    description: The list of feature flags.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.10.0
  /admin/fulfillment-providers:
    get:
      operationId: GetFulfillmentProviders
      summary: List Fulfillment Providers
      description: Retrieve a list of fulfillment providers. The fulfillment providers can be filtered by fields such as `id`. The fulfillment providers can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a fulfillment provider's ID.
              - type: array
                description: Filter by fulfillment provider IDs.
                items:
                  type: string
                  title: id
                  description: A fulfillment provider ID.
        - name: is_enabled
          in: query
          description: Filter by whether the fulfillment provider is enabled.
          required: false
          schema:
            type: boolean
            title: is_enabled
            description: Filter by whether the fulfillment provider is enabled.
        - name: q
          in: query
          description: Search term to filter a fulfillment provider's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter a fulfillment provider's searchable properties.
        - name: stock_location_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: stock_location_id
                description: Filter by associated stock location's ID.
              - type: array
                description: Filter by associated stock location IDs.
                items:
                  type: string
                  title: stock_location_id
                  description: A stock location's ID.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.fulfillmentProvider.list()
            .then(({ fulfillment_providers, count, limit, offset }) => {
              console.log(fulfillment_providers)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/fulfillment-providers' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Fulfillment Providers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminFulfillmentProviderListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/fulfillment-providers/{id}/options:
    get:
      operationId: GetFulfillmentProvidersIdOptions
      summary: List Fulfillment Options
      description: Retrieve the list of fulfillment options of a fulfillment provider. These options may be retrieved from an integrated third-party service.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The fulfillment provider's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.fulfillmentProvider.listFulfillmentOptions("fp_123")
            .then(({ fulfillment_options }) => {
              console.log(fulfillment_options)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/fulfillment-providers/{id}/options' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Fulfillment Providers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminFulfillmentProviderOptionsListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/fulfillment-sets/{id}:
    delete:
      operationId: DeleteFulfillmentSetsId
      summary: Delete Fulfillment Set
      description: Delete a fulfillment set.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The fulfillment set's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.fulfillmentSet.delete("fset_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/fulfillment-sets/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Fulfillment Sets
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminFulfillmentSetDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteFulfillmentSetsWorkflow
      x-events: []
  /admin/fulfillment-sets/{id}/service-zones:
    post:
      operationId: PostFulfillmentSetsIdServiceZones
      summary: Add a Service Zone to a Fulfillment Set
      x-sidebar-summary: Add Service Zone
      description: Add a service zone to a fulfillment set.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The fulfillment set's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateFulfillmentSetServiceZone'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.fulfillmentSet.createServiceZone("fset_123", {
              name: "Europe Service Zone",
              geo_zones: [{
                type: "country",
                country_code: "us"
              }]
            })
            .then(({ fulfillment_set }) => {
              console.log(fulfillment_set)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/fulfillment-sets/{id}/service-zones' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Layla"
            }'
      tags:
        - Fulfillment Sets
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminFulfillmentSetResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createServiceZonesWorkflow
      x-events: []
  /admin/fulfillment-sets/{id}/service-zones/{zone_id}:
    get:
      operationId: GetFulfillmentSetsIdServiceZonesZone_id
      summary: Get a Service Zone in a Fulfillment Set
      x-sidebar-summary: Get a Service Zone
      description: Retrieve a service zone that belongs to a fulfillment set. be paginated.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The fulfillment set's ID.
          required: true
          schema:
            type: string
        - name: zone_id
          in: path
          description: The service zone's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.fulfillmentSet.retrieveServiceZone(
              "fset_123",
              "serzo_123"
            )
            .then(({ service_zone }) => {
              console.log(service_zone)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/fulfillment-sets/{id}/service-zones/{zone_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Fulfillment Sets
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminServiceZoneResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostFulfillmentSetsIdServiceZonesZone_id
      summary: Update the Service Zone of a Fulfillment Set
      x-sidebar-summary: Update Service Zone
      description: Update the details of a service zone in a fulfillment set.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The fulfillment set's ID.
          required: true
          schema:
            type: string
        - name: zone_id
          in: path
          description: The service zone's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateFulfillmentSetServiceZone'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.fulfillmentSet.updateServiceZone(
              "fset_123", 
              "serzo_123",
              {
                name: "Europe Service Zone",
              }
            )
            .then(({ fulfillment_set }) => {
              console.log(fulfillment_set)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/fulfillment-sets/{id}/service-zones/{zone_id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Elvis"
            }'
      tags:
        - Fulfillment Sets
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminFulfillmentSetResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateServiceZonesWorkflow
      x-events: []
    delete:
      operationId: DeleteFulfillmentSetsIdServiceZonesZone_id
      summary: Remove a Service Zone from Fulfillment Set
      x-sidebar-summary: Remove Service Zone
      description: Remove a service zone that belongs to a fulfillment set.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The fulfillment set's ID.
          required: true
          schema:
            type: string
        - name: zone_id
          in: path
          description: The service zone's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.fulfillmentSet.deleteServiceZone(
              "fset_123", 
              "serzo_123",
            )
            .then(({ deleted, parent: fulfillmentSet }) => {
              console.log(deleted, fulfillmentSet)
            })
        - lang: Shell
          label: cURL
          source: 'curl -X DELETE ''{backend_url}/admin/fulfillment-sets/{id}/service-zones/{zone_id}'' \ -H ''Authorization: Bearer {jwt_token}'''
      tags:
        - Fulfillment Sets
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminServiceZoneDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteServiceZonesWorkflow
      x-events: []
  /admin/fulfillments:
    post:
      operationId: PostFulfillments
      summary: Create Fulfillment
      description: Create a fulfillment for an order, return, exchange, and more.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateFulfillment'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.fulfillment.create({
              location_id: "sloc_123",
              provider_id: "my_fulfillment",
              delivery_address: {
                country_code: "us"
              },
              items: [
                {
                  title: "Shirt",
                  sku: "SHIRT",
                  quantity: 1,
                  barcode: "123"
                }
              ],
              labels: [],
              order: {},
              order_id: "order_123"
            })
            .then(({ fulfillment }) => {
              console.log(fulfillment)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/fulfillments' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "location_id": "{value}",
              "provider_id": "{value}",
              "delivery_address": {
                "first_name": "{value}",
                "last_name": "{value}",
                "phone": "{value}",
                "company": "{value}",
                "address_1": "{value}",
                "address_2": "{value}",
                "city": "{value}",
                "country_code": "{value}",
                "province": "us-ca",
                "postal_code": "{value}",
                "metadata": {}
              },
              "items": [
                {
                  "title": "{value}",
                  "sku": "{value}",
                  "quantity": 1667318922870784,
                  "barcode": "{value}",
                  "line_item_id": "{value}",
                  "inventory_item_id": "{value}"
                }
              ],
              "labels": [
                {
                  "tracking_number": "{value}",
                  "tracking_url": "{value}",
                  "label_url": "{value}"
                }
              ],
              "order": {},
              "order_id": "{value}",
              "shipping_option_id": "{value}",
              "data": {},
              "packed_at": "2024-11-12T18:37:37.122Z",
              "shipped_at": "2025-04-13T12:39:42.432Z",
              "delivered_at": "2025-01-29T19:05:57.056Z",
              "canceled_at": "2025-02-16T02:12:11.763Z",
              "metadata": {}
            }'
      tags:
        - Fulfillments
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminFulfillmentResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createFulfillmentWorkflow
      x-events: []
  /admin/fulfillments/{id}/cancel:
    post:
      operationId: PostFulfillmentsIdCancel
      summary: Cancel a Fulfillment
      description: |
        Cancel a fulfillment. The fulfillment can't be shipped or delivered.

        To cancel the fulfillment, the `cancelFulfillment` method of the associated fulfillment provider is used.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The fulfillment's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.fulfillment.cancel("ful_123")
            .then(({ fulfillment }) => {
              console.log(fulfillment)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/fulfillments/{id}/cancel' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Fulfillments
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminFulfillmentResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: cancelFulfillmentWorkflow
      x-events: []
  /admin/fulfillments/{id}/shipment:
    post:
      operationId: PostFulfillmentsIdShipment
      summary: Create a Shipment for a Fulfillment
      x-sidebar-summary: Create Shipment
      description: Create a shipment for a fulfillment. The fulfillment must not be shipped or canceled.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The fulfillment's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateFulfillmentShipment'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.fulfillment.createShipment("ful_123", {
              labels: [
                {
                  tracking_number: "123",
                  tracking_url: "example.com",
                  label_url: "example.com"
                }
              ]
            })
            .then(({ fulfillment }) => {
              console.log(fulfillment)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/fulfillments/{id}/shipment' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "labels": [
                {
                  "tracking_number": "{value}",
                  "tracking_url": "{value}",
                  "label_url": "{value}"
                }
              ]
            }'
      tags:
        - Fulfillments
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminFulfillmentResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createShipmentWorkflow
      x-events: []
  /admin/gift-cards:
    get:
      operationId: GetGiftCards
      summary: List Gift Cards
      description: Retrieve a list of gift cards. The gift cards can be filtered by fields such as `id`. The gift cards can also be sorted or paginated.
      x-authenticated: true
      x-ignoreCleanup: true
      parameters:
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: The gift card's ID.
              - type: array
                description: The gift card's ID.
                items:
                  type: string
                  title: id
                  description: The id's ID.
        - name: customer_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: customer_id
                description: Filter by a customer ID to retrieve their gift cards.
              - type: array
                description: Filter by customer IDs to retrieve their gift cards.
                items:
                  type: string
                  title: customer_id
                  description: A customer ID.
        - name: created_at
          in: query
          description: Filter by a gift card's creation date.
          required: false
          schema:
            type: object
            description: Filter by a gift card's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a gift card's update date.
          required: false
          schema:
            type: object
            description: Filter by a gift card's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/gift-cards' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Gift Cards
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminGiftCardsResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-badges:
        - text: Cloud
          description: |
            This API route is only available in [Medusa Cloud](https://docs.medusajs.com/cloud/loyalty-plugin).
    post:
      operationId: PostGiftCards
      summary: Create Gift Card
      description: Create a gift card.
      x-authenticated: true
      x-ignoreCleanup: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateGiftCardParams'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/gift-cards' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "code": "{value}",
              "value": 19,
              "currency_code": "bwp",
              "expires_at": "2025-07-20T15:47:23.951Z",
              "reference_id": "{value}",
              "reference": "{value}",
              "line_item_id": "{value}",
              "customer_id": "{value}",
              "metadata": {}
            }'
      tags:
        - Gift Cards
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminGiftCardResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-badges:
        - text: Cloud
          description: |
            This API route is only available in [Medusa Cloud](https://docs.medusajs.com/cloud/loyalty-plugin).
  /admin/gift-cards/{id}:
    get:
      operationId: GetGiftCardsId
      summary: Get a Gift Card
      description: Retrieve a gift card by its ID. You can expand the gift card's relations or select the fields that should be returned.
      x-authenticated: true
      x-ignoreCleanup: true
      parameters:
        - name: id
          in: path
          description: The gift card's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/gift-cards/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Gift Cards
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminGiftCardResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-badges:
        - text: Cloud
          description: |
            This API route is only available in [Medusa Cloud](https://docs.medusajs.com/cloud/loyalty-plugin).
    post:
      operationId: PostGiftCardsId
      summary: Update a Gift Card
      description: Update a gift card's details.
      x-authenticated: true
      x-ignoreCleanup: true
      parameters:
        - name: id
          in: path
          description: The gift card's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateGiftCardParams'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/gift-cards/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Gift Cards
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminGiftCardResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-badges:
        - text: Cloud
          description: |
            This API route is only available in [Medusa Cloud](https://docs.medusajs.com/cloud/loyalty-plugin).
  /admin/gift-cards/{id}/orders:
    get:
      operationId: GetGiftCardsIdOrders
      summary: List Gift Card's Orders
      x-sidebar-summary: List Orders
      description: Retrieve the list of orders that a gift card was used in.
      x-authenticated: true
      x-ignoreCleanup: true
      parameters:
        - name: id
          in: path
          description: The gift card's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/gift-cards/{id}/orders' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Gift Cards
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-badges:
        - text: Cloud
          description: |
            This API route is only available in [Medusa Cloud](https://docs.medusajs.com/cloud/loyalty-plugin).
  /admin/index/details:
    get:
      operationId: GetIndexDetails
      summary: Get Index Details
      description: Retrieve index metadata, including entity type, status, last synced key, and last updated timestamp.
      x-authenticated: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/index/details' \
            -H 'Authorization: Bearer {access_token}'
      tags:
        - Index
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminIndexDetailsResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.11.2
      x-featureFlag: index
  /admin/index/sync:
    post:
      operationId: PostIndexSync
      summary: Trigger Index Sync
      description: Trigger reindexing or re-ingestion of the Index Module.
      x-authenticated: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminIndexSyncPayload'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/index/sync' \
            -H 'Authorization: Bearer {access_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "strategy": "full"
            }'
      tags:
        - Index
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.11.2
      x-featureFlag: index
  /admin/inventory-items:
    get:
      operationId: GetInventoryItems
      summary: List Inventory Items
      description: Retrieve a list of inventory items. The inventory items can be filtered by fields such as `id`. The inventory items can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: The inventory item's q.
          required: false
          schema:
            type: string
            title: q
            description: The inventory item's q.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: The inventory item's ID.
              - type: array
                description: The inventory item's ID.
                items:
                  type: string
                  title: id
                  description: The id's ID.
        - name: sku
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: sku
                description: The inventory item's sku.
              - type: array
                description: The inventory item's sku.
                items:
                  type: string
                  title: sku
                  description: The sku's details.
        - name: origin_country
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: origin_country
                description: The inventory item's origin country.
              - type: array
                description: The inventory item's origin country.
                items:
                  type: string
                  title: origin_country
                  description: The origin country's details.
        - name: mid_code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: mid_code
                description: The inventory item's mid code.
              - type: array
                description: The inventory item's mid code.
                items:
                  type: string
                  title: mid_code
                  description: The mid code's details.
        - name: hs_code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: hs_code
                description: The inventory item's hs code.
              - type: array
                description: The inventory item's hs code.
                items:
                  type: string
                  title: hs_code
                  description: The hs code's details.
        - name: material
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: material
                description: The inventory item's material.
              - type: array
                description: The inventory item's material.
                items:
                  type: string
                  title: material
                  description: The material's details.
        - name: requires_shipping
          in: query
          description: The inventory item's requires shipping.
          required: false
          schema:
            type: boolean
            title: requires_shipping
            description: The inventory item's requires shipping.
        - name: weight
          in: query
          description: Filter the inventory item's weight.
          required: false
          schema:
            description: Filter the inventory item's weight.
            properties:
              $eq:
                type: string
                description: Filter by an exact match.
              $ne:
                type: string
                description: Filter by values not matching this parameter.
              $in:
                type: array
                description: Filter by values in this array's items.
                items:
                  type: string
              $nin:
                type: array
                description: Filter by values not in this array's items.
                items:
                  type: string
              $like:
                type: string
                description: Apply a `like` filter. Useful for strings only.
              $ilike:
                type: string
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $re:
                type: string
                description: Apply a regex filter. Useful for strings only.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
              $gt:
                type: string
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
        - name: length
          in: query
          description: Filter the inventory item's length.
          required: false
          schema:
            description: Filter the inventory item's length.
            properties:
              $eq:
                type: string
                description: Filter by an exact match.
              $ne:
                type: string
                description: Filter by values not matching this parameter.
              $in:
                type: array
                description: Filter by values in this array's items.
                items:
                  type: string
              $nin:
                type: array
                description: Filter by values not in this array's items.
                items:
                  type: string
              $like:
                type: string
                description: Apply a `like` filter. Useful for strings only.
              $ilike:
                type: string
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $re:
                type: string
                description: Apply a regex filter. Useful for strings only.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
              $gt:
                type: string
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
        - name: height
          in: query
          description: Filter by the inventory item's height.
          required: false
          schema:
            description: Filter by the inventory item's height.
            properties:
              $eq:
                type: string
                description: Filter by an exact match.
              $ne:
                type: string
                description: Filter by values not matching this parameter.
              $in:
                type: array
                description: Filter by values in this array's items.
                items:
                  type: string
              $nin:
                type: array
                description: Filter by values not in this array's items.
                items:
                  type: string
              $like:
                type: string
                description: Apply a `like` filter. Useful for strings only.
              $ilike:
                type: string
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $re:
                type: string
                description: Apply a regex filter. Useful for strings only.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
              $gt:
                type: string
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
        - name: width
          in: query
          description: Filter by the inventory item's width.
          required: false
          schema:
            description: Filter by the inventory item's width.
            properties:
              $eq:
                type: string
                description: Filter by an exact match.
              $ne:
                type: string
                description: Filter by values not matching this parameter.
              $in:
                type: array
                description: Filter by values in this array's items.
                items:
                  type: string
              $nin:
                type: array
                description: Filter by values not in this array's items.
                items:
                  type: string
              $like:
                type: string
                description: Apply a `like` filter. Useful for strings only.
              $ilike:
                type: string
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $re:
                type: string
                description: Apply a regex filter. Useful for strings only.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
              $gt:
                type: string
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
        - name: location_levels
          in: query
          description: Filter by the inventory item's associated location IDs.
          required: false
          schema:
            type: object
            description: Filter by the inventory item's associated location IDs.
            properties:
              location_id:
                oneOf:
                  - type: string
                    title: location_id
                    description: The associated location's ID.
                  - type: array
                    description: The location IDs to retrieve inventory items associated with them.
                    items:
                      type: string
                      title: location_id
                      description: A location's ID.
            required:
              - location_id
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.inventoryItem.list()
            .then(({ inventory_items, count, limit, offset }) => {
              console.log(inventory_items)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/inventory-items' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Inventory Items
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of inventory items.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of inventory items.
                    required:
                      - inventory_items
                    properties:
                      inventory_items:
                        type: array
                        description: The inventory item's inventory items.
                        items:
                          $ref: '#/components/schemas/AdminInventoryItem'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostInventoryItems
      summary: Create Inventory Item
      description: Create an inventory item.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateInventoryItem'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.inventoryItem.create({
              sku: "SHIRT"
            })
            .then(({ inventory_item }) => {
              console.log(inventory_item)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/inventory-items' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "sku": "{value}",
              "hs_code": "{value}",
              "weight": 2857134683324416,
              "length": 2322256963305472,
              "height": 8391220613087232,
              "width": 1297863250280448,
              "origin_country": "{value}",
              "mid_code": "{value}",
              "material": "{value}",
              "title": "{value}",
              "description": "{value}",
              "thumbnail": "{value}",
              "metadata": {}
            }'
      tags:
        - Inventory Items
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminInventoryItemResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createInventoryItemsWorkflow
      x-events: []
  /admin/inventory-items/location-levels/batch:
    post:
      operationId: PostInventoryItemsLocationLevelsBatch
      summary: Manage Inventory Levels
      description: Manage inventory levels to create, update, or delete them.
      x-authenticated: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchInventoryItemsLocationLevels'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.inventoryItem.batchInventoryItemsLocationLevels({
              create: [{
                inventory_item_id: "iitem_123",
                location_id: "sloc_123",
                stocked_quantity: 10
              }],
              delete: ["ilvl_123"]
            })
            .then(({ created, updated, deleted }) => {
              console.log(created, updated, deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/inventory-items/location-levels/batch' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "create": [
                {
                  "location_id": "sloc_123",
                  "inventory_item_id": "iitem_123",
                  "stocked_quantity": 100,
                  "incoming_quantity": 50
                }
              ],
              "update": [
                {
                  "location_id": "sloc_456",
                  "inventory_item_id": "iitem_456",
                  "stocked_quantity": 200,
                  "incoming_quantity": 75
                }
              ],
              "delete": [
                "iilev_123"
              ]
            }'
      tags:
        - Inventory Items
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminBatchInventoryItemsLocationLevelsResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchInventoryItemLevelsWorkflow
      x-events: []
  /admin/inventory-items/{id}:
    get:
      operationId: GetInventoryItemsId
      summary: Get a Inventory Item
      description: Retrieve a inventory item by its ID. You can expand the inventory item's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The inventory item's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.inventoryItem.retrieve("iitem_123")
            .then(({ inventory_item }) => {
              console.log(inventory_item)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/inventory-items/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Inventory Items
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminInventoryItemResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostInventoryItemsId
      summary: Update an Inventory Item
      description: Update an inventory item's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The inventory item's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateInventoryItem'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.inventoryItem.update("iitem_123", {
              sku: "SHIRT"
            })
            .then(({ inventory_item }) => {
              console.log(inventory_item)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/inventory-items/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "sku": "{value}",
              "hs_code": "{value}",
              "weight": 8979922215239680,
              "length": 667491233693696,
              "height": 6328111551479808,
              "width": 7175104570064896,
              "origin_country": "{value}",
              "mid_code": "{value}",
              "material": "{value}",
              "title": "{value}",
              "description": "{value}",
              "thumbnail": "{value}",
              "metadata": {}
            }'
      tags:
        - Inventory Items
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminInventoryItemResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateInventoryItemsWorkflow
      x-events: []
    delete:
      operationId: DeleteInventoryItemsId
      summary: Delete Inventory Item
      description: Delete an inventory item.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The inventory item's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.inventoryItem.delete("iitem_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/inventory-items/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Inventory Items
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The inventory item's ID.
                  object:
                    type: string
                    title: object
                    description: The name of the deleted object.
                    default: inventory_item
                  deleted:
                    type: boolean
                    title: deleted
                    description: Whether the inventory item was deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteInventoryItemWorkflow
      x-events: []
  /admin/inventory-items/{id}/location-levels:
    get:
      operationId: GetInventoryItemsIdLocationLevels
      summary: List Inventory Levels
      description: Retrieve a list of inventory levels associated with an inventory item. The inventory levels can be filtered by fields like `location_id`. The inventory levels can also be paginated.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The inventory item's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
        - name: location_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: location_id
                description: Filter by the inventory item's location ID.
              - type: array
                description: The inventory item's location IDs.
                items:
                  type: string
                  title: location_id
                  description: The location ID.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.inventoryItem.listLevels("iitem_123")
            .then(({ inventory_levels, count, limit, offset }) => {
              console.log(inventory_levels)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/inventory-items/{id}/location-levels' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Inventory Items
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of inventory levels.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of inventory levels.
                    required:
                      - inventory_levels
                    properties:
                      inventory_levels:
                        type: array
                        description: The inventory item's inventory levels.
                        items:
                          $ref: '#/components/schemas/InventoryLevel'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostInventoryItemsIdLocationLevels
      summary: Create Inventory Level for Inventory Item
      x-sidebar-summary: Create Inventory Level
      description: Create an inventory level for an inventory item.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The inventory item's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchCreateInventoryItemLocationLevels'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/inventory-items/{id}/location-levels' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "location_id": "{value}"
            }'
      tags:
        - Inventory Items
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminInventoryItemResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createInventoryLevelsWorkflow
      x-events: []
  /admin/inventory-items/{id}/location-levels/batch:
    post:
      operationId: PostInventoryItemsIdLocationLevelsBatch
      summary: Manage Inventory Levels of Inventory Item
      x-sidebar-summary: Manage Inventory Levels
      description: Manage the inventory levels of an inventory item to create or delete them.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The inventory item's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchInventoryItemLocationsLevel'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.inventoryItem.batchInventoryItemLocationLevels("iitem_123", {
              create: [{
                location_id: "sloc_123",
                stocked_quantity: 10
              }],
              delete: ["ilvl_123"]
            })
            .then(({ created, updated, deleted }) => {
              console.log(created, updated, deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/inventory-items/{id}/location-levels/batch' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Inventory Items
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchInventoryItemLevelsWorkflow
      x-events: []
  /admin/inventory-items/{id}/location-levels/{location_id}:
    post:
      operationId: PostInventoryItemsIdLocationLevelsLocation_id
      summary: Update an Inventory Level of an Inventory Item
      x-sidebar-summary: Update Inventory Level
      description: Updates the details of an inventory item's inventory level using its associated location ID.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The inventory item's ID.
          required: true
          schema:
            type: string
        - name: location_id
          in: path
          description: The ID of the location associated with the inventory level.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateInventoryLevel'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.inventoryItem.updateLevel(
              "iitem_123",
              "sloc_123",
              {
                stocked_quantity: 10
              }
            )
            .then(({ inventory_item }) => {
              console.log(inventory_item)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/inventory-items/{id}/location-levels/{location_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Inventory Items
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminInventoryItemResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateInventoryLevelsWorkflow
      x-events: []
    delete:
      operationId: DeleteInventoryItemsIdLocationLevelsLocation_id
      summary: Remove Inventory Level of Inventory Item
      x-sidebar-summary: Remove Inventory Level
      description: |
        Remove the inventory level of an inventory item.

        If the inventory level has reserved quantity greater than `0`, an error is thrown.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The inventory item's ID.
          required: true
          schema:
            type: string
        - name: location_id
          in: path
          description: The inventory item's location id.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.inventoryItem.deleteLevel(
              "iitem_123",
              "sloc_123",
            )
            .then(({ deleted, parent: inventoryItem }) => {
              console.log(deleted, inventoryItem)
            })
        - lang: Shell
          label: cURL
          source: 'curl -X DELETE ''{backend_url}/admin/inventory-items/{id}/location-levels/{location_id}'' \ -H ''Authorization: Bearer {jwt_token}'''
      tags:
        - Inventory Items
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The deletion's details.
                    required:
                      - id
                      - object
                      - deleted
                    properties:
                      id:
                        type: string
                        title: id
                        description: The inventory item's ID.
                      object:
                        type: string
                        title: object
                        description: The name of the deleted object.
                      deleted:
                        type: boolean
                        title: deleted
                        description: Whether the Inventory Item was deleted.
                  - type: object
                    description: The deletion's details.
                    properties:
                      parent:
                        $ref: '#/components/schemas/AdminInventoryItem'
                description: The deletion's details.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteInventoryLevelsWorkflow
      x-events: []
  /admin/invites:
    get:
      operationId: GetInvites
      summary: List Invites
      description: Retrieve a list of invites. The invites can be filtered by fields such as `id`. The invites can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to apply on an invite's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to apply on an invite's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by an invite's ID.
              - type: array
                description: Filter by invite IDs.
                items:
                  type: string
                  title: id
                  description: An invite's ID.
        - name: email
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: email
                description: Filter by an invite's email.
                format: email
              - type: array
                description: Filter by invite emails.
                items:
                  type: string
                  title: email
                  description: An email.
                  format: email
        - name: created_at
          in: query
          description: Filter by the invite's creation date.
          required: false
          schema:
            type: object
            description: Filter by the invite's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the invite's update date.
          required: false
          schema:
            type: object
            description: Filter by the invite's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by the invite's deletion date.
          required: false
          schema:
            type: object
            description: Filter by the invite's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.invite.list()
            .then(({ invites, count, limit, offset }) => {
              console.log(invites)
            })
        - lang: Shell
          label: cURL
          source: curl '{backend_url}/admin/invites'
      tags:
        - Invites
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of invites.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items retrieved.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of invites.
                    required:
                      - invites
                    properties:
                      invites:
                        type: array
                        description: The list of invites.
                        items:
                          $ref: '#/components/schemas/AdminInvite'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
    post:
      operationId: PostInvites
      summary: Create Invite
      description: Create a invite.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: The invite's details.
              required:
                - email
              properties:
                email:
                  type: string
                  title: email
                  description: The email of the user to invite.
                  format: email
                metadata:
                  type: object
                  description: The invite's metadata. Can be custom data in key-value pairs.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.invite.create({
              email: "user@gmail.com",
            })
            .then(({ invite }) => {
              console.log(invite)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/invites' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "email": "Whitney_Schultz@gmail.com"
            }'
      tags:
        - Invites
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminInviteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createInvitesWorkflow
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-events:
        - name: invite.created
          payload: |-
            ```ts
            {
              id, // The ID of the invite
            }
            ```
          description: |-
            Emitted when invites are created. You can listen to this event
            to send an email to the invited users, for example.
          deprecated: false
  /admin/invites/accept:
    post:
      operationId: PostInvitesAccept
      summary: Accept Invite
      description: |
        Accept an invite and create a new user.
        Since the user isn't created yet, the JWT token used in the authorization header is retrieved from the `/auth/user/emailpass/register` API route (or a provider other than `emailpass`). The user can then authenticate using the `/auth/user/emailpass` API route.
      x-authenticated: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminInviteAccept'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            await sdk.auth.register("user", "emailpass", {
              email: "user@gmail.com",
              password: "supersecret"
            })

            // all subsequent requests will use the token in the header
            const { user } = await sdk.admin.invite.accept(
              {
                email: "user@gmail.com",
                first_name: "John",
                last_name: "Smith",
                invite_token: "12345..."
              },
            )
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/invites/accept' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "email": "Lila_Zemlak@hotmail.com",
              "first_name": "{value}",
              "last_name": "{value}"
            }'
      tags:
        - Invites
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    description: The created user's details.
                    required:
                      - user
                    properties:
                      user:
                        $ref: '#/components/schemas/AdminUser'
                  - type: object
                    description: An error's details.
                    required:
                      - message
                    properties:
                      message:
                        type: string
                        title: message
                        description: The error message.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: acceptInviteWorkflow
      security:
        - cookie_auth: []
        - jwt_token: []
      x-events:
        - name: user.created
          payload: |-
            ```ts
            {
              id, // The ID of the user
            }
            ```
          description: Emitted when users are created.
          deprecated: false
        - name: invite.accepted
          payload: |-
            ```ts
            {
              id, // The ID of the invite
            }
            ```
          description: Emitted when an invite is accepted.
          deprecated: false
  /admin/invites/{id}:
    get:
      operationId: GetInvitesId
      summary: Get an Invite
      description: Retrieve an invite by its ID. You can expand the invite's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The invite's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.invite.retrieve("invite_123")
            .then(({ invite }) => {
              console.log(invite)
            })
        - lang: Shell
          label: cURL
          source: curl '{backend_url}/admin/invites/{id}'
      tags:
        - Invites
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminInviteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
    delete:
      operationId: DeleteInvitesId
      summary: Delete Invite
      description: Delete an invite.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The invite's ID.
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.invite.delete("invite_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: curl -X DELETE '{backend_url}/admin/invites/{id}'
      tags:
        - Invites
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The invite's ID.
                  object:
                    type: string
                    title: object
                    description: The name of the deleted object.
                    default: invite
                  deleted:
                    type: boolean
                    title: deleted
                    description: Whether the invite was deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteInvitesWorkflow
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-events:
        - name: invite.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the invite
            }
            ```
          description: Emitted when invites are deleted.
          deprecated: false
  /admin/invites/{id}/resend:
    post:
      operationId: PostInvitesIdResend
      summary: Refresh Invite Token
      description: Refresh the token of an invite.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The invite's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.invite.resend("invite_123")
            .then(({ invite }) => {
              console.log(invite)
            })
        - lang: Shell
          label: cURL
          source: curl -X POST '{backend_url}/admin/invites/{id}/resend'
      tags:
        - Invites
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminInviteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: refreshInviteTokensWorkflow
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-events:
        - name: invite.resent
          payload: |-
            ```ts
            {
              id, // The ID of the invite
            }
            ```
          description: |-
            Emitted when invites should be resent because their token was
            refreshed. You can listen to this event to send an email to the invited users,
            for example.
          deprecated: false
  /admin/locales:
    get:
      operationId: GetLocales
      summary: List Locales
      description: Retrieve a list of locales. The locales can be filtered by fields such as `code`. The locales can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: q
          in: query
          description: Search query to filter locales by code or other fields.
          required: false
          schema:
            type: string
            title: q
            description: Search query to filter locales by code or other fields.
        - name: code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: code
                description: Filter locales by a code.
              - type: array
                description: Filter locales by multiple codes.
                items:
                  type: string
                  title: code
                  description: A locale code.
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: with_deleted
          in: query
          description: The locale's with deleted.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: The locale's with deleted.
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.locale.list()
            .then(({ locales, count, limit, offset }) => {
              console.log(locales)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/locales' \
            -H 'Authorization: Bearer {access_token}'
      tags:
        - Locales
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminLocaleListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.12.3
      x-featureFlag: translation
  /admin/locales/{code}:
    get:
      operationId: GetLocalesCode
      summary: Get a Locale
      x-sidebar-summary: Get Locale
      description: Retrieve a locale by its code. You can expand the locale's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: code
          in: path
          description: The locale's code in [BCP 47 format](https://gist.github.com/typpo/b2b828a35e683b9bf8db91b5404f1bd1).
          example: fr-FR
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.locale.retrieve("en-US")
            .then(({ locale }) => {
              console.log(locale)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/locales/fr-FR' \
            -H 'Authorization: Bearer {access_token}'
      tags:
        - Locales
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminLocaleResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.12.3
      x-featureFlag: translation
  /admin/notifications:
    get:
      operationId: GetNotifications
      summary: List Notifications
      description: Retrieve a list of notifications. The notifications can be filtered by fields such as `id`. The notifications can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to apply on the notification's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to apply on the notification's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a notification ID.
              - type: array
                description: Filter by notification IDs.
                items:
                  type: string
                  title: id
                  description: A notification ID.
        - name: channel
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: channel
                description: Filter by a notification channel.
                example: email
              - type: array
                description: Filter by notification channels.
                items:
                  type: string
                  title: channel
                  description: A notification channel.
                  example: email
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.notification.list()
            .then(({ notifications, count, limit, offset }) => {
              console.log(notifications)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/notifications' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminNotificationListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/notifications/{id}:
    get:
      operationId: GetNotificationsId
      summary: Get a Notification
      description: Retrieve a notification by its ID. You can expand the notification's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The notification's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.notification.retrieve("notif_123")
            .then(({ notification }) => {
              console.log(notification)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/notifications/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminNotificationResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/order-changes/{id}:
    post:
      operationId: PostOrderChangesId
      summary: Update an Order Change
      x-sidebar-summary: Update Order Change
      description: Update an order change's details. An order change can be an exchange, claim, or edit. For example, you can edit whether an exchange carries over the parent order's promotion.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order change's ID.
          required: true
          schema:
            type: string
        - name: created_at
          in: query
          description: Filter by the order change's creation date.
          required: false
          schema:
            type: object
            description: Filter by the order change's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the order change's update date.
          required: false
          schema:
            type: object
            description: Filter by the order change's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by the order change's deletion date.
          required: false
          schema:
            type: object
            description: Filter by the order change's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by an order change's ID.
              - type: array
                description: Filter by order change IDs.
                items:
                  type: string
                  title: id
                  description: An order change's ID.
              - type: object
                description: Filter by order change IDs.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by an order change's status.
              - type: array
                description: Filter by order change statuses.
                items:
                  type: string
                  title: status
                  description: An order change's status.
              - type: object
                description: Filter by order change statuses.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
        - name: change_type
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: change_type
                description: Filter by the order change's change type.
              - type: array
                description: Filter by order change types.
                items:
                  type: string
                  title: change_type
                  description: The order change type.
              - type: object
                description: Filter by order change types.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateOrderChange'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.updateOrderChange(
              "ordch_123",
              {
                carry_over_promotions: true
              }
            )
            .then(({ order_change }) => {
              console.log(order_change)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/order-changes/{id}' \
            -H 'Authorization: Bearer {access_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "carry_over_promotions": true
            }'
      tags:
        - Order Changes
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderChangeResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateOrderChangeWorkflow
      x-events: []
      x-since: 2.12.0
  /admin/order-edits:
    post:
      operationId: PostOrderEdits
      summary: Create Order Edit
      description: Create an order edit.
      x-authenticated: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostOrderEditsReqSchema'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.orderEdit.initiateRequest({
              order_id: "order_123"
            })
            .then(({ order_change }) => {
              console.log(order_change)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/order-edits' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "order_id": "{value}",
              "metadata": {}
            }'
      tags:
        - Order Edits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderEditResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: beginOrderEditOrderWorkflow
      x-events: []
  /admin/order-edits/{id}:
    delete:
      operationId: DeleteOrderEditsId
      summary: Cancel Order Edit
      description: Cancel a requested order edit.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The ID of the order that is being edited.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.orderEdit.cancelRequest("order_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/order-edits/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Order Edits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The order edit's ID.
                  object:
                    type: string
                    title: object
                    description: The name of the deleted object.
                    default: order-edit
                  deleted:
                    type: boolean
                    title: deleted
                    description: Whether the order edit was deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: cancelBeginOrderEditWorkflow
      x-events:
        - name: order-edit.canceled
          payload: |-
            ```ts
            {
              order_id, // The ID of the order
              actions, // (array) The [actions](https://docs.medusajs.com/resources/references/fulfillment/interfaces/fulfillment.OrderChangeActionDTO) to edit the order
            }
            ```
          description: Emitted when an order edit request is canceled.
          deprecated: false
          since: 2.8.0
  /admin/order-edits/{id}/confirm:
    post:
      operationId: PostOrderEditsIdConfirm
      summary: Confirm Order Edit
      description: Confirm an order edit request and apply the changes on the order.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The ID of the order that is being edited.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.orderEdit.confirm("order_123")
            .then(({ order_preview }) => {
              console.log(order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/order-edits/{id}/confirm' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Order Edits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderEditPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: confirmOrderEditRequestWorkflow
      x-events:
        - name: order-edit.confirmed
          payload: |-
            ```ts
            {
              order_id, // The ID of the order
              actions, // (array) The [actions](https://docs.medusajs.com/resources/references/fulfillment/interfaces/fulfillment.OrderChangeActionDTO) to edit the order
            }
            ```
          description: Emitted when an order edit request is confirmed.
          deprecated: false
          since: 2.8.0
  /admin/order-edits/{id}/items:
    post:
      operationId: PostOrderEditsIdItems
      summary: Add Items to Order Edit
      x-sidebar-summary: Add Items
      description: Add new items to an order edit. These items will have the action `ITEM_ADD`.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The ID of the order that is being edited.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostOrderEditsAddItemsReqSchema'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.orderEdit.addItems("order_123", {
              items: [
                {
                  variant_id: "variant_123",
                  quantity: 1
                }
              ]
            })
            .then(({ order_preview }) => {
              console.log(order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/order-edits/{id}/items' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Order Edits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderEditPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: orderEditAddNewItemWorkflow
      x-events: []
  /admin/order-edits/{id}/items/item/{item_id}:
    post:
      operationId: PostOrderEditsIdItemsItemItem_id
      summary: Update Order Item Quantity of Order Edit
      x-sidebar-summary: Update Item Quantity
      description: |
        Update an existing order item's quantity of an order edit.
        You can also use this API route to remove an item from an order by setting its quantity to `0`.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The ID of the order that is being edited.
          required: true
          schema:
            type: string
        - name: item_id
          in: path
          description: The order edit's item id.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostOrderEditsUpdateItemQuantityReqSchema'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.orderEdit.updateOriginalItem(
              "order_123", 
              "orli_123",
              {
                quantity: 1
              }
            )
            .then(({ order_preview }) => {
              console.log(order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/order-edits/{id}/items/item/{item_id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "quantity": 7564330046324736
            }'
      tags:
        - Order Edits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderEditPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: orderEditUpdateItemQuantityWorkflow
      x-events: []
  /admin/order-edits/{id}/items/{action_id}:
    post:
      operationId: PostOrderEditsIdItemsAction_id
      summary: Update an Item in an Order Edit
      x-sidebar-summary: Update Item
      description: |
        Update an added item in the order edit by the ID of the item's `ITEM_ADD` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The ID of the order that is being edited.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the new item's `ITEM_ADD` action.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostOrderEditsItemsActionReqSchema'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.orderEdit.updateAddedItem(
              "order_123", 
              "orli_123",
              {
                quantity: 1
              }
            )
            .then(({ order_preview }) => {
              console.log(order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/order-edits/{id}/items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Order Edits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderEditPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateOrderEditAddItemWorkflow
      x-events: []
    delete:
      operationId: DeleteOrderEditsIdItemsAction_id
      summary: Remove Item from Order Edit
      x-sidebar-summary: Remove Item
      description: |
        Remove an added item in the order edit by the ID of the item's `ITEM_ADD` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The ID of the order that is being edited.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the new item's `ITEM_ADD` action.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.orderEdit.removeAddedItem(
              "order_123", 
              "orli_123",
            )
            .then(({ order_preview }) => {
              console.log(order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/order-edits/{id}/items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Order Edits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderEditPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeItemOrderEditActionWorkflow
      x-events: []
  /admin/order-edits/{id}/request:
    post:
      operationId: PostOrderEditsIdRequest
      summary: Request Order Edit
      description: Change the status of an active order edit to requested.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The ID of the order that is being edited.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.orderEdit.request("order_123")
            .then(({ order_preview }) => {
              console.log(order_preview)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/order-edits/{id}/request' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Order Edits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderEditPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: requestOrderEditRequestWorkflow
      x-events:
        - name: order-edit.requested
          payload: |-
            ```ts
            {
              order_id, // The ID of the order
              actions, // (array) The [actions](https://docs.medusajs.com/resources/references/fulfillment/interfaces/fulfillment.OrderChangeActionDTO) to edit the order
            }
            ```
          description: Emitted when an order edit is requested.
          deprecated: false
          since: 2.8.0
  /admin/order-edits/{id}/shipping-method:
    post:
      operationId: PostOrderEditsIdShippingMethod
      summary: Add Shipping Method to Order Edit
      x-sidebar-summary: Add Shipping Method
      description: Add a shipping method to an exchange. The shipping method will have a `SHIPPING_ADD` action.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The ID of the order that is being edited.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostOrderEditsShippingReqSchema'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/order-edits/{id}/shipping-method' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "shipping_option_id": "{value}"
            }'
      tags:
        - Order Edits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderEditPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createOrderEditShippingMethodWorkflow
      x-events: []
  /admin/order-edits/{id}/shipping-method/{action_id}:
    post:
      operationId: PostOrderEditsIdShippingMethodAction_id
      summary: Update Shipping Method of an Order Edit
      x-sidebar-summary: Update Shipping Method
      description: |
        Update a shipping method in the order edit by the ID of the method's `SHIPPING_ADD` action.

        Every shipping method has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The ID of the order that is being edited.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostOrderEditsShippingActionReqSchema'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/order-edits/{id}/shipping-method/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Order Edits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderEditPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateOrderEditShippingMethodWorkflow
      x-events: []
    delete:
      operationId: DeleteOrderEditsIdShippingMethodAction_id
      summary: Remove Shipping Method from Order Edit
      x-sidebar-summary: Remove Shipping Method
      description: |
        Remove a shipping method in the order edit by the ID of the method's `SHIPPING_ADD` action.

        Every shipping method has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The ID of the order that is being edited.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/order-edits/{id}/shipping-method/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Order Edits
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderEditPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeOrderEditShippingMethodWorkflow
      x-events: []
  /admin/orders:
    get:
      operationId: GetOrders
      summary: List Orders
      description: Retrieve a list of orders. The orders can be filtered by fields such as `id`. The orders can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by an order ID.
              - type: array
                description: Filter by order IDs.
                items:
                  type: string
                  title: id
                  description: An order's ID.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by the order's status.
              - type: array
                description: Filter by order statuses.
                items:
                  type: string
                  title: status
                  description: An order's status.
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: sales_channel_id
          in: query
          description: Filter by sales channel IDs to retrieve the orders associated with them.
          required: false
          schema:
            type: array
            description: Filter by sales channel IDs to retrieve the orders associated with them.
            items:
              type: string
              title: sales_channel_id
              description: A sales channel's ID.
        - name: region_id
          in: query
          description: Filter by region IDs to retrieve their associated orders.
          required: false
          schema:
            oneOf:
              - type: string
                title: region_id
                description: The order's region id.
              - type: array
                description: The order's region id.
                items:
                  type: string
                  title: region_id
                  description: The region id's details.
        - name: q
          in: query
          description: Search term to filter the order's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the order's searchable properties.
        - name: created_at
          in: query
          description: Filter by the order's creation date.
          required: false
          schema:
            type: object
            description: Filter by the order's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the order's update date.
          required: false
          schema:
            type: object
            description: Filter by the order's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: customer_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: customer_id
                description: The order's customer id.
              - type: array
                description: The order's customer id.
                items:
                  type: string
                  title: customer_id
                  description: The customer id's details.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.list()
            .then(({ orders, count, limit, offset }) => {
              console.log(orders)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/orders' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of orders
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before the returned items.
                      count:
                        type: number
                        title: count
                        description: The total count of items.
                  - type: object
                    description: The paginated list of orders.
                    required:
                      - orders
                    properties:
                      orders:
                        type: array
                        description: The list of orders.
                        items:
                          $ref: '#/components/schemas/AdminOrder'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: getOrdersListWorkflow
      x-events: []
  /admin/orders/export:
    post:
      operationId: PostOrdersExport
      summary: Export Orders
      description: |
        Start an order export process to retrieve a CSV of exported orders.

        You'll receive in the response the transaction ID of the workflow generating the CSV file. To check the status of the execution, send a GET request to `/admin/workflows-executions/export-orders/:transaction-id`.

        Once the execution finishes successfully, a notification is created for the export. You can retrieve the notifications using the `/admin/notification` API route to retrieve the file's download URL.
      x-authenticated: true
      parameters:
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: The ID of the order to export.
              - type: array
                description: The IDs of the orders to export.
                items:
                  type: string
                  title: id
                  description: An order ID.
        - name: sales_channel_id
          in: query
          description: The IDs of the sales channels to export their orders.
          required: false
          schema:
            type: array
            description: The IDs of the sales channels to export their orders.
            items:
              type: string
              title: sales_channel_id
              description: A sales channel ID.
        - name: region_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: region_id
                description: The ID of a region to export orders in it.
              - type: array
                description: The IDs of regions to export their orders.
                items:
                  type: string
                  title: region_id
                  description: A region ID.
        - name: customer_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: customer_id
                description: The ID of a customer to export their orders.
              - type: array
                description: The IDs of customers to export their orders.
                items:
                  type: string
                  title: customer_id
                  description: A customer ID.
        - name: q
          in: query
          description: A search query to filter exported orders by.
          required: false
          schema:
            type: string
            title: q
            description: A search query to filter exported orders by.
        - name: created_at
          in: query
          description: Filter by an order's creation date.
          required: false
          schema:
            type: object
            description: Filter by an order's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by an order's update date.
          required: false
          schema:
            type: object
            description: Filter by an order's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: with_deleted
          in: query
          description: Whether to include deleted orders in the export.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted orders in the export.
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: The status of the orders to export.
                enum:
                  - canceled
                  - completed
                  - pending
                  - draft
                  - archived
                  - requires_action
              - type: array
                description: The statuses of the orders to export.
                items:
                  type: string
                  description: The order status.
                  enum:
                    - canceled
                    - completed
                    - pending
                    - draft
                    - archived
                    - requires_action
              - type: object
                description: The order's status.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.export()
            .then(({ transaction_id }) => {
              console.log(transaction_id)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/orders/export' \
            -H 'Authorization: Bearer {access_token}'
      tags:
        - Orders
      responses:
        '202':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExportOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: exportOrdersWorkflow
      x-events: []
      x-since: 2.12.3
  /admin/orders/{id}:
    get:
      operationId: GetOrdersId
      summary: Get an Order
      description: Retrieve an order by its ID. You can expand the order's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: version
          in: query
          description: The order's version.
          required: false
          schema:
            type: number
            title: version
            description: The order's version.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.retrieve("order_123")
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/orders/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: getOrderDetailWorkflow
      x-events: []
    post:
      operationId: PostOrdersId
      summary: Update Order
      description: Update an order's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: version
          in: query
          description: The version of the order to retrieve.
          required: false
          schema:
            type: number
            title: version
            description: The version of the order to retrieve.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateOrder'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.update(
              "order_123",
              {
                email: "new_email@example.com",
                shipping_address: {
                  first_name: "John",
                  last_name: "Doe",
                  address_1: "123 Main St",
                }
              }
            )
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/orders/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateOrderWorkflow
      x-events:
        - name: order.updated
          payload: |-
            ```ts
            {
              id, // The ID of the order
            }
            ```
          description: |-
            Emitted when the details of an order or draft order is updated. This
            doesn't include updates made by an edit.
          deprecated: false
  /admin/orders/{id}/archive:
    post:
      operationId: PostOrdersIdArchive
      summary: Archive an Order
      description: Change the status of an order to archived.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.archive("order_123")
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/orders/{id}/archive' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "order_id": "{value}"
            }'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: archiveOrderWorkflow
      x-events:
        - name: order.archived
          payload: |-
            ```ts
            {
              id, // The ID of the order
            }
            ```
          description: Emitted when an order is archived.
          deprecated: false
  /admin/orders/{id}/cancel:
    post:
      operationId: PostOrdersIdCancel
      summary: Cancel Order
      description: |
        Cancel an order. The cancelation fails if:
        - The order has captured payments.


        - The order has refund payments.


        - The order has fulfillments that aren't canceled.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.cancel("order_123")
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/orders/{id}/cancel' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: cancelOrderWorkflow
      x-events:
        - name: order.canceled
          payload: |-
            ```ts
            {
              id, // The ID of the order
            }
            ```
          description: Emitted when an order is canceld.
          deprecated: false
  /admin/orders/{id}/changes:
    get:
      operationId: GetOrdersIdChanges
      summary: List Changes on an Order
      x-sidebar-summary: List Changes
      description: |
        Retrieve a list of changes made on an order, including returns, exchanges, etc...

        The changes can be filtered by fields like `created_at`. The changes can also be paginated.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: |-
              Comma-separated fields that should be included in the returned data.
              if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
              without prefix it will replace the entire default fields.
        - name: created_at
          in: query
          description: Filter by the order change's creation date.
          required: false
          schema:
            type: object
            description: Filter by the order change's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the order change's update date.
          required: false
          schema:
            type: object
            description: Filter by the order change's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by the order change's deletion date.
          required: false
          schema:
            type: object
            description: Filter by the order change's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by an order change ID.
              - type: array
                description: Filter by order change IDs.
                items:
                  type: string
                  title: id
                  description: An order change ID.
              - type: object
                description: The order's ID.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by the order change's status.
              - type: array
                description: Filter by multiple order change statuses.
                items:
                  type: string
                  title: status
                  description: An order change status.
              - type: object
                description: The order change's status.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
        - name: change_type
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: change_type
                description: Filter by the order change's type.
              - type: array
                description: Filter by multiple order change types.
                items:
                  type: string
                  title: change_type
                  description: An order change type.
              - type: object
                description: Filter the order change's type.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.listChanges("order_123")
            .then(({ order_changes }) => {
              console.log(order_changes)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/orders/{id}/changes' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderChangesResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/orders/{id}/complete:
    post:
      operationId: PostOrdersIdComplete
      summary: Complete Order
      description: Mark an order as completed.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              properties:
                additional_data:
                  type: object
                  description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.complete("order_123")
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/orders/{id}/complete' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "order_id": "{value}"
            }'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: completeOrderWorkflow
      x-events:
        - name: order.completed
          payload: |-
            ```ts
            {
              id, // The ID of the order
            }
            ```
          description: Emitted when orders are completed.
          deprecated: false
  /admin/orders/{id}/credit-lines:
    post:
      operationId: PostOrdersIdCreditLines
      summary: Create Credit Line for Order
      x-sidebar-summary: Create Credit Line
      description: Create a credit line for an order.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateOrderCreditLine'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.createCreditLine(
              "order_123",
              {
                amount: 100,
                reference: "order",
                reference_id: "order_123",
              }
            )
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/orders/{id}/credit-lines' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "amount": 32,
              "reference": "{value}",
              "reference_id": "{value}"
            }'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createOrderCreditLinesWorkflow
      x-events: []
  /admin/orders/{id}/fulfillments:
    post:
      operationId: PostOrdersIdFulfillments
      summary: Create an Order Fulfillment
      x-sidebar-summary: Create Fulfillment
      description: Create a fulfillment for an order. The creation fails if the order is canceled.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The fulfillment's details.
                  required:
                    - items
                    - location_id
                    - metadata
                  properties:
                    items:
                      type: array
                      description: The items to fulfill.
                      items:
                        type: object
                        description: An item's details.
                        required:
                          - id
                          - quantity
                        properties:
                          id:
                            type: string
                            title: id
                            description: The item's ID.
                          quantity:
                            type: number
                            title: quantity
                            description: The item's quantity to fulfill.
                    location_id:
                      type: string
                      title: location_id
                      description: The ID of the location to fulfill the items from. If not provided, the location associated with the shipping option of the order's shipping method is used.
                    no_notification:
                      type: boolean
                      title: no_notification
                      description: Whether to send the customer a notification about the created fulfillment.
                    metadata:
                      type: object
                      description: The order's metadata. Can hold custom key-value pairs.
                - type: object
                  description: The fulfillment's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The fulfillment's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.createFulfillment("order_123", {
              items: [
                {
                  id: "orli_123",
                  quantity: 1
                }
              ]
            })
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/orders/{id}/fulfillments' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "items": [
                {
                  "id": "id_YePfQ6PBCBKvmYyreUt2",
                  "quantity": 6623610359775232
                }
              ],
              "location_id": "{value}",
              "metadata": {}
            }'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createOrderFulfillmentWorkflow
      x-events:
        - name: order.fulfillment_created
          payload: |-
            ```ts
            {
              order_id, // The ID of the order
              fulfillment_id, // The ID of the fulfillment
              no_notification, // (boolean) Whether to notify the customer
            }
            ```
          description: Emitted when a fulfillment is created for an order.
          deprecated: false
  /admin/orders/{id}/fulfillments/{fulfillment_id}/cancel:
    post:
      operationId: PostOrdersIdFulfillmentsFulfillment_idCancel
      summary: Cancel Fulfillment
      description: Cancel an order's fulfillment. The fulfillment can't be canceled if it's shipped.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fulfillment_id
          in: path
          description: The order's fulfillment id.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The cancelation details.
                  properties:
                    no_notification:
                      type: boolean
                      title: no_notification
                      description: Whether the customer should receive a notification about this change.
                - type: object
                  description: The cancelation details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The cancelation details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.cancelFulfillment(
              "order_123",
              "ful_123",
              {
                no_notification: false
              }
            )
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/orders/{id}/fulfillments/{fulfillment_id}/cancel' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: cancelOrderFulfillmentWorkflow
      x-events:
        - name: order.fulfillment_canceled
          payload: |-
            ```ts
            {
              order_id, // The ID of the order
              fulfillment_id, // The ID of the fulfillment
              no_notification, // (boolean) Whether to notify the customer
            }
            ```
          description: Emitted when an order's fulfillment is canceled.
          deprecated: false
  /admin/orders/{id}/fulfillments/{fulfillment_id}/mark-as-delivered:
    post:
      operationId: PostOrdersIdFulfillmentsFulfillment_idMarkAsDelivered
      summary: Mark a Fulfillment as Delivered.
      x-sidebar-summary: Mark Delivered
      description: Mark an order's fulfillment as delivered.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fulfillment_id
          in: path
          description: The fulfillment's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.markAsDelivered(
              "order_123",
              "ful_123",
            )
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/orders/{id}/fulfillments/{fulfillment_id}/mark-as-delivered' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: markOrderFulfillmentAsDeliveredWorkflow
      x-events:
        - name: delivery.created
          payload: |-
            ```ts
            {
              id, // the ID of the fulfillment
            }
            ```
          description: Emitted when a fulfillment is marked as delivered.
          deprecated: false
  /admin/orders/{id}/fulfillments/{fulfillment_id}/shipments:
    post:
      operationId: PostOrdersIdFulfillmentsFulfillment_idShipments
      summary: Create Shipment for an Order's Fulfillment
      x-sidebar-summary: Create Shipment
      description: Create a shipment for an order's fulfillment.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fulfillment_id
          in: path
          description: The fulfillment's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The shipment's details.
                  required:
                    - items
                    - metadata
                  properties:
                    items:
                      type: array
                      description: The items to create shipment for.
                      items:
                        type: object
                        description: The details of the item to create shipment for.
                        required:
                          - id
                          - quantity
                        properties:
                          id:
                            type: string
                            title: id
                            description: The item's ID.
                          quantity:
                            type: number
                            title: quantity
                            description: The item's quantity to ship.
                    labels:
                      type: array
                      description: The labels to create for the shipment.
                      items:
                        type: object
                        description: The label's labels.
                        required:
                          - tracking_number
                          - tracking_url
                          - label_url
                        properties:
                          tracking_number:
                            type: string
                            title: tracking_number
                            description: The label's tracking number.
                          tracking_url:
                            type: string
                            title: tracking_url
                            description: The label's tracking url.
                          label_url:
                            type: string
                            title: label_url
                            description: The label's url.
                    no_notification:
                      type: boolean
                      title: no_notification
                      description: Whether to send the customer a notification about the created shipment.
                    metadata:
                      type: object
                      description: The shipment's metadata. Can hold custom key-value pairs.
                - type: object
                  description: The shipment's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The shipment's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.createShipment(
              "order_123",
              "ful_123",
              {
                items: [
                  {
                    id: "fulit_123",
                    quantity: 1
                  }
                ]
              }
            )
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/orders/{id}/fulfillments/{fulfillment_id}/shipments' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "items": [
                {
                  "id": "id_3QQtl2VvE73c",
                  "quantity": 6772917941567488
                }
              ],
              "metadata": {}
            }'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createOrderShipmentWorkflow
      x-events:
        - name: shipment.created
          payload: |-
            ```ts
            {
              id, // the ID of the fulfillment
              no_notification, // (boolean) whether to notify the customer
            }
            ```
          description: Emitted when a shipment is created for an order.
          deprecated: false
  /admin/orders/{id}/line-items:
    get:
      operationId: GetOrdersIdLineItems
      summary: List Line Items
      description: Retrieve a list of line items in a order. The line items can be filtered by fields like FILTER FIELDS. The line items can also be paginated.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: The order's ID.
              - type: array
                description: The order's ID.
                items:
                  type: string
                  title: id
                  description: The id's ID.
        - name: item_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: item_id
                description: The order's item id.
              - type: array
                description: The order's item id.
                items:
                  type: string
                  title: item_id
                  description: The item id's details.
        - name: version
          in: query
          required: false
          schema:
            oneOf:
              - type: number
                title: version
                description: The order's version.
              - type: array
                description: The order's version.
                items:
                  type: number
                  title: version
                  description: The version's details.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.listLineItems("order_123")
            .then(({ order_items }) => {
              console.log(order_items)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/orders/{id}/line-items' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: SUMMARY
                required:
                  - order_items
                properties:
                  order_items:
                    type: array
                    description: The order's order items.
                    items:
                      $ref: '#/components/schemas/AdminOrderItem'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/orders/{id}/preview:
    get:
      operationId: GetOrdersIdPreview
      summary: Get Preview
      description: Retrieve a preview of an order using its associated change, such as an edit.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.retrievePreview("order_123")
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/orders/{id}/preview' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/orders/{id}/shipping-options:
    get:
      operationId: GetOrdersIdShippingOptions
      summary: List Shipping Options for Order
      x-sidebar-summary: List Shipping Options
      description: Retrieve a list of shipping options that can be used for outbound shipping in an order. This is especially useful when adding outbound shipping to order exchanges or claims.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.listShippingOptions("order_123")
            .then(({ shipping_options }) => {
              console.log(shipping_options)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/orders/{id}/shipping-options' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The list of shipping options.
                required:
                  - shipping_options
                properties:
                  shipping_options:
                    type: array
                    description: The list of shipping options.
                    items:
                      type: object
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: listShippingOptionsForOrderWorkflow
      x-events: []
      x-since: 2.10.0
  /admin/orders/{id}/transfer:
    post:
      operationId: PostOrdersIdTransfer
      x-sidebar-summary: Request Transfer
      summary: Request Order Transfer
      description: Request an order to be transfered to another customer. The transfer is confirmed by sending a request to the [Accept Order Transfer](https://docs.medusajs.com/api/store#orders_postordersidtransferaccept) Store API route.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminRequestOrderTransfer'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.requestTransfer("order_123", {
              customer_id: "cus_123",
              internal_note: "Internal note",
            })
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/orders/{id}/transfer' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "customer_id": "cus_123"
            }'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: requestOrderTransferWorkflow
      x-events:
        - name: order.transfer_requested
          payload: |-
            ```ts
            {
              id, // The ID of the order
              order_change_id, // The ID of the order change created for the transfer
            }
            ```
          description: |-
            Emitted when an order is requested to be transferred to
            another customer.
          deprecated: false
  /admin/orders/{id}/transfer/cancel:
    post:
      operationId: PostOrdersIdTransferCancel
      summary: Cancel Transfer Request
      x-sidebar-summary: Cancel Transfer
      description: Cancel a request to transfer an order to another customer.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The order's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.order.cancelTransfer("order_123")
            .then(({ order }) => {
              console.log(order)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/orders/{id}/transfer/cancel' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Orders
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: cancelOrderTransferRequestWorkflow
      x-events: []
  /admin/payment-collections:
    post:
      operationId: PostPaymentCollections
      summary: Create Payment Collection
      description: Create a payment collection.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreatePaymentCollection'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.paymentCollection.create({
              order_id: "order_123"
            })
            .then(({ payment_collection }) => {
              console.log(payment_collection)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/payment-collections' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "order_id": "{value}"
            }'
      tags:
        - Payment Collections
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPaymentCollectionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createOrderPaymentCollectionWorkflow
      x-events: []
  /admin/payment-collections/{id}:
    delete:
      operationId: DeletePaymentCollectionsId
      summary: Delete a Payment Collection
      description: Delete a payment collection.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The payment collection's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.paymentCollection.delete("paycol_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/payment-collections/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Payment Collections
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminDeletePaymentCollectionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteOrderPaymentCollections
      x-events: []
  /admin/payment-collections/{id}/mark-as-paid:
    post:
      operationId: PostPaymentCollectionsIdMarkAsPaid
      summary: Mark a Payment Collection as Paid
      x-sidebar-summary: Mark as Paid
      description: Mark a payment collection as paid. This creates and authorizes a payment session, then capture its payment, using the manual payment provider.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The payment collection's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminMarkPaymentCollectionAsPaid'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.paymentCollection.markAsPaid("paycol_123", {
              order_id: "order_123"
            })
            .then(({ payment_collection }) => {
              console.log(payment_collection)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/payment-collections/{id}/mark-as-paid' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "order_id": "{value}"
            }'
      tags:
        - Payment Collections
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPaymentCollectionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: markPaymentCollectionAsPaid
      x-events:
        - name: payment.captured
          payload: |-
            ```ts
            {
              id, // the ID of the payment
            }
            ```
          description: Emitted when a payment is captured.
          deprecated: false
  /admin/payments:
    get:
      operationId: GetPayments
      summary: List Payments
      description: Retrieve a list of payments. The payments can be filtered by fields such as `id`. The payments can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the payment's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the payment's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a payment ID.
              - type: array
                description: Filter by payment IDs.
                items:
                  type: string
                  title: id
                  description: A payment ID.
        - name: payment_session_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: payment_session_id
                description: Filter by a payment session ID to retrieve its associated payments.
              - type: array
                description: Filter by payment session IDs to retrieve their associated payments.
                items:
                  type: string
                  title: payment_session_id
                  description: A payment session's ID.
        - name: created_at
          in: query
          description: Filter by the payment's creation date.
          required: false
          schema:
            type: object
            description: Filter by the payment's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the payment's update date.
          required: false
          schema:
            type: object
            description: Filter by the payment's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by the payment's deletion date.
          required: false
          schema:
            type: object
            description: Filter by the payment's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.payment.list()
            .then(({ payments, count, limit, offset }) => {
              console.log(payments)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/payments' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Payments
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of payments.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of returned items.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of payments.
                  - type: object
                    description: The paginated list of payments.
                    required:
                      - payments
                    properties:
                      payments:
                        type: array
                        description: The list of payments.
                        items:
                          $ref: '#/components/schemas/AdminPayment'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/payments/payment-providers:
    get:
      operationId: GetPaymentsPaymentProviders
      summary: List Payment Providers
      description: Retrieve a list of payment providers. The payment providers can be filtered by fields such as `id`. The payment providers can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: id
          in: query
          required: true
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a payment provider's ID.
              - type: array
                description: Filter by payment provider IDs.
                items:
                  type: string
                  title: id
                  description: A payment provider ID.
        - name: is_enabled
          in: query
          description: Filter by whether the payment provider is enabled.
          required: false
          schema:
            type: boolean
            title: is_enabled
            description: Filter by whether the payment provider is enabled.
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.payment.listPaymentProviders()
            .then(({ payment_providers, count, limit, offset }) => {
              console.log(payment_providers)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/payments/payment-providers' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Payments
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The list of payment providers.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of payment providers.
                    required:
                      - payment_providers
                    properties:
                      payment_providers:
                        type: array
                        description: The list of payment providers.
                        items:
                          $ref: '#/components/schemas/AdminPaymentProvider'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/payments/{id}:
    get:
      operationId: GetPaymentsId
      summary: Get a Payment
      description: Retrieve a payment by its ID. You can expand the payment's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The payment's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.payment.retrieve("pay_123")
            .then(({ payment }) => {
              console.log(payment)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/payments/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Payments
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPaymentResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/payments/{id}/capture:
    post:
      operationId: PostPaymentsIdCapture
      summary: Capture Payment
      description: Capture an amount of a payment. This uses the `capturePayment` method of the payment provider associated with the payment's collection.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The payment's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCapturePayment'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.payment.capture("paycol_123", {})
            .then(({ payment }) => {
              console.log(payment)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/payments/{id}/capture' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Payments
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPaymentResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: capturePaymentWorkflow
      x-events:
        - name: payment.captured
          payload: |-
            ```ts
            {
              id, // the ID of the payment
            }
            ```
          description: Emitted when a payment is captured.
          deprecated: false
  /admin/payments/{id}/refund:
    post:
      operationId: PostPaymentsIdRefund
      summary: Refund Payment
      description: Refund an amount of a payment. This uses the `refundPayment` method of the payment provider associated with the payment's collection.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The payment's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminRefundPayment'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.payment.refund("paycol_123", {})
            .then(({ payment }) => {
              console.log(payment)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/payments/{id}/refund' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Payments
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPaymentResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: refundPaymentWorkflow
      x-events:
        - name: payment.refunded
          payload: |-
            ```ts
            {
              id, // the ID of the payment
            }
            ```
          description: Emitted when a payment is refunded.
          deprecated: false
  /admin/plugins:
    get:
      operationId: GetPlugins
      summary: List Plugins
      description: Retrieve the list of plugins installed in the Medusa application.
      x-authenticated: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.plugin.list()
            .then(({ plugins }) => {
              console.log(plugins)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/plugins' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Plugins
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPluginsListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/price-lists:
    get:
      operationId: GetPriceLists
      summary: List Price Lists
      description: Retrieve a list of price lists. The price lists can be filtered by fields such as `id`. The price lists can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the price list's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the price list's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a price list ID.
              - type: array
                description: Filter by price list IDs.
                items:
                  type: string
                  title: id
                  description: A price list ID.
        - name: starts_at
          in: query
          description: Filter by a price list's start date.
          required: false
          schema:
            type: object
            description: Filter by a price list's start date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: starts_at
        - name: ends_at
          in: query
          description: Filter by the price list's end date.
          required: false
          schema:
            type: object
            description: Filter by the price list's end date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: ends_at
        - name: status
          in: query
          description: Filter by the price list's status.
          required: false
          schema:
            type: array
            description: Filter by the price list's status.
            items:
              type: string
              description: A price list's status.
              enum:
                - active
                - draft
        - name: rules_count
          in: query
          description: Filter by the price list's rules count.
          required: false
          schema:
            type: array
            description: Filter by the price list's rules count.
            items:
              type: number
              title: rules_count
              description: The price list's rule count.
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.priceList.list()
            .then(({ price_lists, count, limit, offset }) => {
              console.log(price_lists)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/price-lists' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Price Lists
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPriceListListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostPriceLists
      summary: Create Price List
      description: Create a price list.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: q
          in: query
          description: Apply a search query to the price list's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Apply a search query to the price list's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a specific price list ID.
              - type: array
                description: Filter by multiple price list IDs.
                items:
                  type: string
                  title: id
                  description: A price list ID.
        - name: starts_at
          in: query
          description: Filter by a price list's start date.
          required: false
          schema:
            type: object
            description: Filter by a price list's start date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: starts_at
        - name: ends_at
          in: query
          description: Filter by a price list's end date.
          required: false
          schema:
            type: object
            description: Filter by a price list's end date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: ends_at
        - name: status
          in: query
          description: Filter by price list statuses.
          required: false
          schema:
            type: array
            description: Filter by price list statuses.
            items:
              type: string
              description: A price list status.
              enum:
                - draft
                - active
        - name: rules_count
          in: query
          description: Filter by multiple price list rules count.
          required: false
          schema:
            type: array
            description: Filter by price list rules count.
            items:
              type: number
              title: rules_count
              description: A price list's rules count.
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: with_deleted
          in: query
          description: The price list's with deleted.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: The price list's with deleted.
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreatePriceList'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.priceList.create({
              title: "My Price List",
              status: "active",
              type: "sale",
              prices: [
                {
                  variant_id: "variant_123",
                  amount: 10,
                  currency_code: "usd",
                  rules: {
                    region_id: "reg_123"
                  }
                }
              ]
            })
            .then(({ price_list }) => {
              console.log(price_list)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/price-lists' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "title": "{value}",
              "description": "{value}",
              "starts_at": "{value}",
              "ends_at": "{value}"
            }'
      tags:
        - Price Lists
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPriceListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createPriceListsWorkflow
      x-events: []
  /admin/price-lists/{id}:
    get:
      operationId: GetPriceListsId
      summary: Get a Price List
      description: Retrieve a price list by its ID. You can expand the price list's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The price list's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.priceList.retrieve("plist_123")
            .then(({ price_list }) => {
              console.log(price_list)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/price-lists/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Price Lists
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPriceListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostPriceListsId
      summary: Update a Price List
      description: Update a price list's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The price list's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdatePriceList'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.priceList.update("plist_123", {
              title: "My Price List",
            })
            .then(({ price_list }) => {
              console.log(price_list)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/price-lists/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "description": "{value}",
              "starts_at": "{value}",
              "ends_at": "{value}"
            }'
      tags:
        - Price Lists
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPriceListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updatePriceListsWorkflow
      x-events: []
    delete:
      operationId: DeletePriceListsId
      summary: Delete a Price List
      description: Delete a price list.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The price list's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.priceList.delete("plist_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/price-lists/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Price Lists
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPriceListDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deletePriceListsWorkflow
      x-events: []
  /admin/price-lists/{id}/prices:
    get:
      operationId: GetPriceListsIdPrices
      summary: List Prices in a Price List
      x-sidebar-summary: List Prices
      description: Retrieve a list of prices in a price list. The prices can also be paginated.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The ID of the price list to retrieve prices from.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.priceList.prices("plist_123")
            .then(({ prices }) => {
              console.log(prices)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/price-lists/{id}/prices' \
            -H 'Authorization: Bearer {access_token}'
      tags:
        - Price Lists
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPriceListPriceListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.12.3
  /admin/price-lists/{id}/prices/batch:
    post:
      operationId: PostPriceListsIdPricesBatch
      summary: Manage Prices in Price List
      x-sidebar-summary: Manage Prices
      description: Manage the prices of a price list to create, update, or delete them.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The price list's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: The prices to create, update, or delete.
              properties:
                create:
                  type: array
                  description: The prices to create.
                  items:
                    type: object
                    description: A price's details.
                    required:
                      - currency_code
                      - variant_id
                      - amount
                    properties:
                      currency_code:
                        type: string
                        title: currency_code
                        description: The price's currency code.
                      amount:
                        type: number
                        title: amount
                        description: The price's amount.
                      variant_id:
                        type: string
                        title: variant_id
                        description: The ID of the variant this price is for.
                      min_quantity:
                        type: number
                        title: min_quantity
                        description: The minimum quantity that must be available of the associated variant in the cart for this price to apply.
                      max_quantity:
                        type: number
                        title: max_quantity
                        description: The maximum quantity that must be available of the associated variant in the cart for this price list to apply.
                      rules:
                        type: object
                        description: Key-value pair rules to apply on the price.
                        example:
                          region_id: 123
                update:
                  type: array
                  description: The prices to update.
                  items:
                    type: object
                    description: The properties to update in a price.
                    required:
                      - id
                      - variant_id
                    properties:
                      id:
                        type: string
                        title: id
                        description: The price's ID.
                      currency_code:
                        type: string
                        title: currency_code
                        description: The price's currency code.
                      amount:
                        type: number
                        title: amount
                        description: The price's amount.
                      variant_id:
                        type: string
                        title: variant_id
                        description: The ID of the variant this price is for.
                      min_quantity:
                        type: number
                        title: min_quantity
                        description: The minimum quantity that must be available of the associated variant in the cart for this price to apply.
                      max_quantity:
                        type: number
                        title: max_quantity
                        description: The maximum quantity that must be available of the associated variant in the cart for this price list to apply.
                      rules:
                        type: object
                        description: Key-value pair rules to apply on the price.
                        example:
                          region_id: 123
                delete:
                  type: array
                  description: The prices to delete.
                  items:
                    type: string
                    title: delete
                    description: A price's ID.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.priceList.batchPrices("plist_123", {
              create: [{
                variant_id: "variant_123",
                currency_code: "usd",
                amount: 10,
                rules: {
                  region_id: "reg_123"
                }
              }],
              update: [{
                id: "price_123",
                variant_id: "variant_123",
                amount: 20,
              }],
              delete: ["price_123"]
            })
            .then(({ created, updated, deleted }) => {
              console.log(created, updated, deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/price-lists/{id}/prices/batch' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Price Lists
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPriceListBatchResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchPriceListPricesWorkflow
      x-events: []
  /admin/price-lists/{id}/products:
    post:
      operationId: PostPriceListsIdProducts
      summary: Remove Products from Price List
      description: Remove products from a price list.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The price list's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminLinkPriceListProducts'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.priceList.linkProducts("plist_123", {
              remove: ["prod_123"]
            })
            .then(({ price_list }) => {
              console.log(price_list)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/price-lists/{id}/products' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Price Lists
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPriceListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchPriceListPricesWorkflow
      x-events: []
  /admin/price-preferences:
    get:
      operationId: GetPricePreferences
      summary: List Price Preferences
      description: Retrieve a list of price preferences. The price preferences can be filtered by fields such as `id`. The price preferences can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a price preference ID.
              - type: array
                description: Filter by price preference IDs.
                items:
                  type: string
                  title: id
                  description: A price preference ID.
        - name: attribute
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: attribute
                description: Filter by a price preference's attribute.
              - type: array
                description: Filter by price preference attributes.
                items:
                  type: string
                  title: attribute
                  description: A price preference's attribute.
        - name: value
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: value
                description: Filter by a price preference's value.
              - type: array
                description: Filter by price preference values.
                items:
                  type: string
                  title: value
                  description: A price preference's value.
        - name: q
          in: query
          description: Search term to apply on the price preference's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to apply on the price preference's searchable properties.
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.pricePreference.list()
            .then(({ price_preferences, count, limit, offset }) => {
              console.log(price_preferences)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/price-preferences' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Price Preferences
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPricePreferenceListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostPricePreferences
      summary: Create Price Preference
      description: Create a price preference.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreatePricePreference'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.pricePreference.create({
              attribute: "region_id",
              value: "region_123",
              is_tax_inclusive: true
            })
            .then(({ price_preference }) => {
              console.log(price_preference)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/price-preferences' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Price Preferences
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPricePreferenceResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createPricePreferencesWorkflow
      x-events: []
  /admin/price-preferences/{id}:
    get:
      operationId: GetPricePreferencesId
      summary: Get a Price Preference
      description: Retrieve a price preference by its ID. You can expand the price preference's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The price preference's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.pricePreference.retrieve("prpref_123")
            .then(({ price_preference }) => {
              console.log(price_preference)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/price-preferences/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Price Preferences
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPricePreferenceResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostPricePreferencesId
      summary: Update a Price Preference
      description: Update a price preference's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The price preference's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdatePricePreference'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.pricePreference.update("prpref_123", {
              is_tax_inclusive: true
            })
            .then(({ price_preference }) => {
              console.log(price_preference)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/price-preferences/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Price Preferences
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPricePreferenceResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updatePricePreferencesWorkflow
      x-events: []
    delete:
      operationId: DeletePricePreferencesId
      summary: Delete a Price Preference
      description: Delete a price preference.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The price preference's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.pricePreference.delete("prpref_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/price-preferences/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Price Preferences
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPricePreferenceDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deletePricePreferencesWorkflow
      x-events: []
  /admin/product-categories:
    get:
      operationId: GetProductCategories
      summary: List Product Categories
      description: Retrieve a list of product categories. The product categories can be filtered by fields such as `id`. The product categories can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter on the product category's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter on the product category's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a product category's ID.
              - type: array
                description: Filter by product category IDs.
                items:
                  type: string
                  title: id
                  description: A product category ID.
        - name: description
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: description
                description: Filter by the category's description. This performs a full-text search. To do keyword search, use the `q` parameter instead.
              - type: array
                description: Filter by category descriptions. This performs a full-text search. To do keyword search, use the `q` parameter instead.
                items:
                  type: string
                  title: description
                  description: The category's description.
        - name: handle
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: handle
                description: Filter by a category's handle.
              - type: array
                description: Filter by category handles.
                items:
                  type: string
                  title: handle
                  description: A category's handle.
        - name: parent_category_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: parent_category_id
                description: Filter by a parent category's ID to retrieve its child categories.
              - type: array
                description: Filter by parent category IDs to retrieve their child categories.
                items:
                  type: string
                  title: parent_category_id
                  description: A parent category's ID.
        - name: include_ancestors_tree
          in: query
          description: Whether to include the parent category of each category. If you enable this, add to the `fields` query parameter `parent_category` to set the parent of a category in this field. You can either pass `*parent_category` to retreieve the fields of all parent categories, or select specific fields to make the response size smaller. For example, `fields=parent_category.id,parent_category.name`.
          required: false
          schema:
            type: boolean
            title: include_ancestors_tree
            description: Whether to include the parent category of each category. If you enable this, add to the `fields` query parameter `parent_category` to set the parent of a category in this field. You can either pass `*parent_category` to retreieve the fields of all parent categories, or select specific fields to make the response size smaller. For example, `fields=parent_category.id,parent_category.name`.
        - name: include_descendants_tree
          in: query
          description: Whether to include the child categories of each category. If you enable this, add to the `fields` query parameter `category_children` to set the children of a category in this field. You can either pass `*category_children` to retreieve the fields of all child categories, or select specific fields to make the response size smaller. For example, `fields=category_children.id,category_children.name`.
          required: false
          schema:
            type: boolean
            title: include_descendants_tree
            description: Whether to include the child categories of each category. If you enable this, add to the `fields` query parameter `category_children` to set the children of a category in this field. You can either pass `*category_children` to retreieve the fields of all child categories, or select specific fields to make the response size smaller. For example, `fields=category_children.id,category_children.name`.
        - name: is_internal
          in: query
          description: Filter by whether the category is internal.
          required: false
          schema:
            type: boolean
            title: is_internal
            description: Filter by whether the category is internal.
        - name: is_active
          in: query
          description: Filter by whether the category is active.
          required: false
          schema:
            type: boolean
            title: is_active
            description: Filter by whether the category is active.
        - name: created_at
          in: query
          description: Filter by the category's creation date.
          required: false
          schema:
            type: object
            description: Filter by the category's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the category's update date.
          required: false
          schema:
            type: object
            description: Filter by the category's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by the category's deletion date.
          required: false
          schema:
            type: object
            description: Filter by the category's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: name
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: name
                description: The product category's name.
              - type: array
                description: The product category's name.
                items:
                  type: string
                  title: name
                  description: The name's details.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productCategory.list()
            .then(({ product_categories, count, limit, offset }) => {
              console.log(product_categories)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/product-categories' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Product Categories
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductCategoryListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostProductCategories
      summary: Create Product Category
      description: Create a product category.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: include_ancestors_tree
          in: query
          description: Whether to retrieve the category's parent. If you enable this, add to the `fields` query parameter `parent_category` to set the parent of a category in this field. You can either pass `*parent_category` to retreieve the fields of all parent categories, or select specific fields to make the response size smaller. For example, `fields=parent_category.id,parent_category.name`.
          required: false
          schema:
            type: boolean
            title: include_ancestors_tree
            description: Whether to retrieve the category's parent. If you enable this, add to the `fields` query parameter `parent_category` to set the parent of a category in this field. You can either pass `*parent_category` to retreieve the fields of all parent categories, or select specific fields to make the response size smaller. For example, `fields=parent_category.id,parent_category.name`.
        - name: include_descendants_tree
          in: query
          description: Whether to retrieve a list of child categories. If you enable this, add to the `fields` query parameter `category_children` to set the child of a category in this field. You can either pass `*category_children` to retreieve the fields of all child categories, or select specific fields to make the response size smaller. For example, `fields=category_children.id,category_children.name`.
          required: false
          schema:
            type: boolean
            title: include_descendants_tree
            description: Whether to retrieve a list of child categories. If you enable this, add to the `fields` query parameter `category_children` to set the child of a category in this field. You can either pass `*category_children` to retreieve the fields of all child categories, or select specific fields to make the response size smaller. For example, `fields=category_children.id,category_children.name`.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateProductCategory'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productCategory.create({
              name: "Shirts"
            })
            .then(({ product_category }) => {
              console.log(product_category)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/product-categories' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Vesta",
              "parent_category_id": "{value}",
              "metadata": {}
            }'
      tags:
        - Product Categories
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductCategoryResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createProductCategoriesWorkflow
      x-events:
        - name: product-category.created
          payload: |-
            ```ts
            {
              id, // The ID of the product category
            }
            ```
          description: Emitted when product categories are created.
          deprecated: false
  /admin/product-categories/{id}:
    get:
      operationId: GetProductCategoriesId
      summary: Get a Product Category
      description: Retrieve a product category by its ID. You can expand the product category's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product category's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: include_ancestors_tree
          in: query
          description: Whether to retrieve the category's parent. If you enable this, add to the `fields` query parameter `parent_category` to set the parent of a category in this field. You can either pass `*parent_category` to retreieve the fields of all parent categories, or select specific fields to make the response size smaller. For example, `fields=parent_category.id,parent_category.name`.
          required: false
          schema:
            type: boolean
            title: include_ancestors_tree
            description: Whether to retrieve the category's parent. If you enable this, add to the `fields` query parameter `parent_category` to set the parent of a category in this field. You can either pass `*parent_category` to retreieve the fields of all parent categories, or select specific fields to make the response size smaller. For example, `fields=parent_category.id,parent_category.name`.
        - name: include_descendants_tree
          in: query
          description: Whether to retrieve a list of child categories. If you enable this, add to the `fields` query parameter `category_children` to set the children of a category in this field. You can either pass `*category_children` to retreieve the fields of all child categories, or select specific fields to make the response size smaller. For example, `fields=category_children.id,category_children.name`.
          required: false
          schema:
            type: boolean
            title: include_descendants_tree
            description: Whether to retrieve a list of child categories. If you enable this, add to the `fields` query parameter `category_children` to set the children of a category in this field. You can either pass `*category_children` to retreieve the fields of all child categories, or select specific fields to make the response size smaller. For example, `fields=category_children.id,category_children.name`.
        - name: is_internal
          in: query
          description: Filter by whether the product category is internal.
          required: false
          schema:
            type: boolean
            title: is_internal
            description: Filter by whether the product category is internal.
        - name: is_active
          in: query
          description: Filter by whether the product category is active.
          required: false
          schema:
            type: boolean
            title: is_active
            description: Filter by whether the product category is active.
        - name: q
          in: query
          description: Apply a search query to the product category's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Apply a search query to the product category's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by the product category's ID.
              - type: array
                description: Filter by product category IDs.
                items:
                  type: string
                  title: id
                  description: A product category ID.
        - name: name
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: name
                description: Filter by the product category's name.
              - type: array
                description: Filter by product category names.
                items:
                  type: string
                  title: name
                  description: A product category name.
        - name: description
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: description
                description: Filter by the product category's description.
              - type: array
                description: Filter by product category descriptions.
                items:
                  type: string
                  title: description
                  description: A product category description.
        - name: parent_category_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: parent_category_id
                description: Retrieve the categories of a given parent category's ID.
              - type: array
                description: Retrieve the categories of the given parent category IDs.
                items:
                  type: string
                  title: parent_category_id
                  description: A parent category ID.
        - name: handle
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: handle
                description: Filter by the product category's handle.
              - type: array
                description: Filter by product category handles.
                items:
                  type: string
                  title: handle
                  description: A product category handle.
        - name: created_at
          in: query
          description: Filter by the category's creation date.
          required: false
          schema:
            type: object
            description: Filter by the category's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the category's update date.
          required: false
          schema:
            type: object
            description: Filter by the category's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by the category's deletion date.
          required: false
          schema:
            type: object
            description: Filter by the category's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: with_deleted
          in: query
          description: The product category's with deleted.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: The product category's with deleted.
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productCategory.retrieve("pcat_123")
            .then(({ product_category }) => {
              console.log(product_category)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/product-categories/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Product Categories
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductCategoryResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostProductCategoriesId
      summary: Update a Product Category
      description: Update a product category's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product category's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: include_ancestors_tree
          in: query
          description: Whether to retrieve the category's parent. If you enable this, add to the `fields` query parameter `parent_category` to set the parent of a category in this field. You can either pass `*parent_category` to retreieve the fields of all parent categories, or select specific fields to make the response size smaller. For example, `fields=parent_category.id,parent_category.name`.
          required: false
          schema:
            type: boolean
            title: include_ancestors_tree
            description: Whether to retrieve the category's parent. If you enable this, add to the `fields` query parameter `parent_category` to set the parent of a category in this field. You can either pass `*parent_category` to retreieve the fields of all parent categories, or select specific fields to make the response size smaller. For example, `fields=parent_category.id,parent_category.name`.
        - name: include_descendants_tree
          in: query
          description: Whether to retrieve a list of child categories. If you enable this, add to the `fields` query parameter `category_children` to set the child of a category in this field. You can either pass `*category_children` to retreieve the fields of all child categories, or select specific fields to make the response size smaller. For example, `fields=category_children.id,category_children.name`.
          required: false
          schema:
            type: boolean
            title: include_descendants_tree
            description: Whether to retrieve a list of child categories. If you enable this, add to the `fields` query parameter `category_children` to set the child of a category in this field. You can either pass `*category_children` to retreieve the fields of all child categories, or select specific fields to make the response size smaller. For example, `fields=category_children.id,category_children.name`.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateProductCategory'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productCategory.update("pcat_123", {
              name: "Shirts"
            })
            .then(({ product_category }) => {
              console.log(product_category)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/product-categories/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "parent_category_id": "{value}",
              "metadata": {}
            }'
      tags:
        - Product Categories
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductCategoryResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateProductCategoriesWorkflow
      x-events:
        - name: product-category.updated
          payload: |-
            ```ts
            {
              id, // The ID of the product category
            }
            ```
          description: Emitted when product categories are updated.
          deprecated: false
    delete:
      operationId: DeleteProductCategoriesId
      summary: Delete a Product Category
      description: Delete a product category. This doesn't deleted products in that category.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product category's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productCategory.delete("pcat_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/product-categories/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Product Categories
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductCategoryDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteProductCategoriesWorkflow
      x-events:
        - name: product-category.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the product category
            }
            ```
          description: Emitted when product categories are deleted.
          deprecated: false
  /admin/product-categories/{id}/products:
    post:
      operationId: PostProductCategoriesIdProducts
      summary: Manage Products in Product Category
      x-sidebar-summary: Manage Products
      description: Manage products of a category to add or remove them.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product category's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields. This API route restricts the fields that can be selected. Learn how to override the retrievable fields in the [Retrieve Custom Links](https://docs.medusajs.com/learn/fundamentals/api-routes/retrieve-custom-links) documentation.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: include_ancestors_tree
          in: query
          description: Whether to retrieve the category's parent. If you enable this, add to the `fields` query parameter `parent_category` to set the parent of a category in this field. You can either pass `*parent_category` to retreieve the fields of all parent categories, or select specific fields to make the response size smaller. For example, `fields=parent_category.id,parent_category.name`.
          required: false
          schema:
            type: boolean
            title: include_ancestors_tree
            description: Whether to retrieve the category's parent. If you enable this, add to the `fields` query parameter `parent_category` to set the parent of a category in this field. You can either pass `*parent_category` to retreieve the fields of all parent categories, or select specific fields to make the response size smaller. For example, `fields=parent_category.id,parent_category.name`.
        - name: include_descendants_tree
          in: query
          description: Whether to retrieve a list of child categories. If you enable this, add to the `fields` query parameter `category_children` to set the child of a category in this field. You can either pass `*category_children` to retreieve the fields of all child categories, or select specific fields to make the response size smaller. For example, `fields=category_children.id,category_children.name`.
          required: false
          schema:
            type: boolean
            title: include_descendants_tree
            description: Whether to retrieve a list of child categories. If you enable this, add to the `fields` query parameter `category_children` to set the child of a category in this field. You can either pass `*category_children` to retreieve the fields of all child categories, or select specific fields to make the response size smaller. For example, `fields=category_children.id,category_children.name`.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchLink'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productCategory.updateProducts("pcat_123", {
              add: ["prod_123"],
              remove: ["prod_321"]
            })
            .then(({ product_category }) => {
              console.log(product_category)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/product-categories/{id}/products' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Product Categories
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductCategoryResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchLinkProductsToCategoryWorkflow
      x-events: []
  /admin/product-tags:
    get:
      operationId: GetProductTags
      summary: List Product Tags
      description: Retrieve a list of product tags. The product tags can be filtered by fields such as `id`. The product tags can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the product tag's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the product tag's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a product tag's ID.
              - type: array
                description: Filter by product tag IDs.
                items:
                  type: string
                  title: id
                  description: A product tag's ID.
        - name: value
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: value
                description: Filter by a product tag's value.
              - type: array
                description: Filter by product tag values.
                items:
                  type: string
                  title: value
                  description: A tag value.
        - name: created_at
          in: query
          description: Filter by the tag's creation date.
          required: false
          schema:
            type: object
            description: Filter by the tag's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the tag's update date.
          required: false
          schema:
            type: object
            description: Filter by the tag's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by the tag's deletion date.
          required: false
          schema:
            type: object
            description: Filter by the tag's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productTag.list()
            .then(({ product_tags, count, limit, offset }) => {
              console.log(product_tags)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/product-tags' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Product Tags
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductTagListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostProductTags
      summary: Create Product Tag
      description: Create a product tag.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateProductTag'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productTag.create({
              value: "shirt"
            })
            .then(({ product_tag }) => {
              console.log(product_tag)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/product-tags' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "value": "{value}",
              "metadata": {}
            }'
      tags:
        - Product Tags
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductTagResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createProductTagsWorkflow
      x-events:
        - name: product-tag.created
          payload: |-
            ```ts
            {
              id, // The ID of the product tag
            }
            ```
          description: Emitted when product tags are created.
          deprecated: false
  /admin/product-tags/{id}:
    get:
      operationId: GetProductTagsId
      summary: Get a Product Tag
      description: Retrieve a product tag by its ID. You can expand the product tag's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product tag's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productTag.retrieve("ptag_123")
            .then(({ product_tag }) => {
              console.log(product_tag)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/product-tags/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Product Tags
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductTagResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostProductTagsId
      summary: Update a Product Tag
      description: Update a product tag's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product tag's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateProductTag'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productTag.update("ptag_123", {
              value: "shirt"
            })
            .then(({ product_tag }) => {
              console.log(product_tag)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/product-tags/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "metadata": {}
            }'
      tags:
        - Product Tags
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductTagResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateProductTagsWorkflow
      x-events:
        - name: product-tag.updated
          payload: |-
            ```ts
            {
              id, // The ID of the product tag
            }
            ```
          description: Emitted when product tags are updated.
          deprecated: false
    delete:
      operationId: DeleteProductTagsId
      summary: Delete a Product Tag
      description: Delete a product tag. This doesn't delete products using the tag.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product tag's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productTag.delete("ptag_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/product-tags/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Product Tags
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductTagDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteProductTagsWorkflow
      x-events:
        - name: product-tag.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the product tag
            }
            ```
          description: Emitted when product tags are deleted.
          deprecated: false
  /admin/product-types:
    get:
      operationId: GetProductTypes
      summary: List Product Types
      description: Retrieve a list of product types. The product types can be filtered by fields such as `id`. The product types can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the product type's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the product type's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a product type's ID.
              - type: array
                description: Filter by product type IDs.
                items:
                  type: string
                  title: id
                  description: A product type's ID.
        - name: value
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: value
                description: Filter by a type's value.
              - type: array
                description: Filter by values.
                items:
                  type: string
                  title: value
                  description: A type's value.
        - name: created_at
          in: query
          description: Filter by the type's creation date.
          required: false
          schema:
            type: object
            description: Filter by the type's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the type's update date.
          required: false
          schema:
            type: object
            description: Filter by the type's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by the type's deletion date.
          required: false
          schema:
            type: object
            description: Filter by the type's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productType.list()
            .then(({ product_types, count, limit, offset }) => {
              console.log(product_types)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/product-types' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Product Types
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductTypeListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostProductTypes
      summary: Create Product Type
      description: Create a product type.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateProductType'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productType.create({
              value: "Clothes"
            })
            .then(({ product_type }) => {
              console.log(product_type)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/product-types' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "value": "{value}",
              "metadata": {}
            }'
      tags:
        - Product Types
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductTypeResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createProductTypesWorkflow
      x-events:
        - name: product-type.created
          payload: |-
            ```ts
            {
              id, // The ID of the product type
            }
            ```
          description: Emitted when product types are created.
          deprecated: false
  /admin/product-types/{id}:
    get:
      operationId: GetProductTypesId
      summary: Get a Product Type
      description: Retrieve a product type by its ID. You can expand the product type's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product type's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productType.retrieve("ptyp_123")
            .then(({ product_type }) => {
              console.log(product_type)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/product-types/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Product Types
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductTypeResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostProductTypesId
      summary: Update a Product Type
      description: Update a product type's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product type's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateProductType'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productType.update("ptyp_123", {
              value: "Clothes"
            })
            .then(({ product_type }) => {
              console.log(product_type)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/product-types/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "metadata": {}
            }'
      tags:
        - Product Types
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductTypeResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateProductTypesWorkflow
      x-events:
        - name: product-type.updated
          payload: |-
            ```ts
            {
              id, // The ID of the product type
            }
            ```
          description: Emitted when product types are updated.
          deprecated: false
    delete:
      operationId: DeleteProductTypesId
      summary: Delete a Product Type
      description: Delete a product type. This doesn't delete products of this type.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product type's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productType.delete("ptyp_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/product-types/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Product Types
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductTypeDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteProductTypesWorkflow
      x-events:
        - name: product-type.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the product type
            }
            ```
          description: Emitted when product types are deleted.
          deprecated: false
  /admin/product-variants:
    get:
      operationId: GetProductVariants
      summary: List Product Variants
      description: Retrieve a list of product variants. The product variants can be filtered by fields such as `id`. The product variants can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the product variant's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the product variant's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a variant's ID.
              - type: array
                description: Filter by variant IDs.
                items:
                  type: string
                  title: id
                  description: A variant's ID.
        - name: manage_inventory
          in: query
          description: Filter by whether a variant's `manage_inventory` is enabled.
          required: false
          schema:
            type: boolean
            title: manage_inventory
            description: Filter by whether a variant's `manage_inventory` is enabled.
        - name: allow_backorder
          in: query
          description: Filter by whether backorder is allowed for a variant.
          required: false
          schema:
            type: boolean
            title: allow_backorder
            description: Filter by whether backorder is allowed for a variant.
        - name: created_at
          in: query
          description: Filter by the product variant's creation date.
          required: false
          schema:
            type: object
            description: Filter by the product variant's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the product variant's update date.
          required: false
          schema:
            type: object
            description: Filter by the product variant's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by the product variant's deletion date.
          required: false
          schema:
            type: object
            description: Filter by the product variant's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
        - name: ean
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: ean
                description: The product variant's ean.
              - type: array
                description: The product variant's ean.
                items:
                  type: string
                  title: ean
                  description: The ean's details.
        - name: upc
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: upc
                description: The product variant's upc.
              - type: array
                description: The product variant's upc.
                items:
                  type: string
                  title: upc
                  description: The upc's details.
        - name: barcode
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: barcode
                description: The product variant's barcode.
              - type: array
                description: The product variant's barcode.
                items:
                  type: string
                  title: barcode
                  description: The barcode's details.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.productVariant.list()
            .then(({ variants, count, limit, offset }) => {
              console.log(variants)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/product-variants' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Product Variants
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of product variants.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of product variants.
                    required:
                      - variants
                    properties:
                      variants:
                        type: array
                        description: The product variant's variants.
                        items:
                          $ref: '#/components/schemas/AdminProductVariant'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/products:
    get:
      operationId: GetProducts
      summary: List Products
      description: Retrieve a list of products. The products can be filtered by fields such as `id`. The products can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: price_list_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: price_list_id
                description: Filter by a price list's ID to retrieve its associated products.
              - type: array
                description: The product's price list id.
                items:
                  type: string
                  title: price_list_id
                  description: Filter by a price list IDs to retrieve their associated products.
        - name: q
          in: query
          description: Search term to filter a product's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter a product's searchable properties.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by a product status.
              - type: array
                description: Filter by product statuses.
                items:
                  type: string
                  enum:
                    - draft
                    - proposed
                    - published
                    - rejected
        - name: sales_channel_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: sales_channel_id
                description: Filter by a sales channel's ID to retrieve its associated products.
              - type: array
                description: Filter by sales channel IDs to retrieve their associated products.
                items:
                  type: string
                  title: sales_channel_id
                  description: A sales channel's ID.
        - name: title
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: title
                description: Filter by a title.
              - type: array
                description: Filter by titles
                items:
                  type: string
                  title: title
                  description: A product title.
        - name: handle
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: handle
                description: Filter by a handle.
              - type: array
                description: Filter by handles.
                items:
                  type: string
                  title: handle
                  description: A product handle.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a product ID.
              - type: array
                description: Filter by product IDs.
                items:
                  type: string
                  title: id
                  description: A product's ID.
        - name: is_giftcard
          in: query
          description: Filter by whether a product is a gift card.
          required: false
          schema:
            type: boolean
            title: is_giftcard
            description: Filter by whether a product is a gift card.
        - name: tags
          in: query
          description: Filter by associated tags to retrieve their products.
          required: false
          schema:
            description: Filter by associated tags to retrieve their products.
            properties:
              value:
                type: array
                description: Filter by tag values.
                items:
                  type: string
                  title: value
                  description: A tag's value.
        - name: type_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: type_id
                description: Filter by a product type's ID to retrieve its associated products.
              - type: array
                description: Filter by product type IDs to retrieve their associated products.
                items:
                  type: string
                  title: type_id
                  description: A product type's ID.
        - name: category_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: category_id
                description: Filter by a product category's ID to retrieve its associated products.
              - type: array
                description: Filter by product category IDs to retrieve their associated products.
                items:
                  type: string
                  title: category_id
                  description: A product category's ID.
        - name: created_at
          in: query
          description: Filter by a product's creation date.
          required: false
          schema:
            type: object
            description: Filter by a product's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a product's update date.
          required: false
          schema:
            type: object
            description: Filter by a product's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a product's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a product's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: collection_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: collection_id
                description: Filter by a product collection ID.
              - type: array
                description: Filter by product collection IDs.
                items:
                  type: string
                  title: collection_id
                  description: A product collection's ID.
        - name: variants
          in: query
          description: Filter the retrieved products' variants.
          required: false
          schema:
            type: object
            description: Filter the retrieved products' variants.
            x-schemaName: AdminProductVariantParams
            properties:
              id:
                oneOf:
                  - type: string
                    title: id
                    description: Filter by a variant's ID.
                  - type: array
                    description: Filter by variant IDs.
                    items:
                      type: string
                      title: id
                      description: A variant's ID.
              manage_inventory:
                type: boolean
                title: manage_inventory
                description: Filter by whether the Medusa application manages the variant's inventory.
              allow_backorder:
                type: boolean
                title: allow_backorder
                description: Filter by whether the variant can be ordered even if it's out of stock.
              created_at:
                type: object
                description: Filter by the variant's creation date.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
              updated_at:
                type: object
                description: Filter by the variant's update date.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
              deleted_at:
                type: object
                description: The variant's deleted at.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
              limit:
                type: number
                title: limit
                description: Limit the number of items returned in the list.
              offset:
                type: number
                title: offset
                description: The number of items to skip when retrieving a list.
              order:
                type: string
                title: order
                description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
              fields:
                type: string
                title: fields
                description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              ean:
                oneOf:
                  - type: string
                    title: ean
                    description: Filter by a variant's ean.
                  - type: array
                    description: Filter by variant eans.
                    items:
                      type: string
                      title: ean
                      description: A variant's ean.
              upc:
                oneOf:
                  - type: string
                    title: upc
                    description: Filter by a variant's upc.
                  - type: array
                    description: Filter by variant upcs.
                    items:
                      type: string
                      title: upc
                      description: A variant's upc.
              barcode:
                oneOf:
                  - type: string
                    title: barcode
                    description: Filter by a variant's barcode.
                  - type: array
                    description: Filter by variant barcodes.
                    items:
                      type: string
                      title: barcode
                      description: A variant's barcode.
              with_deleted:
                type: boolean
                title: with_deleted
                description: Whether to include deleted variants.
        - name: with_deleted
          in: query
          description: Whether to include deleted products.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted products.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.list()
            .then(({ products, count, limit, offset }) => {
              console.log(products)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/products' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of products.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of products.
                    required:
                      - products
                    properties:
                      products:
                        type: array
                        description: The list of products.
                        items:
                          type: object
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostProducts
      summary: Create Product
      description: Create a product.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/AdminCreateProduct'
                - type: object
                  description: The product's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The product's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.create({
              title: "Shirt",
              options: [{
                title: "Default",
                values: ["Default Option"]
              }],
              variants: [
                {
                  title: "Default",
                  options: {
                    Default: "Default Option"
                  },
                  prices: []
                }
              ],
              shipping_profile_id: "sp_123"
            })
            .then(({ product }) => {
              console.log(product)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "title": "{value}",
              "options": [
                {
                  "title": "Default option",
                  "values": ["Default option value"]
                }
              ]
            }'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createProductsWorkflow
      x-events:
        - name: product-variant.created
          payload: |-
            ```ts
            {
              id, // The ID of the product variant
            }
            ```
          description: Emitted when product variants are created.
          deprecated: false
        - name: product.created
          payload: |-
            ```ts
            {
              id, // The ID of the product
            }
            ```
          description: Emitted when products are created.
          deprecated: false
  /admin/products/batch:
    post:
      operationId: PostProductsBatch
      summary: Manage Products
      description: Manage products to create, update, or delete them.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchProductRequest'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.batch({
              create: [
                {
                  title: "Shirt",
                  options: [{
                    title: "Default",
                    values: ["Default Option"]
                  }],
                  variants: [
                    {
                      title: "Default",
                      options: {
                        Default: "Default Option"
                      },
                      prices: []
                    }
                  ]
                }
              ],
              update: [{
                id: "prod_123",
                title: "Pants"
              }],
              delete: ["prod_321"]
            })
            .then(({ created, updated, deleted }) => {
              console.log(created, updated, deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/batch' \
            -H 'Authorization: Bearer {jwt_token}' \
            --data-raw '{
              "delete": [
                "prod_123"
              ]
            }'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminBatchProductResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchProductsWorkflow
      x-events:
        - name: product-variant.created
          payload: |-
            ```ts
            {
              id, // The ID of the product variant
            }
            ```
          description: Emitted when product variants are created.
          deprecated: false
        - name: product.updated
          payload: |-
            ```ts
            {
              id, // The ID of the product
            }
            ```
          description: Emitted when products are updated.
          deprecated: false
        - name: product.created
          payload: |-
            ```ts
            {
              id, // The ID of the product
            }
            ```
          description: Emitted when products are created.
          deprecated: false
        - name: product.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the product
            }
            ```
          description: Emitted when products are deleted.
          deprecated: false
  /admin/products/export:
    post:
      operationId: PostProductsExport
      summary: Export Products
      description: |
        Start a product export process to retrieve a CSV of exported products.

        You'll receive in the response the transaction ID of the workflow generating the CSV file. To check the status of the execution, send a GET request to `/admin/workflows-executions/export-products/:transaction-id`.
        Once the execution finishes successfully, a notification is created for the export. You can retrieve the notifications using the `/admin/notification` API route to retrieve the file's download URL.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: tags
          in: query
          description: Filter products by their tags.
          required: false
          schema:
            type: object
            description: Filter products by their tags.
            properties:
              id:
                type: array
                description: Filter by tag IDs.
                items:
                  type: string
                  title: id
                  description: A tag ID.
        - name: variants
          in: query
          description: Filter the products' variants.
          required: false
          schema:
            type: object
            description: Filter the products' variants.
            properties:
              options:
                type: object
                description: Filter the variants by their options.
                properties:
                  value:
                    type: string
                    title: value
                    description: The option's value.
                  option_id:
                    type: string
                    title: option_id
                    description: The option's ID.
                  option:
                    type: object
                    description: The option's details.
        - name: title
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: title
                description: Filter products by their title.
              - type: array
                description: Filter products by multiple titles.
                items:
                  type: string
                  title: title
                  description: A product title.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter products by their status.
                enum:
                  - draft
                  - proposed
                  - published
                  - rejected
              - type: array
                description: Filter products by multiple statuses.
                items:
                  type: string
                  description: A product status.
                  enum:
                    - draft
                    - proposed
                    - published
                    - rejected
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter products by their ID.
              - type: array
                description: Filter products by multiple IDs.
                items:
                  type: string
                  title: id
                  description: A product ID.
        - name: sales_channel_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: sales_channel_id
                description: Filter products by their sales channel ID.
              - type: array
                description: Filter products by multiple sales channel IDs.
                items:
                  type: string
                  title: sales_channel_id
                  description: A sales channel ID.
        - name: created_at
          in: query
          description: Filter by a product's creation date.
          required: false
          schema:
            type: object
            description: Filter by a product's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a product's update date.
          required: false
          schema:
            type: object
            description: Filter by a product's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: handle
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: handle
                description: Filter products by their handle.
              - type: array
                description: Filter products by multiple handles.
                items:
                  type: string
                  title: handle
                  description: A product handle.
        - name: is_giftcard
          in: query
          description: Filter products by whether they are gift cards.
          required: false
          schema:
            type: boolean
            title: is_giftcard
            description: Whether the product is a gift card.
        - name: collection_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: collection_id
                description: Filter products by their collection ID.
              - type: array
                description: Filter products by multiple collection IDs.
                items:
                  type: string
                  title: collection_id
                  description: A collection ID.
        - name: type_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: type_id
                description: Filter products by their type ID.
              - type: array
                description: Filter products by multiple type IDs.
                items:
                  type: string
                  title: type_id
                  description: The type ID's details.
        - name: deleted_at
          in: query
          description: Filter by a product's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a product's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: q
          in: query
          description: The product's q.
          required: false
          schema:
            type: string
            title: q
            description: The product's q.
        - name: category_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: category_id
                description: Filter products by their category ID.
              - type: array
                description: Filter products by their category IDs.
                items:
                  type: string
                  title: category_id
                  description: A category ID.
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: with_deleted
          in: query
          description: The product's with deleted.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: The product's with deleted.
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: price_list_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: price_list_id
                description: Filter products by the ID of a price list they belong to.
              - type: array
                description: Filter products by the IDs of price lists they belong to.
                items:
                  type: string
                  title: price_list_id
                  description: A price list ID.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.export({})
            .then(({ transaction_id }) => {
              console.log(transaction_id)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/export' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '202':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminExportProductResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: exportProductsWorkflow
      x-events: []
  /admin/products/import:
    post:
      operationId: PostProductsImport
      summary: Create Product Import
      description: Create a new product import process. The products aren't imported until the import is confirmed with the `/admin/products/:transaction-id/import` API route.
      x-authenticated: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminImportProductRequest'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.import({
              file // uploaded File instance
            })
            .then(({ transaction_id }) => {
              console.log(transaction_id)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/import' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '202':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminImportProductResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: importProductsWorkflow
      x-events:
        - name: product-variant.created
          payload: |-
            ```ts
            {
              id, // The ID of the product variant
            }
            ```
          description: Emitted when product variants are created.
          deprecated: false
        - name: product.updated
          payload: |-
            ```ts
            {
              id, // The ID of the product
            }
            ```
          description: Emitted when products are updated.
          deprecated: false
        - name: product.created
          payload: |-
            ```ts
            {
              id, // The ID of the product
            }
            ```
          description: Emitted when products are created.
          deprecated: false
        - name: product.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the product
            }
            ```
          description: Emitted when products are deleted.
          deprecated: false
      deprecated: true
      x-deprecated_message: use `POST /admin/products/imports` instead.
  /admin/products/import/{transaction_id}/confirm:
    post:
      operationId: PostProductsImportTransaction_idConfirm
      summary: Confirm Product Import
      description: Confirm that a created product import should start importing the products into Medusa.
      x-authenticated: true
      parameters:
        - name: transaction_id
          in: path
          description: The ID of the transaction returned when the product import was created.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.confirmImport("transaction_123")
            .then(() => {
              console.log("Import confirmed")
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/import/{transaction_id}/confirm' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '202':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      deprecated: true
      x-deprecated_message: use `POST /admin/products/imports/:transaction_id/confirm` instead.
  /admin/products/imports:
    post:
      operationId: PostProductsImports
      summary: Create Product Import
      description: Create a new product import process. The products aren't imported until the import is confirmed with the `/admin/products/:transaction-id/imports` API route.
      x-authenticated: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminImportProducts'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.createImport({
              file // uploaded File instance
            })
            .then(({ transaction_id }) => {
              console.log(transaction_id)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/imports' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "file_key": "{value}",
              "originalname": "{value}",
              "extension": "{value}",
              "size": 38,
              "mime_type": "{value}"
            }'
      tags:
        - Products
      responses:
        '202':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminImportProductResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: importProductsAsChunksWorkflow
      x-events: []
      x-since: 2.8.5
  /admin/products/imports/{transaction_id}/confirm:
    post:
      operationId: PostProductsImportsTransaction_idConfirm
      summary: Confirm Product Import
      description: Confirm that a created product import should start importing the products into Medusa.
      x-authenticated: true
      parameters:
        - name: transaction_id
          in: path
          description: The product's transaction id.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.confirmImport("transaction_123")
            .then(() => {
              console.log("Import confirmed")
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/imports/{transaction_id}/confirm' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '202':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.8.5
  /admin/products/{id}:
    get:
      operationId: GetProductsId
      summary: Get a Product
      description: Retrieve a product by its ID. You can expand the product's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.retrieve("prod_123")
            .then(({ product }) => {
              console.log(product)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/products/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostProductsId
      summary: Update a Product
      description: Update a product's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/AdminUpdateProduct'
                - type: object
                  description: The properties to update in a product.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The properties to update in a product.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.update("prod_123", {
              title: "Shirt",
            })
            .then(({ product }) => {
              console.log(product)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateProductsWorkflow
      x-events:
        - name: product.updated
          payload: |-
            ```ts
            {
              id, // The ID of the product
            }
            ```
          description: Emitted when products are updated.
          deprecated: false
    delete:
      operationId: DeleteProductsId
      summary: Delete a Product
      description: Delete a product.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.delete("prod_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/products/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteProductsWorkflow
      x-events:
        - name: product.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the product
            }
            ```
          description: Emitted when products are deleted.
          deprecated: false
  /admin/products/{id}/images/{image_id}/variants/batch:
    post:
      operationId: PostProductsIdImagesImage_idVariantsBatch
      summary: Manage Variants of Product Image
      description: Manage the association between product variants and a product image. You can add or remove associations between variants and the image.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: image_id
          in: path
          description: The product image's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchImageVariantRequest'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.batchImageVariants("prod_123", "img_123", {
              add: ["variant_123", "variant_456"],
              remove: ["variant_789"]
            })
            .then(({ added, removed }) => {
              console.log(added, removed)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/{id}/images/{image_id}/variants/batch' \
            -H 'Authorization: Bearer {access_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "add": ["variant_123", "variant_456"],
              "remove": ["variant_789"]
            }'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminBatchImageVariantResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchImageVariantsWorkflow
      x-events: []
      x-since: 2.11.2
  /admin/products/{id}/options:
    get:
      operationId: GetProductsIdOptions
      summary: List a Product's Options
      x-sidebar-summary: List Options
      description: Retrieve a list of options of a product. The options can be filtered by fields like `id`. The options can also be paginated.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the product option's searchable fields.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the product option's searchable fields.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by the product option's ID.
              - type: array
                description: Filter by product option IDs.
                items:
                  type: string
                  title: id
                  description: A product option's ID.
        - name: title
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: title
                description: Filter by a title.
              - type: array
                description: Filter by titles.
                items:
                  type: string
                  title: title
                  description: An option's title.
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.listOptions("prod_123")
            .then(({ product_options, count, limit, offset }) => {
              console.log(product_options)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/products/{id}/options' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of product options.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of product options.
                    required:
                      - product_options
                    properties:
                      product_options:
                        type: array
                        description: The list of product options.
                        items:
                          $ref: '#/components/schemas/AdminProductOption'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostProductsIdOptions
      summary: Create a Product Option
      x-sidebar-summary: Create Option
      description: Create an option for a product.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/AdminCreateProductOption'
                - type: object
                  description: The product option's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The product option's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.createOption(
              "prod_123",
              {
                title: "Color",
                values: ["Green", "Blue"]
              }
            )
            .then(({ product }) => {
              console.log(product)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/{id}/options' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "title": "{value}",
              "values": [
                "{value}"
              ]
            }'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createProductOptionsWorkflow
      x-events:
        - name: product-option.created
          payload: |-
            ```ts
            {
              id, // The ID of the product option
            }
            ```
          description: Emitted when product options are created.
          deprecated: false
  /admin/products/{id}/options/{option_id}:
    get:
      operationId: GetProductsIdOptionsOption_id
      summary: Get a Product's Option
      x-sidebar-summary: Get Option
      description: Retrieve a product's option by its ID.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: option_id
          in: path
          description: The product's option id.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.retrieveOption(
              "prod_123",
              "prodopt_123"
            )
            .then(({ product_option }) => {
              console.log(product_option)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/products/{id}/options/{option_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductOptionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostProductsIdOptionsOption_id
      summary: Update a Product's Option
      x-sidebar-summary: Update Option
      description: Update the details of a product option.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: option_id
          in: path
          description: The option's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/AdminUpdateProductOption'
                - type: object
                  description: The properties to update in the product option.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The properties to update in the product option.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.updateOption(
              "prod_123",
              "prodopt_123",
              {
                title: "Color"
              }
            )
            .then(({ product }) => {
              console.log(product)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/{id}/options/{option_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateProductOptionsWorkflow
      x-events:
        - name: product-option.updated
          payload: |-
            ```ts
            {
              id, // The ID of the product option
            }
            ```
          description: Emitted when product options are updated.
          deprecated: false
    delete:
      operationId: DeleteProductsIdOptionsOption_id
      summary: Delete an Option from Product
      x-sidebar-summary: Delete Option
      description: |
        Delete an option from a product.

        Values of this option in the product's variants are removed.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: option_id
          in: path
          description: The product option's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.deleteOption("prod_123", "prodopt_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/products/{id}/options/{option_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductOptionDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteProductOptionsWorkflow
      x-events:
        - name: product-option.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the product option
            }
            ```
          description: Emitted when product options are deleted.
          deprecated: false
  /admin/products/{id}/variants:
    get:
      operationId: GetProductsIdVariants
      summary: List Variants of a Product
      x-sidebar-summary: List Variants
      description: Retrieve a list of variants in a product. The variants can be filtered by fields like FILTER FIELDS. The variants can also be paginated.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the variant's search attributes.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the variant's search attributes.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a variant's ID.
              - type: array
                description: Filter by variant IDs.
                items:
                  type: string
                  title: id
                  description: A variant ID.
        - name: manage_inventory
          in: query
          description: Filter by whether a variant's `manage_inventory` property is enabled.
          required: false
          schema:
            type: boolean
            title: manage_inventory
            description: Filter by whether a variant's `manage_inventory` property is enabled.
        - name: allow_backorder
          in: query
          description: Filter by whether backorders are allowed for the variant.
          required: false
          schema:
            type: boolean
            title: allow_backorder
            description: Filter by whether backorders are allowed for the variant.
        - name: created_at
          in: query
          description: Filter by the product's creation date.
          required: false
          schema:
            type: object
            description: Filter by the product's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the product's update date.
          required: false
          schema:
            type: object
            description: Filter by the product's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by the product's deletion date.
          required: false
          schema:
            type: object
            description: Filter by the product's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
        - name: ean
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: ean
                description: The product's ean.
              - type: array
                description: The product's ean.
                items:
                  type: string
                  title: ean
                  description: The ean's details.
        - name: upc
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: upc
                description: The product's upc.
              - type: array
                description: The product's upc.
                items:
                  type: string
                  title: upc
                  description: The upc's details.
        - name: barcode
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: barcode
                description: The product's barcode.
              - type: array
                description: The product's barcode.
                items:
                  type: string
                  title: barcode
                  description: The barcode's details.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.listVariants("prod_123")
            .then(({ variants, count, limit, offset }) => {
              console.log(variants)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/products/{id}/variants' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of product variants.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of returned items.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before the returned item.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of product variants.
                    required:
                      - variants
                    properties:
                      variants:
                        type: array
                        description: The list of product variants.
                        items:
                          $ref: '#/components/schemas/AdminProductVariant'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostProductsIdVariants
      summary: Create a Product Variant
      x-sidebar-summary: Create Variant
      description: Create a variant for a product.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/AdminCreateProductVariant'
                - type: object
                  description: The product variant's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The product variant's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.createVariant("prod_123", {
              title: "Blue Shirt",
              options: {
                Color: "Blue"
              },
              prices: [
                {
                  amount: 10,
                  currency_code: "usd"
                }
              ]
            })
            .then(({ product }) => {
              console.log(product)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/{id}/variants' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "title": "{value}",
              "prices": []
            }'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createProductVariantsWorkflow
      x-events:
        - name: product-variant.created
          payload: |-
            ```ts
            {
              id, // The ID of the product variant
            }
            ```
          description: Emitted when product variants are created.
          deprecated: false
  /admin/products/{id}/variants/batch:
    post:
      operationId: PostProductsIdVariantsBatch
      summary: Manage Variants in a Product
      x-sidebary-summary: Manage Variants
      description: Manage variants in a product to create, update, or delete them.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchProductVariantRequest'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.batchVariants("prod_123", {
              create: [
                {
                  title: "Blue Shirt",
                  options: {
                    Color: "Blue"
                  },
                  prices: []
                }
              ],
              update: [
                {
                  id: "variant_123",
                  title: "Pants"
                }
              ],
              delete: ["variant_123"]
            })
            .then(({ created, updated, deleted }) => {
              console.log(created, updated, deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/{id}/variants/batch' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminBatchProductVariantResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchProductVariantsWorkflow
      x-events:
        - name: product-variant.updated
          payload: |-
            ```ts
            {
              id, // The ID of the product variant
            }
            ```
          description: Emitted when product variants are updated.
          deprecated: false
        - name: product-variant.created
          payload: |-
            ```ts
            {
              id, // The ID of the product variant
            }
            ```
          description: Emitted when product variants are created.
          deprecated: false
        - name: product-variant.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the product variant
            }
            ```
          description: Emitted when product variants are deleted.
          deprecated: false
  /admin/products/{id}/variants/inventory-items/batch:
    post:
      operationId: PostProductsIdVariantsInventoryItemsBatch
      summary: Manage Variants Inventory in a Product
      x-sidebar-summary: Manage Variants Inventory
      description: Manage a product's variant's inventoris to associate them with inventory items, update their inventory items, or delete their association with inventory items.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: The product variant inventories to manage.
              properties:
                create:
                  type: array
                  description: The associations to create between product variants and inventory items.
                  items:
                    type: object
                    description: The associations to create between a product variant and an inventory item.
                    required:
                      - variant_id
                      - required_quantity
                      - inventory_item_id
                    properties:
                      required_quantity:
                        type: number
                        title: required_quantity
                        description: The number of units a single quantity is equivalent to. For example, if a customer orders one quantity of the variant, Medusa checks the availability of the quantity multiplied by the value set for `required_quantity`. When the customer orders the quantity, Medusa reserves the ordered quantity multiplied by the value set for `required_quantity`.
                      inventory_item_id:
                        type: string
                        title: inventory_item_id
                        description: The ID of the inventory item to associate the variant with.
                      variant_id:
                        type: string
                        title: variant_id
                        description: The ID of the variant.
                update:
                  type: array
                  description: The product variants to update their association with inventory items.
                  items:
                    type: object
                    description: Update a product variant's association with an inventory item.
                    required:
                      - variant_id
                      - required_quantity
                      - inventory_item_id
                    properties:
                      required_quantity:
                        type: number
                        title: required_quantity
                        description: The number of units a single quantity is equivalent to. For example, if a customer orders one quantity of the variant, Medusa checks the availability of the quantity multiplied by the value set for `required_quantity`. When the customer orders the quantity, Medusa reserves the ordered quantity multiplied by the value set for `required_quantity`.
                      inventory_item_id:
                        type: string
                        title: inventory_item_id
                        description: The ID of the inventory item the variant is associated with.
                      variant_id:
                        type: string
                        title: variant_id
                        description: The ID of the variant.
                delete:
                  type: array
                  description: The product variants to delete their association with inventory items.
                  items:
                    type: object
                    description: Delete a product variant's association with an inventory item.
                    required:
                      - variant_id
                      - inventory_item_id
                    properties:
                      inventory_item_id:
                        type: string
                        title: inventory_item_id
                        description: The ID of the inventory item associated with the variant.
                      variant_id:
                        type: string
                        title: variant_id
                        description: The ID of the variant.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.batchVariantInventoryItems(
              "prod_123",
              {
                create: [
                  {
                    inventory_item_id: "iitem_123",
                    variant_id: "variant_123",
                    required_quantity: 10
                  }
                ],
                update: [
                  {
                    inventory_item_id: "iitem_1234",
                    variant_id: "variant_1234",
                    required_quantity: 20
                  }
                ],
                delete: [
                  {
                    inventory_item_id: "iitem_321",
                    variant_id: "variant_321"
                  }
                ]
              }
            )
            .then(({ created, updated, deleted }) => {
              console.log(created, updated, deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/{id}/variants/inventory-items/batch' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductVariantInventoryBatchResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchLinksWorkflow
      x-events: []
  /admin/products/{id}/variants/{variant_id}:
    get:
      operationId: GetProductsIdVariantsVariant_id
      summary: Get Variant of a Product
      x-sidebar-summary: Get Variant
      description: Retrieve a product's variant by its ID.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: variant_id
          in: path
          description: The variant's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.retrieveVariant(
              "prod_123",
              "variant_123"
            )
            .then(({ variant }) => {
              console.log(variant)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/products/{id}/variants/{variant_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductVariantResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostProductsIdVariantsVariant_id
      summary: Update a Product Variant
      x-sidebar-summary: Update Variant
      description: Update a variant's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: variant_id
          in: path
          description: The product's variant id.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/AdminUpdateProductVariant'
                - type: object
                  description: The properties to update in the variant.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The properties to update in the variant.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.updateVariant(
              "prod_123",
              "variant_123",
                {
                title: "Blue Shirt",
              }
            )
            .then(({ product }) => {
              console.log(product)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/{id}/variants/{variant_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateProductVariantsWorkflow
      x-events:
        - name: product-variant.updated
          payload: |-
            ```ts
            {
              id, // The ID of the product variant
            }
            ```
          description: Emitted when product variants are updated.
          deprecated: false
    delete:
      operationId: DeleteProductsIdVariantsVariant_id
      summary: Delete Product Variant
      x-sidebar-summary: Delete Variant
      description: Delete a variant of a product.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: variant_id
          in: path
          description: The product variant's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.deleteVariant("prod_123", "variant_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/products/{id}/variants/{variant_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductVariantDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteProductVariantsWorkflow
      x-events:
        - name: product-variant.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the product variant
            }
            ```
          description: Emitted when product variants are deleted.
          deprecated: false
  /admin/products/{id}/variants/{variant_id}/images/batch:
    post:
      operationId: PostProductsIdVariantsVariant_idImagesBatch
      summary: Manage Images of Product Variant
      description: Manage the association between product images and a product variant. You can add or remove associations between images and the variant.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: variant_id
          in: path
          description: The product variant's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchVariantImagesRequest'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.product.batchVariantImages("prod_123", "variant_123", {
              add: ["img_123", "img_456"],
              remove: ["img_789"]
            })
            .then(({ added, removed }) => {
              console.log(added, removed)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/{id}/variants/{variant_id}/images/batch' \
            -H 'Authorization: Bearer {access_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "add": ["img_123", "img_456"],
              "remove": ["img_789"]
            }'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminBatchVariantImagesResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchVariantImagesWorkflow
      x-events: []
      x-since: 2.11.2
  /admin/products/{id}/variants/{variant_id}/inventory-items:
    post:
      operationId: PostProductsIdVariantsVariant_idInventoryItems
      summary: Associate Variant with Inventory Item
      x-sidebar-summary: Associate Variant's Inventory
      description: Associate with a product variant an inventory item that manages its inventory details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: variant_id
          in: path
          description: The variant's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateVariantInventoryItem'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/{id}/variants/{variant_id}/inventory-items' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "required_quantity": 7390879820021760,
              "inventory_item_id": "{value}"
            }'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductVariantResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createLinksWorkflow
      x-events: []
  /admin/products/{id}/variants/{variant_id}/inventory-items/{inventory_item_id}:
    post:
      operationId: PostProductsIdVariantsVariant_idInventoryItemsInventory_item_id
      summary: Update Product Variant's Inventory Details
      x-sidebary-summary: Update Variant Inventory
      description: Update the inventory item that manages the inventory details of a product variant.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: variant_id
          in: path
          description: The variant's ID.
          required: true
          schema:
            type: string
        - name: inventory_item_id
          in: path
          description: The inventory item's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateVariantInventoryItem'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/products/{id}/variants/{variant_id}/inventory-items/{inventory_item_id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "required_quantity": 5324804697620480
            }'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductVariantResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateLinksWorkflow
      x-events: []
    delete:
      operationId: DeleteProductsIdVariantsVariant_idInventoryItemsInventory_item_id
      summary: Remove Inventory Item Association with Product Variant
      x-sidebar-summary: Remove Inventory Item
      description: Remove the association between an inventory item and its product variant.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The product's ID.
          required: true
          schema:
            type: string
        - name: variant_id
          in: path
          description: The products variant's ID.
          required: true
          schema:
            type: string
        - name: inventory_item_id
          in: path
          description: The inventory item's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/products/{id}/variants/{variant_id}/inventory-items/{inventory_item_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Products
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminProductVariantInventoryLinkDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: dismissLinksWorkflow
      x-events: []
  /admin/promotions:
    get:
      operationId: GetPromotions
      summary: List Promotions
      description: Retrieve a list of promotions. The promotions can be filtered by fields such as `id`. The promotions can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the promotion's searchable attributes.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the promotion's searchable attributes.
        - name: code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: code
                description: Filter by a promotion code.
              - type: array
                description: Filter by promotion codes.
                items:
                  type: string
                  title: code
                  description: A promotion code.
        - name: campaign_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: campaign_id
                description: Filter by a campaign's ID to retrieve its associated promotions.
              - type: array
                description: Filter by campaign IDs to retrieve their associated promotions.
                items:
                  type: string
                  title: campaign_id
                  description: A campaign's ID.
        - name: application_method
          in: query
          description: Apply filters on the application methods to retrieve the promotions of the matching application methods.
          required: false
          schema:
            type: object
            description: Apply filters on the application methods to retrieve the promotions of the matching application methods.
            properties:
              currency_code:
                oneOf:
                  - type: string
                    title: currency_code
                    description: Filter by a currency code.
                  - type: array
                    description: Filter by currency codes.
                    items:
                      type: string
                      title: currency_code
                      description: A currency code.
        - name: created_at
          in: query
          description: Filter by a promotion's creation date.
          required: false
          schema:
            type: object
            description: Filter by a promotion's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a promotion's update date.
          required: false
          schema:
            type: object
            description: Filter by a promotion's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a promotion's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a promotion's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: currency_code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: currency_code
                description: Filter by a currency code. The promotions are filtered based on their application method's currency code.
              - type: array
                description: Filter by currency codes. The promotions are filtered based on their application method's currency code.
                items:
                  type: string
                  title: currency_code
                  description: A currency code.
        - name: application_method_type
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: application_method_type
                description: Filter by an application method type. The promotions are filtered based on their application method's type.
              - type: array
                description: Filter by application method types. The promotions are filtered based on their application method's type.
                items:
                  type: string
                  title: application_method_type
                  description: An application method type.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
        - name: id
          in: query
          required: false
          description: Filter by a promotion's ID.
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a promotion's ID.
              - type: array
                description: Filter by promotion IDs.
                items:
                  type: string
                  title: id
                  description: The promotion's ID.
              - type: object
                description: Filter by a promotion's ID.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.promotion.list()
            .then(({ promotions, count, limit, offset }) => {
              console.log(promotions)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/promotions' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Promotions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of promotions.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of promotions.
                    required:
                      - promotions
                    properties:
                      promotions:
                        type: array
                        description: The list of promotions.
                        items:
                          $ref: '#/components/schemas/AdminPromotion'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostPromotions
      summary: Create Promotion
      description: Create a promotion.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The promotion's details.
                  required:
                    - code
                    - type
                    - campaign_id
                    - application_method
                  properties:
                    code:
                      type: string
                      title: code
                      description: The promotion's code.
                    is_automatic:
                      type: boolean
                      title: is_automatic
                      description: Whether the promotion is applied automatically.
                    type:
                      type: string
                      description: The promotion's type.
                      externalDocs:
                        url: https://docs.medusajs.com/resources/commerce-modules/promotion/concepts#what-is-a-promotion
                      enum:
                        - standard
                        - buyget
                    campaign_id:
                      type: string
                      title: campaign_id
                      description: The ID of the campaign that the promotion belongs to.
                    campaign:
                      type: object
                      description: The details of a campaign to create and add the promotion to it.
                      required:
                        - name
                        - campaign_identifier
                        - description
                        - budget
                        - starts_at
                        - ends_at
                      properties:
                        name:
                          type: string
                          title: name
                          description: The campaign's name.
                        campaign_identifier:
                          type: string
                          title: campaign_identifier
                          description: The campaign's identifier.
                        description:
                          type: string
                          title: description
                          description: The campaign's description.
                        budget:
                          type: object
                          description: The campaign's budget which, when crossed, ends the campaign.
                          required:
                            - type
                            - limit
                            - currency_code
                          properties:
                            type:
                              type: string
                              description: |
                                The budget's type. This can't be edited later. Use `spend` to set a limit on the total amount discounted by the campaign's promotions. Use `usage` to set a limit on the total number of times the campaign's promotions can be used.
                              enum:
                                - spend
                                - usage
                            limit:
                              type: number
                              title: limit
                              description: The budget's limit.
                            currency_code:
                              type: string
                              title: currency_code
                              description: The campaign budget's currency code. This can't be edited later.
                        starts_at:
                          type: string
                          title: starts_at
                          description: The campaign's start date.
                          format: date-time
                        ends_at:
                          type: string
                          title: ends_at
                          description: The campaign's end date.
                          format: date-time
                    application_method:
                      type: object
                      description: The promotion's application method.
                      required:
                        - description
                        - value
                        - currency_code
                        - max_quantity
                        - type
                        - target_type
                        - apply_to_quantity
                        - buy_rules_min_quantity
                      properties:
                        description:
                          type: string
                          title: description
                          description: The application method's description.
                        value:
                          type: number
                          title: value
                          description: The discounted amount applied by the associated promotion based on the `type`.
                        currency_code:
                          type: string
                          title: currency_code
                          description: The application method's currency code.
                        max_quantity:
                          type: number
                          title: max_quantity
                          description: The max quantity allowed in the cart for the associated promotion to be applied.
                        type:
                          type: string
                          description: The type of the application method indicating how the associated promotion is applied.
                          enum:
                            - fixed
                            - percentage
                        target_type:
                          type: string
                          description: The target type of the application method indicating whether the associated promotion is applied to the cart's items, shipping methods, or the whole order.
                          enum:
                            - order
                            - shipping_methods
                            - items
                        allocation:
                          type: string
                          description: The allocation value that indicates whether the associated promotion is applied on each item in a cart or split between the items in the cart.
                          enum:
                            - each
                            - across
                        target_rules:
                          type: array
                          description: The application method's target rules.
                          items:
                            type: object
                            description: A target rule's details.
                            required:
                              - operator
                              - description
                              - attribute
                              - values
                            properties:
                              operator:
                                type: string
                                description: The operator used to check whether the target rule applies on a cart. For example, `eq` means that the cart's value for the specified attribute must match the specified value.
                                enum:
                                  - gte
                                  - lte
                                  - gt
                                  - lt
                                  - eq
                                  - ne
                                  - in
                              description:
                                type: string
                                title: description
                                description: The target rule's description.
                              attribute:
                                type: string
                                title: attribute
                                description: The attribute to compare against when checking whether a promotion can be applied on a cart.
                                example: items.product.id
                              values:
                                oneOf:
                                  - type: string
                                    title: values
                                    description: The attribute's value.
                                    example: prod_123
                                  - type: array
                                    description: The allowed attribute values.
                                    items:
                                      type: string
                                      title: values
                                      description: An attribute value.
                                      example: prod_123
                        buy_rules:
                          type: array
                          description: The application method's buy rules.
                          items:
                            type: object
                            description: A buy rule's details.
                            required:
                              - operator
                              - description
                              - attribute
                              - values
                            properties:
                              operator:
                                type: string
                                description: The operator used to check whether the buy rule applies on a cart. For example, `eq` means that the cart's value for the specified attribute must match the specified value.
                                enum:
                                  - gte
                                  - lte
                                  - gt
                                  - lt
                                  - eq
                                  - ne
                                  - in
                              description:
                                type: string
                                title: description
                                description: The buy rule's description.
                              attribute:
                                type: string
                                title: attribute
                                description: The attribute to compare against when checking whether a promotion can be applied on a cart.
                                example: items.product.id
                              values:
                                oneOf:
                                  - type: string
                                    title: values
                                    description: The attribute's value.
                                    example: prod_123
                                  - type: array
                                    description: The allowed attribute values.
                                    items:
                                      type: string
                                      title: values
                                      description: An attribute value.
                                      example: prod_123
                        apply_to_quantity:
                          type: number
                          title: apply_to_quantity
                          description: The quantity that results from matching the `buyget` promotion's condition. For example, if the promotion is a "Buy 2 shirts get 1 free", the value f this attribute is `1`.
                        buy_rules_min_quantity:
                          type: number
                          title: buy_rules_min_quantity
                          description: The minimum quantity required for a `buyget` promotion to be applied. For example, if the promotion is a "Buy 2 shirts get 1 free", the value of this attribute is `2`.
                    rules:
                      type: array
                      description: The promotion's rules.
                      items:
                        type: object
                        description: A rule's details.
                        required:
                          - operator
                          - description
                          - attribute
                          - values
                        properties:
                          operator:
                            type: string
                            description: The operator used to check whether the buy rule applies on a cart. For example, `eq` means that the cart's value for the specified attribute must match the specified value.
                            enum:
                              - gte
                              - lte
                              - gt
                              - lt
                              - eq
                              - ne
                              - in
                          description:
                            type: string
                            title: description
                            description: The rule's description.
                          attribute:
                            type: string
                            title: attribute
                            description: The attribute to compare against when checking whether a promotion can be applied on a cart.
                            example: items.product.id
                          values:
                            oneOf:
                              - type: string
                                title: values
                                description: The attribute's value.
                                example: prod_123
                              - type: array
                                description: The allowed attribute values.
                                items:
                                  type: string
                                  title: values
                                  description: An attribute value.
                                  example: prod_123
                - type: object
                  description: The promotion's details.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The promotion's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.promotion.create({
              name: "My Promotion",
              description: "This is a test promotion",
              code: "PROMO123",
              starts_at: "2021-01-01",
              ends_at: "2021-01-01",
            })
            .then(({ promotion }) => {
              console.log(promotion)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/promotions' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "code": "{value}",
              "type": "{value}",
              "campaign_id": "{value}",
              "application_method": {
                "description": "{value}",
                "value": 1841223411171328,
                "currency_code": "{value}",
                "max_quantity": 2960098049654784,
                "type": "{value}",
                "target_type": "{value}",
                "allocation": "{value}",
                "target_rules": [],
                "buy_rules": [],
                "apply_to_quantity": 708643867590656,
                "buy_rules_min_quantity": 3167972149428224
              }
            }'
      tags:
        - Promotions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPromotionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createPromotionsWorkflow
      x-events: []
  /admin/promotions/rule-attribute-options/{rule_type}:
    get:
      operationId: GetPromotionsRuleAttributeOptionsRule_type
      summary: List Rule Attribute Options of a Rule Type
      x-sidebar-summary: List Potential Rule Attributes
      description: |
        Retrieve a list of potential rule attributes for the promotion and application method types specified in the query parameters.
        Only the attributes of the rule type specified in the path parameter are retrieved:
        - If `rule_type` is `rules`, the attributes of the promotion's type are retrieved.

        - If `rule_type` is `target-rules`, the target rules' attributes of the application method's type are retrieved.

        - If `rule_type` is `buy-rules`, the buy rules' attributes of the application method's type are retrieved.
      x-authenticated: true
      parameters:
        - name: rule_type
          in: path
          description: The rule type.
          required: true
          schema:
            type: string
            enum:
              - rules
              - target-rules
              - buy-rules
        - name: promotion_type
          in: query
          description: The promotion type to retrieve rules for.
          required: false
          schema:
            type: string
            description: The promotion type to retrieve rules for.
            enum:
              - standard
              - buyget
        - name: application_method_type
          in: query
          description: The application method type to retrieve rules for.
          required: false
          schema:
            type: string
            description: The application method type to retrieve rules for.
            enum:
              - fixed
              - percentage
        - name: application_method_target_type
          in: query
          description: The application method target type to retrieve rules for.
          required: false
          schema:
            type: string
            description: The application method target type to retrieve rules for.
            enum:
              - items
              - shipping_methods
              - order
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.promotion.listRuleAttributes("rules", "standard")
            .then(({ attributes }) => {
              console.log(attributes)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/promotions/rule-attribute-options/{rule_type}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Promotions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The list of attributes.
                required:
                  - attributes
                properties:
                  attributes:
                    type: array
                    description: The list of attributes.
                    items:
                      $ref: '#/components/schemas/AdminRuleAttributeOption'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/promotions/rule-value-options/{rule_type}/{rule_attribute_id}:
    get:
      operationId: GetPromotionsRuleValueOptionsRule_typeRule_attribute_id
      summary: List Rule Values Given a Rule Attribute
      x-sidebar-summary: List Rule Values
      description: |
        Retrieve all potential values for promotion rules and target and buy rules based on the specified rule attribute and type.
        For example, if you provide the ID of the `currency_code` rule attribute, and set `rule_type` to `rules`, a list of currencies are retrieved in label-value pairs.
      x-authenticated: true
      parameters:
        - name: rule_type
          in: path
          description: The rule type.
          required: true
          schema:
            type: string
            enum:
              - rules
              - target-rules
              - buy-rules
        - name: rule_attribute_id
          in: path
          description: The rule attribute's ID.
          required: true
          schema:
            type: string
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
        - name: application_method_target_type
          in: query
          description: The application method target type to retrieve rules for.
          required: false
          schema:
            type: string
            description: The application method target type to retrieve rules for.
        - name: q
          in: query
          description: Apply a search query on the rule values' searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Apply a search query on the rule values' searchable properties.
        - name: value
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: value
                description: Filter by a specific rule value.
              - type: array
                description: Filter by multiple rule values.
                items:
                  type: string
                  title: value
                  description: A rule value.
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.promotion.listRuleValues("rules", "attr_123")
            .then(({ values }) => {
              console.log(values)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/promotions/rule-value-options/{rule_type}/{rule_attribute_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Promotions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The pagination fields.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The list of rule values.
                    required:
                      - values
                    properties:
                      values:
                        type: array
                        description: The list of rule values.
                        items:
                          $ref: '#/components/schemas/AdminRuleValueOption'
                description: The paginated list of rule values.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/promotions/{id}:
    get:
      operationId: GetPromotionsId
      summary: Get a Promotion
      description: Retrieve a promotion by its ID. You can expand the promotion's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The promotion's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.promotion.retrieve("promo_123")
            .then(({ promotion }) => {
              console.log(promotion)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/promotions/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Promotions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPromotionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostPromotionsId
      summary: Update a Promotion
      description: Update a promotion's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The promotion's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  description: The properties to update in a promotion.
                  required:
                    - campaign_id
                  properties:
                    code:
                      type: string
                      title: code
                      description: The promotion's code.
                    is_automatic:
                      type: boolean
                      title: is_automatic
                      description: Whether the promotion is applied automatically.
                    type:
                      type: string
                      description: The promotion's type.
                      externalDocs:
                        url: https://docs.medusajs.com/resources/commerce-modules/promotion/concepts#what-is-a-promotion
                      enum:
                        - standard
                        - buyget
                    campaign_id:
                      type: string
                      title: campaign_id
                      description: The ID of the campaign that the promotion belongs to.
                    application_method:
                      type: object
                      description: The properties to update in the application method.
                      required:
                        - id
                        - description
                        - max_quantity
                        - currency_code
                        - apply_to_quantity
                        - buy_rules_min_quantity
                      properties:
                        id:
                          type: string
                          title: id
                          description: The application method's ID.
                        description:
                          type: string
                          title: description
                          description: The application method's description.
                        value:
                          type: number
                          title: value
                          description: The discounted amount applied by the associated promotion based on the `type`.
                        max_quantity:
                          type: number
                          title: max_quantity
                          description: The max quantity allowed in the cart for the associated promotion to be applied.
                        currency_code:
                          type: string
                          title: currency_code
                          description: The application method's currency code.
                        type:
                          type: string
                          description: The type of the application method indicating how the associated promotion is applied.
                          enum:
                            - fixed
                            - percentage
                        target_type:
                          type: string
                          description: The target type of the application method indicating whether the associated promotion is applied to the cart's items, shipping methods, or the whole order.
                          enum:
                            - order
                            - shipping_methods
                            - items
                        allocation:
                          type: string
                          description: The allocation value that indicates whether the associated promotion is applied on each item in a cart or split between the items in the cart.
                          enum:
                            - each
                            - across
                        apply_to_quantity:
                          type: number
                          title: apply_to_quantity
                          description: The quantity that results from matching the `buyget` promotion's condition. For example, if the promotion is a "Buy 2 shirts get 1 free", the value f this attribute is `1`.
                        buy_rules_min_quantity:
                          type: number
                          title: buy_rules_min_quantity
                          description: The minimum quantity required for a `buyget` promotion to be applied. For example, if the promotion is a "Buy 2 shirts get 1 free", the value of this attribute is `2`.
                - type: object
                  description: The properties to update in a promotion.
                  properties:
                    additional_data:
                      type: object
                      description: Pass additional custom data to the API route. This data is passed to the underlying workflow under the `additional_data` parameter.
              description: The properties to update in a promotion.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.promotion.update("promo_123", {
              code: "PROMO123",
            })
            .then(({ promotion }) => {
              console.log(promotion)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/promotions/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "campaign_id": "{value}"
            }'
      tags:
        - Promotions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminPromotionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updatePromotionsWorkflow
      x-events: []
    delete:
      operationId: DeletePromotionsId
      summary: Delete a Promotion
      description: Delete a promotion.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The promotion's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.promotion.delete("promo_123")
            .then(({ promotion }) => {
              console.log(promotion)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/promotions/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Promotions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The promotion's ID.
                  object:
                    type: string
                    title: object
                    description: The name of the deleted object.
                    default: promotion
                  deleted:
                    type: boolean
                    title: deleted
                    description: Whether the promotion was deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deletePromotionsWorkflow
      x-events: []
  /admin/promotions/{id}/buy-rules/batch:
    post:
      operationId: PostPromotionsIdBuyRulesBatch
      summary: Manage the Buy Rules of a Promotion
      x-sidebar-summary: Manage Buy Rules
      description: Manage the buy rules of a `buyget` promotion to create, update, or delete them.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The promotion's ID.
          required: true
          schema:
            type: string
        - name: promotion_type
          in: query
          description: The promotion's type.
          required: false
          schema:
            type: string
            description: The promotion's type.
            enum:
              - standard
              - buyget
        - name: application_method_type
          in: query
          description: The promotion's application method type.
          required: false
          schema:
            type: string
            description: The promotion's application method type.
            enum:
              - fixed
              - percentage
        - name: application_method_target_type
          in: query
          description: The promotion's application method target type.
          required: false
          schema:
            type: string
            description: The promotion's application method target type.
            enum:
              - items
              - shipping_methods
              - order
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: The buy rules to create, update, or delete.
              properties:
                create:
                  type: array
                  description: The buy rules to create.
                  items:
                    $ref: '#/components/schemas/AdminCreatePromotionRule'
                update:
                  type: array
                  description: The buy rules to update.
                  items:
                    $ref: '#/components/schemas/AdminUpdatePromotionRule'
                delete:
                  type: array
                  description: The buy rules to delete.
                  items:
                    type: string
                    title: delete
                    description: A buy rule's ID.
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/promotions/{id}/buy-rules/batch' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Promotions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The result of the batch operations.
                required:
                  - created
                  - updated
                  - deleted
                properties:
                  created:
                    type: array
                    description: The created buy rules.
                    items:
                      $ref: '#/components/schemas/AdminPromotionRule'
                  updated:
                    type: array
                    description: The updated buy rules.
                    items:
                      $ref: '#/components/schemas/AdminPromotionRule'
                  deleted:
                    type: object
                    description: The details of the deleted buy rules.
                    required:
                      - ids
                      - object
                      - deleted
                    properties:
                      ids:
                        type: array
                        description: The IDs of the buy rules that were deleted.
                        items:
                          type: string
                          title: ids
                          description: A buy rule's ID.
                      object:
                        type: string
                        title: object
                        description: The name of the object that was deleted.
                        default: promotion-rule
                      deleted:
                        type: boolean
                        title: deleted
                        description: Whether the buy rules were deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchPromotionRulesWorkflow
      x-events: []
  /admin/promotions/{id}/rules/batch:
    post:
      operationId: PostPromotionsIdRulesBatch
      summary: Manage a Promotion's Rules
      x-sidebar-summary: Manage Rules
      description: Manage the rules of a promotion to create, update, or delete them.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The promotion's ID.
          required: true
          schema:
            type: string
        - name: promotion_type
          in: query
          description: The promotion's type.
          required: false
          schema:
            type: string
            description: The promotion's type.
            enum:
              - standard
              - buyget
        - name: application_method_type
          in: query
          description: The promotion's application method type.
          required: false
          schema:
            type: string
            description: The promotion's application method type.
            enum:
              - fixed
              - percentage
        - name: application_method_target_type
          in: query
          description: The promotion's application method target type.
          required: false
          schema:
            type: string
            description: The promotion's application method target type.
            enum:
              - items
              - shipping_methods
              - order
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: The rules to create, update, or delete.
              properties:
                create:
                  type: array
                  description: The rules to create.
                  items:
                    $ref: '#/components/schemas/AdminCreatePromotionRule'
                update:
                  type: array
                  description: The rules to update.
                  items:
                    $ref: '#/components/schemas/AdminUpdatePromotionRule'
                delete:
                  type: array
                  description: The rules to delete.
                  items:
                    type: string
                    title: delete
                    description: A rule's ID.
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/promotions/{id}/rules/batch' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Promotions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The result of the batch operations.
                required:
                  - created
                  - updated
                  - deleted
                properties:
                  created:
                    type: array
                    description: The created rules.
                    items:
                      $ref: '#/components/schemas/AdminPromotionRule'
                  updated:
                    type: array
                    description: The updated rules.
                    items:
                      $ref: '#/components/schemas/AdminPromotionRule'
                  deleted:
                    type: object
                    description: The details of the deleted buy rules.
                    required:
                      - ids
                      - object
                      - deleted
                    properties:
                      ids:
                        type: array
                        description: The IDs of the deleted rules.
                        items:
                          type: string
                          title: ids
                          description: A rule's ID.
                      object:
                        type: string
                        title: object
                        description: The name of the object that was deleted.
                        default: promotion-rule
                      deleted:
                        type: boolean
                        title: deleted
                        description: Whether the rules were deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchPromotionRulesWorkflow
      x-events: []
  /admin/promotions/{id}/target-rules/batch:
    post:
      operationId: PostPromotionsIdTargetRulesBatch
      summary: Manage Target Rules of a Promotion
      x-sidebar-summary: Manage Target Rules
      description: Manage the target rules of a promotion to create, update, or delete them.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The promotion's ID.
          required: true
          schema:
            type: string
        - name: promotion_type
          in: query
          description: The promotion's type.
          required: false
          schema:
            type: string
            description: The promotion's type.
            enum:
              - standard
              - buyget
        - name: application_method_type
          in: query
          description: The promotion's application method type.
          required: false
          schema:
            type: string
            description: The promotion's application method type.
            enum:
              - fixed
              - percentage
        - name: application_method_target_type
          in: query
          description: The promotion's application method target type.
          required: false
          schema:
            type: string
            description: The promotion's application method target type.
            enum:
              - items
              - shipping_methods
              - order
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: The target rules to create, update, or delete.
              properties:
                create:
                  type: array
                  description: The target rules to create.
                  items:
                    $ref: '#/components/schemas/AdminCreatePromotionRule'
                update:
                  type: array
                  description: The target rules to update.
                  items:
                    $ref: '#/components/schemas/AdminUpdatePromotionRule'
                delete:
                  type: array
                  description: The target rules to delete.
                  items:
                    type: string
                    title: delete
                    description: A target rule's ID.
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/promotions/{id}/target-rules/batch' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Promotions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The result of the batch operations.
                required:
                  - created
                  - updated
                  - deleted
                properties:
                  created:
                    type: array
                    description: The created target rules.
                    items:
                      $ref: '#/components/schemas/AdminPromotionRule'
                  updated:
                    type: array
                    description: The updated target rules.
                    items:
                      $ref: '#/components/schemas/AdminPromotionRule'
                  deleted:
                    type: object
                    description: The details of the deleted target rules.
                    required:
                      - ids
                      - object
                      - deleted
                    properties:
                      ids:
                        type: array
                        description: The IDs of deleted target rules.
                        items:
                          type: string
                          title: ids
                          description: A target rule's ID.
                      object:
                        type: string
                        title: object
                        description: The name of the object that was deleted.
                        default: promotion-rule
                      deleted:
                        type: boolean
                        title: deleted
                        description: Whether the target rules were deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchPromotionRulesWorkflow
      x-events: []
  /admin/promotions/{id}/{rule_type}:
    get:
      operationId: GetPromotionsIdRule_type
      summary: List Rules of a Promotion
      x-sidebar-summary: List Rules
      description: |
        Retrieve a list of rules in a promotion. The type of rules retrieved depend on the value of the `rule_type` path parameter:
        - If `rule_type` is `rules`, the promotion's rules are retrivied. - If `rule_type` is `target-rules`, the target rules of the promotion's application method are retrieved.

        - If `rule_type` is `buy-rules`, the buy rules of the promotion's application method are retrieved.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The promotion's ID.
          required: true
          schema:
            type: string
        - name: rule_type
          in: path
          description: The type of rules to retrieve.
          required: true
          schema:
            type: string
            enum:
              - rules
              - target-rules
              - buy-rules
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: promotion_type
          in: query
          description: The type
          required: false
          schema:
            type: string
            description: The promotion's type.
            enum:
              - standard
              - buyget
        - name: application_method_type
          in: query
          description: The promotion's application method type.
          required: false
          schema:
            type: string
            description: The promotion's application method type.
            enum:
              - fixed
              - percentage
        - name: application_method_target_type
          in: query
          description: The promotion's application method target type.
          required: false
          schema:
            type: string
            description: The promotion's application method target type.
            enum:
              - items
              - shipping_methods
              - order
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.promotion.listRules("promo_123", "rules")
            .then(({ rules }) => {
              console.log(rules)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/promotions/{id}/{rule_type}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Promotions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The list of promotion rules.
                required:
                  - rules
                properties:
                  rules:
                    type: array
                    description: The list of promotion rules.
                    items:
                      $ref: '#/components/schemas/AdminPromotionRule'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/refund-reasons:
    get:
      operationId: GetRefundReasons
      summary: List Refund Reasons
      description: Retrieve a list of refund reasons. The refund reasons can be filtered by fields such as `id`. The refund reasons can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a refund reason's ID.
              - type: array
                description: Filter by refund reason IDs.
                items:
                  type: string
                  title: id
                  description: A refund reason ID.
        - name: q
          in: query
          description: Search term to filter the refund reason's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the refund reason's searchable properties.
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.refundReason.list()
            .then(({ refund_reasons, count, limit, offset }) => {
              console.log(refund_reasons)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/refund-reasons' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Refund Reasons
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of refund reasons.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of refund reasons.
                    required:
                      - refund_reasons
                    properties:
                      refund_reasons:
                        type: array
                        description: The refund reason's refund reasons.
                        items:
                          $ref: '#/components/schemas/AdminRefundReason'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostRefundReasons
      summary: Create Refund Reason
      description: Create a refund reason.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateRefundReason'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.refundReason.create({
              code: "refund",
              label: "Refund",
            })
            .then(({ refund_reason }) => {
              console.log(refund_reason)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/refund-reasons' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "label": "{value}",
              "code": "{value}",
              "description": "{value}"
            }'
      tags:
        - Refund Reasons
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundReasonResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createRefundReasonsWorkflow
      x-events: []
  /admin/refund-reasons/{id}:
    get:
      operationId: GetRefundReasonsId
      summary: Get a Refund Reason
      description: Retrieve a refund reason by its ID. You can expand the refund reason's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The refund reason's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.refundReason.retrieve("refr_123")
            .then(({ refund_reason }) => {
              console.log(refund_reason)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/refund-reasons/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Refund Reasons
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundReasonResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostRefundReasonsId
      summary: Update a Refund Reason
      description: Update a refund reason's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The refund reason's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateRefundReason'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.refundReason.update("ret_123", {
              code: "refund",
              label: "Refund",
            })
            .then(({ refund_reason }) => {
              console.log(refund_reason)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/refund-reasons/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "description": "{value}"
            }'
      tags:
        - Refund Reasons
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundReasonResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateRefundReasonsWorkflow
      x-events: []
    delete:
      operationId: DeleteRefundReasonsId
      summary: Delete a Refund Reason
      description: Delete a refund reason.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The refund reason's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.refundReason.delete("ret_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/refund-reasons/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Refund Reasons
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminRefundReasonDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteRefundReasonsWorkflow
      x-events: []
  /admin/regions:
    get:
      operationId: GetRegions
      summary: List Regions
      description: Retrieve a list of regions. The regions can be filtered by fields such as `id`. The regions can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the region's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the region's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a region's ID.
              - type: array
                description: Filter by region IDs.
                items:
                  type: string
                  title: id
                  description: A region's ID.
        - name: name
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: name
                description: Filter by a region's name.
              - type: array
                description: Filter by region names.
                items:
                  type: string
                  title: name
                  description: A region's name.
        - name: created_at
          in: query
          description: Filter by a region's creation date.
          required: false
          schema:
            type: object
            description: Filter by a region's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a region's update date.
          required: false
          schema:
            type: object
            description: Filter by a region's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a region's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a region's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: currency_code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: currency_code
                description: The region's currency code.
              - type: array
                description: The region's currency code.
                items:
                  type: string
                  title: currency_code
                  description: The currency code's details.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.region.list()
            .then(({ regions, count, limit, offset }) => {
              console.log(regions)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/regions' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Regions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of regions.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of regions.
                    required:
                      - regions
                    properties:
                      regions:
                        type: array
                        description: The list of regions.
                        items:
                          $ref: '#/components/schemas/AdminRegion'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostRegions
      summary: Create Region
      description: Create a region.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateRegion'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.region.create({
              name: "United States",
              currency_code: "usd",
            })
            .then(({ region }) => {
              console.log(region)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/regions' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Heloise",
              "currency_code": "{value}",
              "metadata": {}
            }'
      tags:
        - Regions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminRegionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createRegionsWorkflow
      x-events:
        - name: region.created
          payload: |-
            ```ts
            {
              id, // The ID of the region
            }
            ```
          description: Emitted when regions are created.
          deprecated: false
  /admin/regions/{id}:
    get:
      operationId: GetRegionsId
      summary: Get a Region
      description: Retrieve a region by its ID. You can expand the region's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The region's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.region.retrieve("region_123")
            .then(({ region }) => {
              console.log(region)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/regions/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Regions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminRegionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostRegionsId
      summary: Update a Region
      description: Update a region's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The region's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateRegion'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.region.update("region_123", {
              name: "United States",
            })
            .then(({ region }) => {
              console.log(region)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/regions/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "metadata": {}
            }'
      tags:
        - Regions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminRegionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateRegionsWorkflow
      x-events:
        - name: region.updated
          payload: |-
            ```ts
            {
              id, // The ID of the region
            }
            ```
          description: Emitted when regions are updated.
          deprecated: false
    delete:
      operationId: DeleteRegionsId
      summary: Delete a Region
      description: Delete a region.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The region's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.region.delete("region_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/regions/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Regions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The region's ID.
                  object:
                    type: string
                    title: object
                    description: The name of the deleted object.
                    default: region
                  deleted:
                    type: boolean
                    title: deleted
                    description: Whether the region was deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteRegionsWorkflow
      x-events:
        - name: region.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the region
            }
            ```
          description: Emitted when regions are deleted.
          deprecated: false
  /admin/reservations:
    get:
      operationId: GetReservations
      summary: List Reservations
      description: Retrieve a list of reservations. The reservations can be filtered by fields such as `id`. The reservations can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: location_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: location_id
                description: Filter by a location's ID to retrieve its associated reservations.
              - type: array
                description: Filter by location IDs to retrieve its associated reservations.
                items:
                  type: string
                  title: location_id
                  description: A location ID.
        - name: inventory_item_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: inventory_item_id
                description: Filter by an inventory item's ID to retrieve its associated reservations.
              - type: array
                description: Filter by inventory item IDs to retrieve its associated reservations.
                items:
                  type: string
                  title: inventory_item_id
                  description: An inventory item ID
        - name: line_item_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: line_item_id
                description: Filter by a line item's ID to retrieve its associated reservations.
              - type: array
                description: Filter by line item IDs to retrieve its associated reservations.
                items:
                  type: string
                  title: line_item_id
                  description: A line item ID
        - name: created_by
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: created_by
                description: Filter by the ID of a user to retrieve the reservations they created.
              - type: array
                description: Filter by user IDs to retrieve the reservations they created.
                items:
                  type: string
                  title: created_by
                  description: A user's ID.
        - name: description
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: description
                description: Filter by a reservation's description. This filter applies a full-text match. To search by keywords, use the `q` query parameter instead.
              - type: object
                description: Apply filters on the reservation's description.
                properties:
                  $eq:
                    type: string
                    description: Filter by an exact match.
                  $ne:
                    type: string
                    description: Filter by values not matching this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array's items.
                    items:
                      type: string
                  $nin:
                    type: array
                    description: Filter by values not in this array's items.
                    items:
                      type: string
                  $like:
                    type: string
                    description: Apply a `like` filter. Useful for strings only.
                  $ilike:
                    type: string
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $re:
                    type: string
                    description: Apply a regex filter. Useful for strings only.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                  $gt:
                    type: string
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
        - name: created_at
          in: query
          description: Filter by a reservation's creation date.
          required: false
          schema:
            type: object
            description: Filter by a reservation's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a reservation's update date.
          required: false
          schema:
            type: object
            description: Filter by a reservation's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a reservation's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a reservation's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
        - name: q
          in: query
          description: Apply a search query on the reservation's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Apply a search query on the reservation's searchable properties.
        - name: quantity
          in: query
          description: Filter by the reservation's quantity.
          required: false
          schema:
            type: object
            description: Filter by a reservation's quantity.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: number
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: number
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: number
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: number
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: number
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: number
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: number
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: number
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: number
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: number
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: number
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: number
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: number
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: number
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: quantity
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.reservation.list()
            .then(({ reservations, count, limit, offset }) => {
              console.log(reservations)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/reservations' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Reservations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of reservations.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of reservations.
                    required:
                      - reservations
                    properties:
                      reservations:
                        type: array
                        description: The list of reservations.
                        items:
                          $ref: '#/components/schemas/AdminReservation'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostReservations
      summary: Create Reservation
      description: Create a reservation.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateReservation'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.reservation.create({
              inventory_item_id: "iitem_123",
              location_id: "sloc_123",
              quantity: 10,
            })
            .then(({ reservation }) => {
              console.log(reservation)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/reservations' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "line_item_id": "{value}",
              "location_id": "{value}",
              "inventory_item_id": "{value}",
              "quantity": 3268935814217728,
              "description": "{value}",
              "metadata": {}
            }'
      tags:
        - Reservations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReservationResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createReservationsWorkflow
      x-events: []
  /admin/reservations/{id}:
    get:
      operationId: GetReservationsId
      summary: Get a Reservation
      description: Retrieve a reservation by its ID. You can expand the reservation's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The reservation's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.reservation.retrieve("res_123")
            .then(({ reservation }) => {
              console.log(reservation)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/reservations/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Reservations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReservationResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostReservationsId
      summary: Update a Reservation
      description: Update a reservation's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The reservation's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateReservation'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.reservation.update("res_123", {
              quantity: 20,
            })
            .then(({ reservation }) => {
              console.log(reservation)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/reservations/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "description": "{value}",
              "metadata": {}
            }'
      tags:
        - Reservations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReservationResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateReservationsWorkflow
      x-events: []
    delete:
      operationId: DeleteReservationsId
      summary: Delete a Reservation
      description: Delete a reservation.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The reservation's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.reservation.delete("res_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/reservations/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Reservations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The reservation's ID.
                  object:
                    type: string
                    title: object
                    description: The name of the deleted object.
                    default: reservation
                  deleted:
                    type: boolean
                    title: deleted
                    description: Whether the reservation was deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteReservationsWorkflow
      x-events: []
  /admin/return-reasons:
    get:
      operationId: GetReturnReasons
      summary: List Return Reasons
      description: Retrieve a list of return reasons. The return reasons can be filtered by fields such as `id`. The return reasons can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the return reason's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the return reason's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a return reason ID.
              - type: array
                description: Filter by return reason IDs.
                items:
                  type: string
                  title: id
                  description: A return reason ID.
        - name: value
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: value
                description: Filter by a return reason's value.
              - type: array
                description: Filter by return reason values.
                items:
                  type: string
                  title: value
                  description: A return reason value.
        - name: label
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: label
                description: Filter by a return reason's label.
              - type: array
                description: Filter by return reason labels.
                items:
                  type: string
                  title: label
                  description: A return reason label.
        - name: description
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: description
                description: Filter by a description. This filter looks for an exact match of the return reason's description. To search by a term or keywords, use the  `q` query parameter instead.
              - type: array
                description: Filter by descriptions. This filter looks for an exact match of the return reason's description. To search by a term or keywords, use the  `q` query parameter instead.
                items:
                  type: string
                  title: description
                  description: A return reason's description.
        - name: parent_return_reason_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: parent_return_reason_id
                description: Filter by a return reason's ID to retrieve its child return reasons.
              - type: array
                description: Filter by return reason IDs to retrieve their child return reasons.
                items:
                  type: string
                  title: parent_return_reason_id
                  description: The return reason's ID.
        - name: created_at
          in: query
          description: Filter by a return reason's creation date.
          required: false
          schema:
            type: object
            description: Filter by a return reason's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a return reason's update date.
          required: false
          schema:
            type: object
            description: Filter by a return reason's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a return reason's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a return reason's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.returnReason.list()
            .then(({ return_reasons, count, limit, offset }) => {
              console.log(return_reasons)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/return-reasons' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Return Reasons
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnReasonListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostReturnReasons
      summary: Create Return Reason
      description: Create a return reason.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateReturnReason'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.returnReason.create({
              value: "refund",
              label: "Refund",
            })
            .then(({ return_reason }) => {
              console.log(return_reason)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/return-reasons' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "value": "{value}",
              "label": "{value}"
            }'
      tags:
        - Return Reasons
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnReasonResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createReturnReasonsWorkflow
      x-events: []
  /admin/return-reasons/{id}:
    get:
      operationId: GetReturnReasonsId
      summary: Get a Return Reason
      description: Retrieve a return reason by its ID. You can expand the return reason's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return reason's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.returnReason.retrieve("ret_123")
            .then(({ return_reason }) => {
              console.log(return_reason)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/return-reasons/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Return Reasons
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnReasonResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostReturnReasonsId
      summary: Update a Return Reason
      description: Update a return reason's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return reason's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateReturnReason'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.returnReason.update("ret_123", {
              value: "refund",
              label: "Refund",
            })
            .then(({ return_reason }) => {
              console.log(return_reason)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/return-reasons/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Return Reasons
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnReasonResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateReturnReasonsWorkflow
      x-events: []
    delete:
      operationId: DeleteReturnReasonsId
      summary: Delete a Return Reason
      description: Delete a return reason.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return reason's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.returnReason.delete("ret_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/return-reasons/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Return Reasons
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnReasonDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteReturnReasonsWorkflow
      x-events: []
  /admin/returns:
    get:
      operationId: GetReturns
      summary: List Returns
      description: Retrieve a list of returns. The returns can be filtered by fields such as `id`. The returns can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a return's ID.
              - type: array
                description: Filter by return IDs.
                items:
                  type: string
                  title: id
                  description: A return ID.
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by a return status.
              - type: array
                description: Filter by return statuses.
                items:
                  type: string
                  title: status
                  description: A return status.
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: sales_channel_id
          in: query
          description: Filter by sales channel IDs to retrieve their associated returns.
          required: false
          schema:
            type: array
            description: Filter by sales channel IDs to retrieve their associated returns.
            items:
              type: string
              title: sales_channel_id
              description: A sales channel's ID.
        - name: region_id
          in: query
          description: Filter by region IDs to retrieve their associated returns.
          required: false
          schema:
            oneOf:
              - type: string
                title: region_id
                description: The return's region id.
              - type: array
                description: The return's region id.
                items:
                  type: string
                  title: region_id
                  description: The region id's details.
        - name: q
          in: query
          description: Search term to filter the return's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the return's searchable properties.
        - name: created_at
          in: query
          description: Filter by the return's creation date.
          required: false
          schema:
            type: object
            description: Filter by the return's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by the return's update date.
          required: false
          schema:
            type: object
            description: Filter by the return's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: customer_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: customer_id
                description: The return's customer id.
              - type: array
                description: The return's customer id.
                items:
                  type: string
                  title: customer_id
                  description: The customer id's details.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.list()
            .then(({ returns, count, limit, offset }) => {
              console.log(returns)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/returns' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of returns.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of returns.
                    required:
                      - returns
                    properties:
                      returns:
                        type: array
                        description: The return's returns.
                        items:
                          $ref: '#/components/schemas/AdminReturn'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostReturns
      summary: Create Return
      description: Create a return. The return can later be requested or confirmed.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminInitiateReturnRequest'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.initiateRequest({
              order_id: "order_123",
            })
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "order_id": "{value}",
              "items": [
                {
                  "id": "id_7DO5H2LbSN3p7IzB",
                  "quantity": 1357590174892032,
                  "reason_id": "{value}",
                  "note": "{value}"
                }
              ],
              "return_shipping": {
                "option_id": "{value}",
                "price": 5112171463704576
              },
              "internal_note": "{value}",
              "location_id": "{value}"
            }'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderReturnResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: beginReturnOrderWorkflow
      x-events: []
  /admin/returns/{id}:
    get:
      operationId: GetReturnsId
      summary: Get a Return
      description: Retrieve a return by its ID. You can expand the return's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.retrieve("return_123")
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/returns/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostReturnsId
      summary: Update a Return
      description: Update a return's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateReturnRequest'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.updateRequest("return_123", {
              location_id: "sloc_123",
            })
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "metadata": {}
            }'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateReturnWorkflow
      x-events: []
  /admin/returns/{id}/cancel:
    post:
      operationId: PostReturnsIdCancel
      summary: Cancel a return.
      description: Cancel a return.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.cancel("return_123")
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns/{id}/cancel' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostCancelReturnReqSchema'
      x-workflow: cancelReturnWorkflow
      x-events: []
  /admin/returns/{id}/dismiss-items:
    post:
      operationId: PostReturnsIdDismissItems
      summary: Add Damaged Items to Return
      x-sidebar-summary: Add Damaged Items
      description: Add damaged items, whose quantity is to be dismissed, to a return. These items will have the action `RECEIVE_DAMAGED_RETURN_ITEM`.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminDismissItems'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.dismissItems("return_123", {
              items: [
                { id: "orli_123", quantity: 1 },
              ],
            })
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns/{id}/dismiss-items' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: dismissItemReturnRequestWorkflow
      x-events: []
  /admin/returns/{id}/dismiss-items/{action_id}:
    post:
      operationId: PostReturnsIdDismissItemsAction_id
      summary: Update Damaged Item of Return
      x-sidebar-summary: Update Damaged Item
      description: |
        Update a damaged item, whose quantity is to be dismissed, in the return by the ID of the  item's `RECEIVE_DAMAGED_RETURN_ITEM` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property. return.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the damaged item's `RECEIVE_DAMAGED_RETURN_ITEM` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostReturnsDismissItemsActionReqSchema'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.updateDismissItem("return_123", "orchach_123", {
              quantity: 2,
            })
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns/{id}/dismiss-items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateReceiveItemReturnRequestWorkflow
      x-events: []
    delete:
      operationId: DeleteReturnsIdDismissItemsAction_id
      summary: Remove Damaged Item from Return
      x-sidebar-summary: Remove Damaged Item
      description: |
        Remove a damaged item, whose quantity is to be dismissed, in the return by the ID of the  item's `RECEIVE_DAMAGED_RETURN_ITEM` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property. return.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the damaged item's `RECEIVE_DAMAGED_RETURN_ITEM` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a return's ID.
              - type: array
                description: Filter by return IDs.
                items:
                  type: string
                  title: id
                  description: The id's ID.
              - type: object
                description: Filter by a return's ID.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: order_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: order_id
                description: Filter by a return's order ID.
              - type: array
                description: Filter by return order IDs.
                items:
                  type: string
                  title: order_id
                  description: The order's ID.
              - type: object
                description: Filter by a return's order ID.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by a return's status.
              - type: array
                description: Filter by return statuses.
                items:
                  type: string
                  title: status
                  description: The status's details.
              - type: object
                description: Filter by a return's status.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
        - name: updated_at
          in: query
          description: Filter by a return's update date.
          required: false
          schema:
            type: object
            description: Filter by a return's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: with_deleted
          in: query
          description: The return's with deleted.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: The return's with deleted.
        - name: created_at
          in: query
          description: Filter by the return's creation date.
          required: false
          schema:
            type: object
            description: Filter by the return's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.removeDismissItem("return_123", "orchach_123")
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/returns/{id}/dismiss-items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeItemReturnActionWorkflow
      x-events: []
  /admin/returns/{id}/receive:
    post:
      operationId: PostReturnsIdReceive
      summary: Start Return Receival
      description: Start a return receival process to be later confirmed using the `/admin/returns/:id/receive/confirm` API route.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminInitiateReceiveReturn'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.initiateReceive("return_123", {
              internal_note: "Return received by the customer",
            })
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns/{id}/receive' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "return_id": "{value}",
              "items": [
                {
                  "id": "id_qfy3t6cU7m8O5cJ5zs",
                  "quantity": 6429460591017984,
                  "reason_id": "{value}",
                  "note": "{value}"
                }
              ],
              "internal_note": "{value}"
            }'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOrderReturnResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: beginReceiveReturnWorkflow
      x-events: []
    delete:
      operationId: DeleteReturnsIdReceive
      summary: Cancel Return Receival
      description: Cancel the receival process previously started, and hasn't been confirmed, of a return.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.cancelReceive("return_123")
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/returns/{id}/receive' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The return's ID.
                  object:
                    type: string
                    title: object
                    description: The name of the returned object.
                    default: return
                  deleted:
                    type: boolean
                    title: deleted
                    description: Whether the return was deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: cancelReturnReceiveWorkflow
      x-events: []
  /admin/returns/{id}/receive-items:
    post:
      operationId: PostReturnsIdReceiveItems
      summary: Add Received Items to Return
      x-sidebar-summary: Add Received Items
      description: Add received items in a return. These items will have the action `RECEIVE_RETURN_ITEM`.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminReceiveItems'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.receiveItems("return_123", {
              items: [
                { id: "item_123", quantity: 1 },
              ],
            })
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns/{id}/receive-items' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: receiveItemReturnRequestWorkflow
      x-events: []
  /admin/returns/{id}/receive-items/{action_id}:
    post:
      operationId: PostReturnsIdReceiveItemsAction_id
      summary: Update a Received Item in a Return
      x-sidebar-summary: Update Received Item
      description: |
        Update a received item in the return by the ID of the  item's `RECEIVE_RETURN_ITEM` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property. return.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the received item's `RECEIVE_RETURN_ITEM` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminPostReturnsReceiveItemsActionReqSchema'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.updateReceiveItem("return_123", "orchach_123", {
              quantity: 2,
            })
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns/{id}/receive-items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateReceiveItemReturnRequestWorkflow
      x-events: []
    delete:
      operationId: DeleteReturnsIdReceiveItemsAction_id
      summary: Remove a Received Item from Return
      x-sidebar-summary: Remove Received Item
      description: |
        Remove a received item in the return by the ID of the  item's `RECEIVE_RETURN_ITEM` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property. return.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the received item's `RECEIVE_RETURN_ITEM` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a return's ID.
              - type: array
                description: Filter by return IDs.
                items:
                  type: string
                  title: id
                  description: The id's ID.
              - type: object
                description: Filter by a return's ID.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: order_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: order_id
                description: Filter by a return's order ID.
              - type: array
                description: Filter by return order IDs.
                items:
                  type: string
                  title: order_id
                  description: The order's ID.
              - type: object
                description: Filter by a return's order ID.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by a return's status.
              - type: array
                description: Filter by return statuses.
                items:
                  type: string
                  title: status
                  description: The status's details.
              - type: object
                description: Filter by a return's status.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
        - name: updated_at
          in: query
          description: Filter by a return's update date.
          required: false
          schema:
            type: object
            description: Filter by a return's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: with_deleted
          in: query
          description: The return's with deleted.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: The return's with deleted.
        - name: created_at
          in: query
          description: Filter by the return's creation date.
          required: false
          schema:
            type: object
            description: Filter by the return's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.removeReceiveItem("return_123", "orchach_123")
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/returns/{id}/receive-items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeItemReceiveReturnActionWorkflow
      x-events: []
  /admin/returns/{id}/receive/confirm:
    post:
      operationId: PostReturnsIdReceiveConfirm
      summary: Confirm Return Receival
      description: |
        Confirm that a return has been received. This updates the quantity of the items received, if not damaged, and  reflects the changes on the order.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminConfirmReceiveReturn'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.confirmReceive("return_123", {
              no_notification: true,
            })
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns/{id}/receive/confirm' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: confirmReturnReceiveWorkflow
      x-events:
        - name: order.return_received
          payload: |-
            ```ts
            {
              order_id, // The ID of the order
              return_id, // The ID of the return
            }
            ```
          description: Emitted when a return is marked as received.
          deprecated: false
  /admin/returns/{id}/request:
    post:
      operationId: PostReturnsIdRequest
      summary: Confirm Return Request
      description: |
        Confirm a requested return. The changes are applied on the inventory quantity and the order only after the return has been confirmed as received using the `/admin/returns/:id/received/confirm`.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminConfirmReturnRequest'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.confirmRequest("return_123", {
              no_notification: true,
            })
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns/{id}/request' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: confirmReturnRequestWorkflow
      x-events:
        - name: order.return_requested
          payload: |-
            ```ts
            {
              order_id, // The ID of the order
              return_id, // The ID of the return
            }
            ```
          description: Emitted when a return request is confirmed.
          deprecated: false
    delete:
      operationId: DeleteReturnsIdRequest
      summary: Cancel Return Request
      description: Cancel a requested return.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.cancelRequest("return_123")
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/returns/{id}/request' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The return's ID.
                  object:
                    type: string
                    title: object
                    description: The name of the deleted object.
                    default: return
                  deleted:
                    type: boolean
                    title: deleted
                    description: Whether the return was deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: cancelReturnRequestWorkflow
      x-events: []
  /admin/returns/{id}/request-items:
    post:
      operationId: PostReturnsIdRequestItems
      summary: Add Requested Items to Return
      x-sidebar-summary: Add Items
      description: Add items that are requested to be returned. These items will have the action `RETURN_ITEM`.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminAddReturnItems'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.addReturnItem("return_123", {
              id: "orlitem_123",
              quantity: 1,
            })
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns/{id}/request-items' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: requestItemReturnWorkflow
      x-events: []
  /admin/returns/{id}/request-items/{action_id}:
    post:
      operationId: PostReturnsIdRequestItemsAction_id
      summary: Update Requested Item in Return
      x-sidebar-summary: Update Requested Item
      description: |
        Update a requested item to be returned by the ID of the  item's `RETURN_ITEM` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property. return.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the item's `RETURN_ITEM` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateReturnItems'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.updateReturnItem("return_123", "orchach_123", {
              quantity: 2,
            })
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns/{id}/request-items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateRequestItemReturnWorkflow
      x-events: []
    delete:
      operationId: DeleteReturnsIdRequestItemsAction_id
      summary: Remove Item from Return
      x-sidebar-summary: Remove Item
      description: |
        Remove a requested item to be returned by the ID of the item's `RETURN_ITEM` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property. return.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the item's `RETURN_ITEM` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a return's ID.
              - type: array
                description: Filter by return IDs.
                items:
                  type: string
                  title: id
                  description: The id's ID.
              - type: object
                description: Filter by a return's ID.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: order_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: order_id
                description: Filter by a return's order ID.
              - type: array
                description: Filter by return order IDs.
                items:
                  type: string
                  title: order_id
                  description: The order's ID.
              - type: object
                description: Filter by a return's order ID.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by a return's status.
              - type: array
                description: Filter by return statuses.
                items:
                  type: string
                  title: status
                  description: The status's details.
              - type: object
                description: Filter by a return's status.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
        - name: updated_at
          in: query
          description: Filter by a return's update date.
          required: false
          schema:
            type: object
            description: Filter by a return's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: with_deleted
          in: query
          description: The return's with deleted.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: The return's with deleted.
        - name: created_at
          in: query
          description: Filter by the return's creation date.
          required: false
          schema:
            type: object
            description: Filter by the return's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.removeReturnItem("return_123", "orchach_123")
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/returns/{id}/request-items/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeItemReturnActionWorkflow
      x-events: []
  /admin/returns/{id}/shipping-method:
    post:
      operationId: PostReturnsIdShippingMethod
      summary: Add a Shipping Method to a Return
      x-sidebar-summary: Add Shipping Method
      description: Add a shipping method to a return. The shipping method will have a `SHIPPING_ADD` action.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminAddReturnShipping'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.addReturnShipping("return_123", {
              shipping_option_id: "so_123",
            })
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns/{id}/shipping-method' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "shipping_option_id": "{value}"
            }'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createReturnShippingMethodWorkflow
      x-events: []
  /admin/returns/{id}/shipping-method/{action_id}:
    post:
      operationId: PostReturnsIdShippingMethodAction_id
      summary: Update a Shipping Method of a Return
      x-sidebar-summary: Update Shipping Method
      description: |
        Update a shipping method of the return by the ID of the item's `SHIPPING_ADD` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateReturnShipping'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.updateReturnShipping("return_123", "orchach_123", {
              custom_amount: 100,
            })
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/returns/{id}/shipping-method/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateReturnShippingMethodWorkflow
      x-events: []
    delete:
      operationId: DeleteReturnsIdShippingMethodAction_id
      summary: Remove Shipping Method from Return
      x-sidebar-summary: Remove Shipping Method
      description: |
        Remove a shipping method of the return by the ID of the item's `SHIPPING_ADD` action.

        Every item has an `actions` property, whose value is an array of actions. You can check the action's name using its `action` property, and use the value of the `id` property.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The return's ID.
          required: true
          schema:
            type: string
        - name: action_id
          in: path
          description: The ID of the shipping method's `SHIPPING_ADD` action.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a return's ID.
              - type: array
                description: Filter by return IDs.
                items:
                  type: string
                  title: id
                  description: The id's ID.
              - type: object
                description: Filter by a return's ID.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: order_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: order_id
                description: Filter by a return's order ID.
              - type: array
                description: Filter by return order IDs.
                items:
                  type: string
                  title: order_id
                  description: The order's ID.
              - type: object
                description: Filter by a return's order ID.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: status
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: status
                description: Filter by a return's status.
              - type: array
                description: Filter by return statuses.
                items:
                  type: string
                  title: status
                  description: The status's details.
              - type: object
                description: Filter by a return's status.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
        - name: updated_at
          in: query
          description: Filter by a return's update date.
          required: false
          schema:
            type: object
            description: Filter by a return's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: with_deleted
          in: query
          description: The return's with deleted.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: The return's with deleted.
        - name: created_at
          in: query
          description: Filter by the return's creation date.
          required: false
          schema:
            type: object
            description: Filter by the return's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by multiple exact matches.
                    items:
                      type: string
                      title: $eq
                      description: An exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: The value to match.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: The value not to match.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                    properties:
                      $and:
                        type: array
                        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $and
                      $or:
                        type: array
                        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                        items:
                          type: object
                        title: $or
                      $eq:
                        oneOf:
                          - type: string
                            title: $eq
                            description: Filter by an exact match.
                          - type: array
                            description: Filter by multiple exact matches.
                            items:
                              type: string
                              title: $eq
                              description: The value to match.
                      $ne:
                        type: string
                        title: $ne
                        description: Filter by values not matching this parameter.
                      $in:
                        type: array
                        description: Filter by values in this array.
                        items:
                          type: string
                          title: $in
                          description: The value to match.
                      $nin:
                        type: array
                        description: Filter by values not in this array.
                        items:
                          type: string
                          title: $nin
                          description: The value to not match
                      $not:
                        oneOf:
                          - type: string
                            title: $not
                            description: Filter by values not matching this parameter
                          - type: object
                            description: Filter by values not matching the conditions in this parameter.
                          - type: array
                            description: Filter by values not matching the values of this parameter.
                            items:
                              type: string
                              title: $not
                              description: The values to not match.
                      $gt:
                        type: string
                        title: $gt
                        description: Filter by values greater than this parameter. Useful for numbers and dates only.
                      $gte:
                        type: string
                        title: $gte
                        description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                      $lt:
                        type: string
                        title: $lt
                        description: Filter by values less than this parameter. Useful for numbers and dates only.
                      $lte:
                        type: string
                        title: $lte
                        description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                      $like:
                        type: string
                        title: $like
                        description: Apply a `like` filter. Useful for strings only.
                      $re:
                        type: string
                        title: $re
                        description: Apply a regex filter. Useful for strings only.
                      $ilike:
                        type: string
                        title: $ilike
                        description: Apply a case-insensitive `like` filter. Useful for strings only.
                      $fulltext:
                        type: string
                        title: $fulltext
                        description: Filter to apply on full-text properties.
                      $overlap:
                        type: array
                        description: Filter arrays that have overlapping values with this parameter.
                        items:
                          type: string
                          title: $overlap
                          description: The value to match.
                      $contains:
                        type: array
                        description: Filter arrays that contain some of the values of this parameter.
                        items:
                          type: string
                          title: $contains
                          description: The values to match.
                      $contained:
                        type: array
                        description: Filter arrays that contain all values of this parameter.
                        items:
                          type: string
                          title: $contained
                          description: The values to match.
                      $exists:
                        type: boolean
                        title: $exists
                        description: Filter by whether a value for this parameter exists (not `null`).
                  - type: array
                    description: Filter by values not matching those in this parameter.
                    items:
                      type: string
                      title: $not
                      description: The values to not match.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: The values to match.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: The values to match.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: The values to match.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.return.deleteReturnShipping("return_123", "orchach_123")
            .then(({ return }) => {
              console.log(return)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/returns/{id}/shipping-method/{action_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Returns
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminReturnPreviewResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeReturnShippingMethodWorkflow
      x-events: []
  /admin/sales-channels:
    get:
      operationId: GetSalesChannels
      summary: List Sales Channels
      description: Retrieve a list of sales channels. The sales channels can be filtered by fields such as `id`. The sales channels can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the sales channel's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the sales channel's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a sales channel ID.
              - type: array
                description: Filter by sales channel IDs.
                items:
                  type: string
                  title: id
                  description: A sales channel ID.
        - name: name
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: name
                description: Filter by a sales channel name.
              - type: array
                description: Filter by sales channel names.
                items:
                  type: string
                  title: name
                  description: A sales channel name.
        - name: description
          in: query
          description: The sales channel's description.
          required: false
          schema:
            type: string
            title: description
            description: Filter by a description. This filter matches an entire description. To search by terms or keywords, use the `q` query parameter instead.
        - name: is_disabled
          in: query
          description: Filter by whether the sales channel is disabled.
          required: false
          schema:
            type: boolean
            title: is_disabled
            description: Filter by whether the sales channel is disabled.
        - name: created_at
          in: query
          description: Filter by a sales channel's creation date.
          required: false
          schema:
            type: object
            description: Filter by a sales channel's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a sales channel's update date.
          required: false
          schema:
            type: object
            description: Filter by a sales channel's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a sales channel's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a sales channel's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: location_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: location_id
                description: Filter by a location ID to retrieve its associated sales channels.
              - type: array
                description: Filter by location IDs to retrieve their associated sales channels.
                items:
                  type: string
                  title: location_id
                  description: A location ID.
        - name: publishable_key_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: publishable_key_id
                description: Filter by a publishable API key's ID to retrieve its associated sales channels.
              - type: array
                description: Filter by publishable API key IDs to retrieve their associated sales channels.
                items:
                  type: string
                  title: publishable_key_id
                  description: A publishable API key ID.
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.salesChannel.list()
            .then(({ sales_channels, count, limit, offset }) => {
              console.log(sales_channels)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/sales-channels' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Sales Channels
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of sales channels.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of sales channels.
                    required:
                      - sales_channels
                    properties:
                      sales_channels:
                        type: array
                        description: The list of sales channels.
                        items:
                          $ref: '#/components/schemas/AdminSalesChannel'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostSalesChannels
      summary: Create Sales Channel
      description: Create a sales channel.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateSalesChannel'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.salesChannel.create({
              name: "Storefront",
            })
            .then(({ salesChannel }) => {
              console.log(salesChannel)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/sales-channels' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Linnea",
              "description": "{value}",
              "metadata": {}
            }'
      tags:
        - Sales Channels
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminSalesChannelResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createSalesChannelsWorkflow
      x-events:
        - name: sales-channel.created
          payload: |-
            ```ts
            {
              id, // The ID of the sales channel
            }
            ```
          description: Emitted when sales channels are created.
          deprecated: false
  /admin/sales-channels/{id}:
    get:
      operationId: GetSalesChannelsId
      summary: Get a Sales Channel
      description: Retrieve a sales channel by its ID. You can expand the sales channel's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The sales channel's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.salesChannel.retrieve("sc_123")
            .then(({ sales_channel }) => {
              console.log(sales_channel)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/sales-channels/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Sales Channels
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminSalesChannelResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostSalesChannelsId
      summary: Update a Sales Channel
      description: Update a sales channel's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The sales channel's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateSalesChannel'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.salesChannel.update(
              "sc_123",
              {
                name: "Storefront",
              }
            )
            .then(({ salesChannel }) => {
              console.log(salesChannel)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/sales-channels/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "description": "{value}",
              "metadata": {}
            }'
      tags:
        - Sales Channels
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminSalesChannelResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateSalesChannelsWorkflow
      x-events:
        - name: sales-channel.updated
          payload: |-
            ```ts
            {
              id, // The ID of the sales channel
            }
            ```
          description: Emitted when sales channels are updated.
          deprecated: false
    delete:
      operationId: DeleteSalesChannelsId
      summary: Delete a Sales Channel
      description: Delete a sales channel.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The sales channel's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.salesChannel.delete("sc_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/sales-channels/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Sales Channels
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminSalesChannelDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteSalesChannelsWorkflow
      x-events:
        - name: sales-channel.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the sales channel
            }
            ```
          description: Emitted when sales channels are deleted.
          deprecated: false
  /admin/sales-channels/{id}/products:
    post:
      operationId: PostSalesChannelsIdProducts
      summary: Manage Products in Sales Channel
      x-sidebar-summary: Manage Products
      description: Manage products in a sales channel to add or remove them from the channel.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The sales channel's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchLink'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.salesChannel.batchProducts("sc_123", {
              add: ["prod_123", "prod_456"],
              remove: ["prod_789"]
            })
            .then(({ sales_channel }) => {
              console.log(sales_channel)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/sales-channels/{id}/products' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Sales Channels
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminSalesChannelResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: linkProductsToSalesChannelWorkflow
      x-events: []
  /admin/shipping-option-types:
    get:
      operationId: GetShippingOptionTypes
      summary: List Shipping Option Types
      description: Retrieve a list of shipping option types. The shipping option types can be filtered by fields such as `id`. The shipping option types can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
        - name: q
          in: query
          description: Search query to apply on the shipping option type's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search query to apply on the shipping option type's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a shipping option type's ID.
              - type: array
                description: Filter by shipping option type IDs.
                items:
                  type: string
                  title: id
                  description: A shipping option type's ID.
        - name: label
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: label
                description: Filter by a shipping option type's label.
              - type: array
                description: Filter by shipping option type labels.
                items:
                  type: string
                  title: label
                  description: A label.
        - name: code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: code
                description: Filter by a shipping option type's code.
              - type: array
                description: Filter by shipping option type codes.
                items:
                  type: string
                  title: code
                  description: A code.
        - name: created_at
          in: query
          description: Filter by a shipping option type's creation date.
          required: false
          schema:
            type: object
            description: Filter by a shipping option type's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a shipping option type's update date.
          required: false
          schema:
            type: object
            description: Filter by a shipping option type's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a shipping option type's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a shipping option type's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingOptionType.list()
            .then(({ shipping_option_types, count, limit, offset }) => {
              console.log(shipping_option_types)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/shipping-option-types' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Shipping Option Types
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminShippingOptionTypeListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.10.0
    post:
      operationId: PostShippingOptionTypes
      summary: Create Shipping Option Type
      description: Create a shipping option type.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateShippingOptionType'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingOptionType.create({
              label: "Standard",
              code: "standard",
              description: "Ship in 2-3 days."
            })
            .then(({ shipping_option_type }) => {
              console.log(shipping_option_type)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/shipping-option-types' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "label": "{value}",
              "code": "{value}"
            }'
      tags:
        - Shipping Option Types
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminShippingOptionTypeResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createShippingOptionTypesWorkflow
      x-events:
        - name: shipping-option-type.created
          payload: |-
            ```ts
            {
              id, // The ID of the shipping option type
            }
            ```
          description: Emitted when shipping option types are created.
          deprecated: false
          since: 2.10.0
      x-since: 2.10.0
  /admin/shipping-option-types/{id}:
    get:
      operationId: GetShippingOptionTypesId
      summary: Get a Shipping Option Type
      description: Retrieve a shipping option type by its ID. You can expand the shipping option type's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The shipping option type's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingOptionType.retrieve("sotype_123")
            .then(({ shipping_option_type }) => {
              console.log(shipping_option_type)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/shipping-option-types/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Shipping Option Types
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminShippingOptionTypeResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.10.0
    post:
      operationId: PostShippingOptionTypesId
      summary: Update a Shipping Option Type
      description: Update a shipping option type's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The shipping option type's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateShippingOptionType'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingOptionType.update("sotype_123", {
              code: "express"
            })
            .then(({ shipping_option_type }) => {
              console.log(shipping_option_type)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/shipping-option-types/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Shipping Option Types
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminShippingOptionTypeResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateShippingOptionTypesWorkflow
      x-events:
        - name: shipping-option-type.updated
          payload: |-
            ```ts
            {
              id, // The ID of the shipping option type
            }
            ```
          description: Emitted when shipping option types are updated.
          deprecated: false
          since: 2.10.0
      x-since: 2.10.0
    delete:
      operationId: DeleteShippingOptionTypesId
      summary: Delete a Shipping Option Type
      x-sidebar-summary: Delete Shipping Option Type
      description: Delete a shipping option type.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The shipping option type's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingOptionType.delete("sotype_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/shipping-option-types/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Shipping Option Types
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminShippingOptionTypeDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteShippingOptionTypesWorkflow
      x-events:
        - name: shipping-option-type.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the shipping option type
            }
            ```
          description: Emitted when shipping option types are deleted.
          deprecated: false
          since: 2.10.0
      x-since: 2.10.0
  /admin/shipping-options:
    get:
      operationId: GetShippingOptions
      summary: List Shipping Options
      description: Retrieve a list of shipping options. The shipping options can be filtered by fields such as `id`. The shipping options can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a shipping option ID.
              - type: array
                description: Filter by shipping option IDs.
                items:
                  type: string
                  title: id
                  description: A shipping option's ID.
        - name: q
          in: query
          description: Search term to filter the shipping option's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the shipping option's searchable properties.
        - name: service_zone_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: service_zone_id
                description: Filter by a service zone's ID to retrieve its associated shipping options.
              - type: array
                description: Filter by service zone IDs to retrieve their associated shipping options.
                items:
                  type: string
                  title: service_zone_id
                  description: A service zone ID.
        - name: shipping_profile_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: shipping_profile_id
                description: Filter by a shipping profile's ID to retrieve its associated shipping options.
              - type: array
                description: Filter by shipping profile IDs to retrieve their associated shipping options.
                items:
                  type: string
                  title: shipping_profile_id
                  description: A shipping profile ID.
        - name: provider_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: provider_id
                description: Filter by a fulfillment provider's ID to retrieve its associated shipping options.
              - type: array
                description: Filter by fulfillment provider IDs to retrieve their associated shipping options.
                items:
                  type: string
                  title: provider_id
                  description: A fulfillment provider ID.
        - name: shipping_option_type_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: shipping_option_type_id
                description: Filter by a shipping option type's ID to retrieve its associated shipping options.
              - type: array
                description: Filter by shipping option type IDs to retrieve its associated shipping options.
                items:
                  type: string
                  title: shipping_option_type_id
                  description: A shipping option type ID.
        - name: created_at
          in: query
          description: Filter by a shipping option's creation date.
          required: false
          schema:
            type: object
            description: Filter by a shipping option's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a shipping option's update date.
          required: false
          schema:
            type: object
            description: Filter by a shipping option's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a shipping option's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a shipping option's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: stock_location_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: stock_location_id
                description: Filter by a location ID to retrieve its associated shipping option.
              - type: array
                description: Filter by location IDs to retrieve their associated shipping option.
                items:
                  type: string
                  title: stock_location_id
                  description: A stock location's ID.
        - name: is_return
          in: query
          description: Filter by whether the shipping option is used for returns.
          required: false
          schema:
            type: boolean
            title: is_return
            description: Filter by whether the shipping option is used for returns.
        - name: admin_only
          in: query
          description: Filter by whether the shipping option is used by admin users only.
          required: false
          schema:
            type: boolean
            title: admin_only
            description: Filter by whether the shipping option is used by admin users only.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingOption.list()
            .then(({ shipping_options, count, limit, offset }) => {
              console.log(shipping_options)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/shipping-options' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Shipping Options
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of shipping options.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of shipping options.
                    required:
                      - shipping_options
                    properties:
                      shipping_options:
                        type: array
                        description: The list of shipping options.
                        items:
                          type: object
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostShippingOptions
      summary: Create Shipping Option
      description: Create a shipping option.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/AdminCreateFlatRateShippingOption'
                - $ref: '#/components/schemas/AdminCreateCalculatedShippingOption'
              description: The shipping option's details.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingOption.create({
              name: "Standard Shipping",
              profile_id: "shp_123",
            })
            .then(({ shipping_option }) => {
              console.log(shipping_option)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/shipping-options' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Julie",
              "service_zone_id": "{value}",
              "shipping_profile_id": "{value}",
              "price_type": "{value}",
              "provider_id": "{value}",
              "type": {
                "label": "{value}",
                "description": "{value}",
                "code": "{value}"
              },
              "prices": []
            }'
      tags:
        - Shipping Options
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminShippingOptionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createShippingOptionsWorkflow
      x-events:
        - name: shipping-option.created
          payload: |-
            ```ts
            {
              id, // The ID of the shipping option
            }
            ```
          description: Emitted when shipping options are created.
          deprecated: false
          since: 2.12.4
  /admin/shipping-options/{id}:
    get:
      operationId: GetShippingOptionsId
      summary: Get a Shipping Option
      description: Retrieve a shipping option by its ID. You can expand the shipping option's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The shipping option's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingOption.retrieve("so_123")
            .then(({ shipping_option }) => {
              console.log(shipping_option)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/shipping-options/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Shipping Options
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminShippingOptionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostShippingOptionsId
      summary: Update a Shipping Option
      description: Update a shipping option's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The shipping option's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateShippingOption'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingOption.update("so_123", {
              name: "Standard Shipping",
            })
            .then(({ shipping_option }) => {
              console.log(shipping_option)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/shipping-options/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Shipping Options
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminShippingOptionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateShippingOptionsWorkflow
      x-events:
        - name: shipping-option.updated
          payload: |-
            ```ts
            {
              id, // The ID of the shipping option
            }
            ```
          description: Emitted when shipping options are updated.
          deprecated: false
          since: 2.12.4
    delete:
      operationId: DeleteShippingOptionsId
      summary: Delete a Shipping Option
      description: Delete a shipping option.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The shipping option's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingOption.delete("so_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/shipping-options/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Shipping Options
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminShippingOptionDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteShippingOptionsWorkflow
      x-events:
        - name: shipping-option.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the shipping option
            }
            ```
          description: Emitted when shipping options are deleted.
          deprecated: false
          since: 2.12.4
  /admin/shipping-options/{id}/rules/batch:
    post:
      operationId: PostShippingOptionsIdRulesBatch
      summary: Manage the Rules of a Shipping Option
      x-sidebar-summary: Manage Rules
      description: Manage the rules of a shipping option to create, update, or delete them.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The shipping option's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: The rules to create, update, or delete.
              properties:
                create:
                  type: array
                  description: The shipping option rules to create.
                  items:
                    $ref: '#/components/schemas/AdminCreateShippingOptionRule'
                update:
                  type: array
                  description: The shipping option rules to update.
                  items:
                    $ref: '#/components/schemas/AdminUpdateShippingOptionRule'
                delete:
                  type: array
                  description: The shipping option rules to delete.
                  items:
                    type: string
                    title: delete
                    description: A rule's ID.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingOption.updateRules("so_123", {
              create: [{ attribute: "enabled_in_store", operator: "eq", value: "true" }],
            })
            .then(({ shipping_option }) => {
              console.log(shipping_option)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/shipping-options/{id}/rules/batch' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Shipping Options
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The batch operation's result.
                required:
                  - created
                  - updated
                  - deleted
                properties:
                  created:
                    type: array
                    description: The created shipping option rules.
                    items:
                      $ref: '#/components/schemas/AdminShippingOptionRule'
                  updated:
                    type: array
                    description: The updated shipping option rules.
                    items:
                      $ref: '#/components/schemas/AdminShippingOptionRule'
                  deleted:
                    type: object
                    description: The details of the deleted shipping option rules.
                    required:
                      - ids
                      - object
                      - deleted
                    properties:
                      ids:
                        type: array
                        description: The IDs of the deleted shipping option rules.
                        items:
                          type: string
                          title: ids
                          description: A shipping option rule's ID.
                      object:
                        type: string
                        title: object
                        description: The name of the deleted object.
                        default: shipping_option_rule
                      deleted:
                        type: boolean
                        title: deleted
                        description: The deleted's details.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchShippingOptionRulesWorkflow
      x-events: []
  /admin/shipping-profiles:
    get:
      operationId: GetShippingProfiles
      summary: List Shipping Profiles
      description: Retrieve a list of shipping profiles. The shipping profiles can be filtered by fields such as `id`. The shipping profiles can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a shipping profile's ID.
              - type: array
                description: Filter by shipping profile IDs.
                items:
                  type: string
                  title: id
                  description: A shipping profile ID.
        - name: q
          in: query
          description: Search term to filter the shipping profile's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the shipping profile's searchable properties.
        - name: type
          in: query
          description: Filter by a shipping profile's type.
          required: false
          schema:
            type: string
            title: type
            description: Filter by a shipping profile's type.
        - name: name
          in: query
          description: Filter by a shipping profile's name.
          required: false
          schema:
            type: string
            title: name
            description: Filter by a shipping profile's name.
        - name: created_at
          in: query
          description: Filter by a shipping profile's creation date.
          required: false
          schema:
            type: object
            description: Filter by a shipping profile's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a shipping profile's update date.
          required: false
          schema:
            type: object
            description: Filter by a shipping profile's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a shipping profile's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a shipping profile's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingProfile.list()
            .then(({ shipping_profiles, count, limit, offset }) => {
              console.log(shipping_profiles)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/shipping-profiles' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Shipping Profiles
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of shipping profiles.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of shipping profiles.
                    required:
                      - shipping_profiles
                    properties:
                      shipping_profiles:
                        type: array
                        description: The list of shipping profiles.
                        items:
                          $ref: '#/components/schemas/AdminShippingProfile'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostShippingProfiles
      summary: Create Shipping Profile
      description: Create a shipping profile.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateShippingProfile'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingProfile.create({
              name: "Default Shipping Profile",
            })
            .then(({ shipping_profile }) => {
              console.log(shipping_profile)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/shipping-profiles' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Percy",
              "type": "{value}",
              "metadata": {}
            }'
      tags:
        - Shipping Profiles
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminShippingProfileResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createShippingProfilesWorkflow
      x-events: []
  /admin/shipping-profiles/{id}:
    get:
      operationId: GetShippingProfilesId
      summary: Get a Shipping Profile
      description: Retrieve a shipping profile by its ID. You can expand the shipping profile's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The shipping profile's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingProfile.retrieve("sp_123")
            .then(({ shipping_profile }) => {
              console.log(shipping_profile)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/shipping-profiles/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Shipping Profiles
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminShippingProfileResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostShippingProfilesId
      summary: Update a Shipping Profile
      description: Update a shipping profile's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The shipping profile's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateShippingProfile'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingProfile.update("sp_123", {
              name: "Updated Shipping Profile",
            })
            .then(({ shipping_profile }) => {
              console.log(shipping_profile)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/shipping-profiles/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "metadata": {}
            }'
      tags:
        - Shipping Profiles
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminShippingProfileResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateShippingProfilesWorkflow
      x-events: []
    delete:
      operationId: DeleteShippingProfilesId
      summary: Delete a Shipping Profile
      description: Delete a shipping profile.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The shipping profile's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.shippingProfile.delete("sp_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/shipping-profiles/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Shipping Profiles
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminShippingProfileDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteShippingProfileWorkflow
      x-events: []
  /admin/stock-locations:
    get:
      operationId: GetStockLocations
      summary: List Stock Locations
      description: Retrieve a list of stock locations. The stock locations can be filtered by fields such as `id`. The stock locations can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the stock location's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the stock location's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a stock location ID.
              - type: array
                description: Filter by stock location IDs.
                items:
                  type: string
                  title: id
                  description: A stock location ID.
        - name: name
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: name
                description: Filter by a stock location name.
              - type: array
                description: Filter by stock location names.
                items:
                  type: string
                  title: name
                  description: A stock location name.
        - name: address_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: address_id
                description: Filter by an address ID to retrieve its associated locations.
              - type: array
                description: Filter by address IDs to retrieve their associated locations.
                items:
                  type: string
                  title: address_id
                  description: An address ID.
        - name: sales_channel_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: sales_channel_id
                description: Filter by a sales channel ID to retrieve its associated locations.
              - type: array
                description: Filter by sales channel IDs to retrieve their associated locations.
                items:
                  type: string
                  title: sales_channel_id
                  description: A sales channel ID
        - name: created_at
          in: query
          description: Filter by a stock location's creation date.
          required: false
          schema:
            type: object
            description: Filter by a stock location's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a stock location's update date.
          required: false
          schema:
            type: object
            description: Filter by a stock location's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a stock location's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a stock location's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.stockLocation.list()
            .then(({ stock_locations, count, limit, offset }) => {
              console.log(stock_locations)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/stock-locations' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Stock Locations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStockLocationListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostStockLocations
      summary: Create Stock Location
      description: Create a stock location.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateStockLocation'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.stockLocation.create({
              name: "Main Warehouse",
              address_id: "addr_123",
            })
            .then(({ stock_location }) => {
              console.log(stock_location)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/stock-locations' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Maryam",
              "address_id": "{value}",
              "metadata": {}
            }'
      tags:
        - Stock Locations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStockLocationResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createStockLocationsWorkflow
      x-events: []
  /admin/stock-locations/{id}:
    get:
      operationId: GetStockLocationsId
      summary: Get a Stock Location
      description: Retrieve a stock location by its ID. You can expand the stock location's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The stock location's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.stockLocation.retrieve("sloc_123")
            .then(({ stock_location }) => {
              console.log(stock_location)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/stock-locations/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Stock Locations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStockLocationResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostStockLocationsId
      summary: Update a Stock Location
      description: Update a stock location's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The stock location's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateStockLocation'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.stockLocation.update("sloc_123", {
              name: "European Warehouse",
            })
            .then(({ stock_location }) => {
              console.log(stock_location)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/stock-locations/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "address_id": "{value}",
              "metadata": {}
            }'
      tags:
        - Stock Locations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStockLocationResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateStockLocationsWorkflow
      x-events: []
    delete:
      operationId: DeleteStockLocationsId
      summary: Delete a Stock Location
      description: Delete a stock location.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The stock location's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.stockLocation.delete("sloc_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/stock-locations/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Stock Locations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStockLocationDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteStockLocationsWorkflow
      x-events: []
  /admin/stock-locations/{id}/fulfillment-providers:
    post:
      operationId: PostStockLocationsIdFulfillmentProviders
      summary: Manage Fulfillment Providers of a Stock Location
      x-sidebar-summary: Manage Fulfillment Providers
      description: Manage the fulfillment providers to add or remove them from a stock location.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The stock location's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchLink'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.stockLocation.updateFulfillmentProviders("sloc_123", {
              add: ["fp_manual_manual"],
              remove: ["fp_shipstation_shipstation"],
            })
            .then(({ stock_location }) => {
              console.log(stock_location)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/stock-locations/{id}/fulfillment-providers' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Stock Locations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStockLocationResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchLinksWorkflow
      x-events: []
  /admin/stock-locations/{id}/fulfillment-sets:
    post:
      operationId: PostStockLocationsIdFulfillmentSets
      summary: Add Fulfillment Set to Stock Location
      x-sidebar-summary: Add Fulfillment Set
      description: Create and add a fulfillment set to a stock location.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The stock location's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateStockLocationFulfillmentSet'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.stockLocation.createFulfillmentSet("sloc_123", {
              name: "Shipping",
              type: "shipping",
            })
            .then(({ stock_location }) => {
              console.log(stock_location)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/stock-locations/{id}/fulfillment-sets' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Helene",
              "type": "{value}"
            }'
      tags:
        - Stock Locations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStockLocationResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createLocationFulfillmentSetWorkflow
      x-events: []
  /admin/stock-locations/{id}/sales-channels:
    post:
      operationId: PostStockLocationsIdSalesChannels
      summary: Manage Sales Channels of a Stock Location
      x-sidebar-summary: Manage Sales Channels
      description: Manage the sales channels in a stock location by adding or removing them.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The stock location's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchLink'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.stockLocation.updateSalesChannels("sloc_123", {
              add: ["sc_123"],
              remove: ["sc_456"],
            })
            .then(({ stock_location }) => {
              console.log(stock_location)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/stock-locations/{id}/sales-channels' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Stock Locations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStockLocationResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: linkSalesChannelsToStockLocationWorkflow
      x-events: []
  /admin/store-credit-accounts:
    get:
      operationId: GetStoreCreditAccounts
      summary: List Store Credit Accounts
      description: Retrieve a list of store credit accounts. The store credit accounts can be filtered by fields such as `id`. The store credit accounts can also be sorted or paginated.
      x-authenticated: true
      x-ignoreCleanup: true
      parameters:
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
            The fields and relations to retrieve separated by commas.

            Learn more in the [API reference](https://docs.medusajs.com/api/store#select-fields-and-relations).
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          description: Filter by the store credit account's ID.
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a store credit account ID.
              - type: array
                description: Filter by store credit account IDs.
                items:
                  type: string
                  title: id
                  description: A store credit account ID.
        - name: customer_id
          in: query
          description: Filter by customer ID(s) to retrieve their store credit accounts.
          required: false
          schema:
            oneOf:
              - type: string
                title: customer_id
                description: Filter by a customer ID to retrieve their store credit accounts.
              - type: array
                description: Filter by customer ID(s) to retrieve their store credit accounts.
                items:
                  type: string
                  title: customer_id
                  description: A customer ID.
        - name: currency_code
          in: query
          description: Filter by currency code(s) to retrieve store credit accounts in specific currencies.
          required: false
          schema:
            oneOf:
              - type: string
                title: currency_code
                description: Filter by a currency code to retrieve store credit accounts in that currency.
                example: usd
              - type: array
                description: Filter by currency codes to retrieve store credit accounts in specific currencies.
                items:
                  type: string
                  title: currency_code
                  description: Filter by a currency code to retrieve store credit accounts in that currency.
                  example: usd
        - name: created_at
          in: query
          description: Filter by a store credit account's creation date.
          required: false
          schema:
            type: object
            description: Filter by a store credit account's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a store credit account's update date.
          required: false
          schema:
            type: object
            description: Filter by a store credit account's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: $and
          in: query
          description: An array of filters to apply on the entity, where each item in the array is joined with an "and" condition.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: An array of filters to apply on the entity, where each item in the array is joined with an "or" condition.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: code
                description: Filter by a store credit account code.
              - type: array
                description: Filter by store credit account codes.
                items:
                  type: string
                  title: code
                  description: A store credit account code.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/store-credit-accounts' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Store Credit Accounts
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStoreCreditAccountsResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-badges:
        - text: Cloud
          description: |
            This API route is only available in [Medusa Cloud](https://docs.medusajs.com/cloud/loyalty-plugin).
    post:
      operationId: PostStoreCreditAccounts
      summary: Create Store Credit Account
      description: Create a store credit account.
      x-authenticated: true
      x-ignoreCleanup: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateStoreCreditAccount'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/store-credit-accounts' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "currency_code": "nzd",
              "customer_id": "{value}"
            }'
      tags:
        - Store Credit Accounts
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStoreCreditAccountResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-badges:
        - text: Cloud
          description: |
            This API route is only available in [Medusa Cloud](https://docs.medusajs.com/cloud/loyalty-plugin).
  /admin/store-credit-accounts/{id}:
    get:
      operationId: GetStoreCreditAccountsId
      summary: Get a Store Credit Account
      description: Retrieve a store credit account by its ID. You can expand the store credit account's relations or select the fields that should be returned.
      x-authenticated: true
      x-ignoreCleanup: true
      parameters:
        - name: id
          in: path
          description: The store credit account's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
            The fields and relations to retrieve separated by commas.

            Learn more in the [API reference](https://docs.medusajs.com/api/store#select-fields-and-relations).
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: id
          in: query
          description: Filter by the store credit account's ID.
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a store credit account ID.
              - type: array
                description: Filter by store credit account IDs.
                items:
                  type: string
                  title: id
                  description: A store credit account ID.
        - name: customer_id
          in: query
          description: Filter by customer ID(s) to retrieve their store credit accounts.
          required: false
          schema:
            oneOf:
              - type: string
                title: customer_id
                description: Filter by a customer ID to retrieve their store credit accounts.
              - type: array
                description: Filter by customer ID(s) to retrieve their store credit accounts.
                items:
                  type: string
                  title: customer_id
                  description: A customer ID.
        - name: currency_code
          in: query
          description: Filter by currency code(s) to retrieve store credit accounts in specific currencies.
          required: false
          schema:
            oneOf:
              - type: string
                title: currency_code
                description: Filter by a currency code to retrieve store credit accounts in that currency.
                example: usd
              - type: array
                description: Filter by currency codes to retrieve store credit accounts in specific currencies.
                items:
                  type: string
                  title: currency_code
                  description: Filter by a currency code to retrieve store credit accounts in that currency.
                  example: usd
        - name: created_at
          in: query
          description: Filter by a store credit account's creation date.
          required: false
          schema:
            type: object
            description: Filter by a store credit account's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a store credit account's update date.
          required: false
          schema:
            type: object
            description: Filter by a store credit account's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: $and
          in: query
          description: An array of filters to apply on the entity, where each item in the array is joined with an "and" condition.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: An array of filters to apply on the entity, where each item in the array is joined with an "or" condition.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: code
                description: Filter by a store credit account's code.
              - type: array
                description: Filter by store credit account codes.
                items:
                  type: string
                  title: code
                  description: A store credit account code.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/store-credit-accounts/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Store Credit Accounts
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStoreCreditAccountResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-badges:
        - text: Cloud
          description: |
            This API route is only available in [Medusa Cloud](https://docs.medusajs.com/cloud/loyalty-plugin).
  /admin/store-credit-accounts/{id}/credit:
    post:
      operationId: PostStoreCreditAccountsIdCredit
      summary: Add Credit
      description: Add credit to a store credit account.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The store credit account's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreditStoreCreditAccountParams'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/store-credit-accounts/{id}/credit' \
            -H 'Authorization: Bearer {access_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "amount": 0
            }'
      tags:
        - Store Credit Accounts
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStoreCreditAccountResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-badges:
        - text: Cloud
          description: |
            This API route is only available in [Medusa Cloud](https://docs.medusajs.com/cloud/loyalty-plugin).
  /admin/store-credit-accounts/{id}/transactions:
    get:
      operationId: GetStoreCreditAccountsIdTransactions
      summary: List Transactions
      description: Retrieve a list of transactions in a store credit account. The transactions can be filtered by fields like FILTER FIELDS. The transactions can also be paginated.
      x-authenticated: true
      x-ignoreCleanup: true
      parameters:
        - name: id
          in: path
          description: The store credit account's ID.
          required: true
          schema:
            type: string
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a transaction ID.
              - type: array
                description: Filter by transaction IDs.
                items:
                  type: string
                  title: id
                  description: A transaction ID.
        - name: transaction_group_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: transaction_group_id
                description: Filter by a transaction group ID.
              - type: array
                description: Filter by transaction group IDs.
                items:
                  type: string
                  title: transaction_group_id
                  description: A transaction group ID.
        - name: created_at
          in: query
          description: Filter by a transaction's creation date.
          required: false
          schema:
            type: object
            description: Filter by a transaction's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a transaction's update date.
          required: false
          schema:
            type: object
            description: Filter by a transaction's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: q
          in: query
          description: Search query to filter the transactions by their searchable fields.
          required: false
          schema:
            type: string
            title: q
            description: Search query to filter the transactions by their searchable fields.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/store-credit-accounts/{id}/transactions' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Store Credit Accounts
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTransactionsResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-badges:
        - text: Cloud
          description: |
            This API route is only available in [Medusa Cloud](https://docs.medusajs.com/cloud/loyalty-plugin).
  /admin/stores:
    get:
      operationId: GetStores
      summary: List Stores
      description: Retrieve a list of stores. The stores can be filtered by fields such as `id`. The stores can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter the store's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter the store's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a store ID.
              - type: array
                description: Filter by store IDs.
                items:
                  type: string
                  title: id
                  description: A store ID.
        - name: name
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: name
                description: Filter by a store name.
              - type: array
                description: Filter by store names.
                items:
                  type: string
                  title: name
                  description: A store name.
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.store.list()
            .then(({ stores, count, limit, offset }) => {
              console.log(stores)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/stores' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Stores
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStoreListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/stores/{id}:
    get:
      operationId: GetStoresId
      summary: Get a Store
      description: Retrieve a store by its ID. You can expand the store's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The store's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.store.retrieve("store_123")
            .then(({ store }) => {
              console.log(store)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/stores/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Stores
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStoreResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostStoresId
      summary: Update a Store
      description: Update a store's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The store's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateStore'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.store.update("store_123", {
              name: "My Store",
            })
            .then(({ store }) => {
              console.log(store)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/stores/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Melvina",
              "default_sales_channel_id": "{value}",
              "default_region_id": "{value}",
              "default_location_id": "{value}",
              "metadata": {}
            }'
      tags:
        - Stores
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminStoreResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateStoresWorkflow
      x-events: []
  /admin/tax-providers:
    get:
      operationId: GetTaxProviders
      summary: List Tax Providers
      description: Retrieve a list of tax providers installed in the Medusa application through Tax Module Providers. The tax providers can be filtered by fields such as `id`. The tax providers can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a tax provider's ID.
              - type: array
                description: Filter by tax provider IDs.
                items:
                  type: string
                  title: id
                  description: A tax provider's ID.
        - name: is_enabled
          in: query
          description: Filter by whether the tax provider is enabled.
          required: false
          schema:
            type: boolean
            title: is_enabled
            description: Filter by whether the tax provider is enabled.
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.taxProvider.list()
            .then(({ tax_providers, count, limit, offset }) => {
              console.log(tax_providers)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/tax-providers' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Tax Providers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The pagination details.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items retrieved.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items available.
                      estimate_count:
                        type: number
                        title: estimate_count
                        description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
                        x-featureFlag: index_engine
                  - type: object
                    description: The list of tax providers.
                    required:
                      - tax_providers
                    properties:
                      tax_providers:
                        type: array
                        description: The list of tax providers.
                        items:
                          $ref: '#/components/schemas/AdminTaxProvider'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.8.0
  /admin/tax-rates:
    get:
      operationId: GetTaxRates
      summary: List Tax Rates
      description: Retrieve a list of tax rates. The tax rates can be filtered by fields such as `id`. The tax rates can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search terms to filter the tax rate's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search terms to filter the tax rate's searchable properties.
        - name: tax_region_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: tax_region_id
                description: Filter by a tax region ID to retrieve its associated rates.
              - type: array
                description: Filter by tax region IDs to retrieve their associated rates.
                items:
                  type: string
                  title: tax_region_id
                  description: A tax region ID.
              - type: object
                description: Apply filters on the tax region ID to retrieve the rates associated with the matching tax regions.
                properties:
                  $eq:
                    type: string
                    description: Filter by an exact match.
                  $ne:
                    type: string
                    description: Filter by values not matching this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array's items.
                    items:
                      type: string
                  $nin:
                    type: array
                    description: Filter by values not in this array's items.
                    items:
                      type: string
                  $like:
                    type: string
                    description: Apply a `like` filter. Useful for strings only.
                  $ilike:
                    type: string
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $re:
                    type: string
                    description: Apply a regex filter. Useful for strings only.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                  $gt:
                    type: string
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
        - name: is_default
          in: query
          required: false
          description: Filter by whether the tax rate is a default in its tax region.
          schema:
            type: string
            enum:
              - 'true'
              - 'false'
        - name: created_at
          in: query
          description: Filter by a tax rate's creation date.
          required: false
          schema:
            type: object
            description: Filter by a tax rate's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a tax rate's update date.
          required: false
          schema:
            type: object
            description: Filter by a tax rate's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a tax rate's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a tax rate's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: service_zone_id
          in: query
          description: Filter by a service zone's ID to retrieve its associated tax rates.
          required: false
          schema:
            type: string
            title: service_zone_id
            description: Filter by a service zone's ID to retrieve its associated tax rates.
        - name: shipping_profile_id
          in: query
          description: Filter by a shipping profile's ID to retrieve its associated tax rates.
          required: false
          schema:
            type: string
            title: shipping_profile_id
            description: Filter by a shipping profile's ID to retrieve its associated tax rates.
        - name: provider_id
          in: query
          description: Filter by a fulfillment provider's ID to retrieve its associated tax rates.
          required: false
          schema:
            type: string
            title: provider_id
            description: Filter by a fulfillment provider's ID to retrieve its associated tax rates.
        - name: shipping_option_type_id
          in: query
          description: Filter by a shipping option type's ID to retrieve its associated tax rates.
          required: false
          schema:
            type: string
            title: shipping_option_type_id
            description: Filter by a shipping option type's ID to retrieve its associated tax rates.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.taxRate.list()
            .then(({ tax_rates, count, limit, offset }) => {
              console.log(tax_rates)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/tax-rates' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of tax rates.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of tax rates.
                    required:
                      - tax_rates
                    properties:
                      tax_rates:
                        type: array
                        description: The tax rate's tax rates.
                        items:
                          $ref: '#/components/schemas/AdminTaxRate'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostTaxRates
      summary: Create Tax Rate
      description: Create a tax rate.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateTaxRate'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.taxRate.create({
              name: "VAT",
              tax_region_id: "txreg_123",
              code: "VAT",
              rate: 2, // 2%
            })
            .then(({ tax_rate }) => {
              console.log(tax_rate)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/tax-rates' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "name": "Kaylin",
              "tax_region_id": "{value}",
              "metadata": {}
            }'
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTaxRateResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createTaxRatesWorkflow
      x-events: []
  /admin/tax-rates/{id}:
    get:
      operationId: GetTaxRatesId
      summary: Get a Tax Rate
      description: Retrieve a tax rate by its ID. You can expand the tax rate's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The tax rate's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.taxRate.retrieve("txrat_123")
            .then(({ tax_rate }) => {
              console.log(tax_rate)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/tax-rates/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTaxRateResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostTaxRatesId
      summary: Update a Tax Rate
      description: Update a tax rate's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The tax rate's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateTaxRate'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.taxRate.update("txrat_123", {
              name: "VAT",
              code: "VAT",
            })
            .then(({ tax_rate }) => {
              console.log(tax_rate)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/tax-rates/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "metadata": {}
            }'
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTaxRateResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateTaxRatesWorkflow
      x-events: []
    delete:
      operationId: DeleteTaxRatesId
      summary: Delete a Tax Rate
      description: Delete a tax rate.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The tax rate's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.taxRate.delete("txrat_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/tax-rates/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTaxRateDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteTaxRatesWorkflow
      x-events: []
  /admin/tax-rates/{id}/rules:
    post:
      operationId: PostTaxRatesIdRules
      summary: Create Tax Rule for a Rate
      x-sidebar-summary: Create Tax Rule
      description: Create a tax rule for a rate.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The tax rate's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateTaxRateRule'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/tax-rates/{id}/rules' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "reference": "{value}",
              "reference_id": "{value}"
            }'
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTaxRateResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createTaxRateRulesWorkflow
      x-events: []
  /admin/tax-rates/{id}/rules/{rule_id}:
    delete:
      operationId: DeleteTaxRatesIdRulesRule_id
      summary: Remove Rule of Tax Rate
      x-sidebar-summary: Remove Rule
      description: Remove a tax rate's rule.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The tax rate's ID.
          required: true
          schema:
            type: string
        - name: rule_id
          in: path
          description: The tax rate rule's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/tax-rates/{id}/rules/{rule_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Tax Rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The deletion's details.
                    required:
                      - id
                      - object
                      - deleted
                    properties:
                      id:
                        type: string
                        title: id
                        description: The tax rate's ID.
                      object:
                        type: string
                        title: object
                        description: The name of the deleted object.
                      deleted:
                        type: boolean
                        title: deleted
                        description: Whether the Tax Rate was deleted.
                  - type: object
                    description: The deletion's details.
                    properties:
                      parent:
                        $ref: '#/components/schemas/AdminTaxRate'
                description: The deletion's details.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteTaxRateRulesWorkflow
      x-events: []
  /admin/tax-regions:
    get:
      operationId: GetTaxRegions
      summary: List Tax Regions
      description: Retrieve a list of tax regions. The tax regions can be filtered by fields such as `id`. The tax regions can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: Search term to filter a tax region's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: Search term to filter a tax region's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a tax region ID.
              - type: array
                description: Filter by tax region IDs.
                items:
                  type: string
                  title: id
                  description: A tax region ID.
        - name: country_code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: country_code
                description: Filter by a country code.
              - type: array
                description: Filter by country codes.
                items:
                  type: string
                  title: country_code
                  description: A country code.
              - type: object
                description: Apply filters on the currency code.
                properties:
                  $eq:
                    type: string
                    description: Filter by an exact match.
                  $ne:
                    type: string
                    description: Filter by values not matching this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array's items.
                    items:
                      type: string
                  $nin:
                    type: array
                    description: Filter by values not in this array's items.
                    items:
                      type: string
                  $like:
                    type: string
                    description: Apply a `like` filter. Useful for strings only.
                  $ilike:
                    type: string
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $re:
                    type: string
                    description: Apply a regex filter. Useful for strings only.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                  $gt:
                    type: string
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
        - name: province_code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: province_code
                description: Filter by a ISO 3166-2 province code. Must be lower-case.
                example: us-ca
                externalDocs:
                  url: https://en.wikipedia.org/wiki/ISO_3166-2
                  description: Learn more about ISO 3166-2
              - type: array
                description: Filter by ISO 3166-2 province codes.
                items:
                  type: string
                  title: province_code
                  description: A ISO 3166-2 province code.
                  example: us-ca
                  externalDocs:
                    url: https://en.wikipedia.org/wiki/ISO_3166-2
                    description: Learn more about ISO 3166-2
              - type: object
                description: Apply filters on the province code.
                properties:
                  $eq:
                    type: string
                    description: Filter by an exact match.
                  $ne:
                    type: string
                    description: Filter by values not matching this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array's items.
                    items:
                      type: string
                  $nin:
                    type: array
                    description: Filter by values not in this array's items.
                    items:
                      type: string
                  $like:
                    type: string
                    description: Apply a `like` filter. Useful for strings only.
                  $ilike:
                    type: string
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $re:
                    type: string
                    description: Apply a regex filter. Useful for strings only.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                  $gt:
                    type: string
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
        - name: parent_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: parent_id
                description: Filter by the ID of a parent tax region to retrieve its child tax regions.
              - type: array
                description: Filter by the IDs of parent tax regions to retrieve their child tax regions.
                items:
                  type: string
                  title: parent_id
                  description: A tax region's ID.
              - type: object
                description: Apply filters on the parent tax region's ID to retrieve its child tax regions.
                properties:
                  $eq:
                    type: string
                    description: Filter by an exact match.
                  $ne:
                    type: string
                    description: Filter by values not matching this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array's items.
                    items:
                      type: string
                  $nin:
                    type: array
                    description: Filter by values not in this array's items.
                    items:
                      type: string
                  $like:
                    type: string
                    description: Apply a `like` filter. Useful for strings only.
                  $ilike:
                    type: string
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $re:
                    type: string
                    description: Apply a regex filter. Useful for strings only.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                  $gt:
                    type: string
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
        - name: created_by
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: created_by
                description: Filter by the ID of the user to retrieve the tax regions they created.
              - type: array
                description: Filter by user IDs to retrieve their tax regions they created.
                items:
                  type: string
                  title: created_by
                  description: A user ID.
        - name: created_at
          in: query
          description: Filter by a tax region's creation date.
          required: false
          schema:
            oneOf:
              - type: string
                title: created_at
                description: Filter by a tax region's creation date.
              - type: object
                description: Apply filters on the tax region's creation date.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                        properties:
                          $and:
                            type: array
                            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $and
                          $or:
                            type: array
                            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $or
                          $eq:
                            oneOf:
                              - type: string
                                title: $eq
                                description: Filter by an exact match.
                              - type: array
                                description: Filter by an exact match.
                                items:
                                  type: string
                                  title: $eq
                                  description: Filter by an exact match.
                          $ne:
                            type: string
                            title: $ne
                            description: Filter by values not equal to this parameter.
                          $in:
                            type: array
                            description: Filter by values in this array.
                            items:
                              type: string
                              title: $in
                              description: Filter by values in this array.
                          $nin:
                            type: array
                            description: Filter by values not in this array.
                            items:
                              type: string
                              title: $nin
                              description: Filter by values not in this array.
                          $not:
                            oneOf:
                              - type: string
                                title: $not
                                description: Filter by values not matching the conditions in this parameter.
                              - type: object
                                description: Filter by values not matching the conditions in this parameter.
                              - type: array
                                description: Filter by values not matching the conditions in this parameter.
                                items:
                                  type: string
                                  title: $not
                                  description: Filter by values not matching the conditions in this parameter.
                          $gt:
                            type: string
                            title: $gt
                            description: Filter by values greater than this parameter. Useful for numbers and dates only.
                          $gte:
                            type: string
                            title: $gte
                            description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                          $lt:
                            type: string
                            title: $lt
                            description: Filter by values less than this parameter. Useful for numbers and dates only.
                          $lte:
                            type: string
                            title: $lte
                            description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                          $like:
                            type: string
                            title: $like
                            description: Apply a `like` filter. Useful for strings only.
                          $re:
                            type: string
                            title: $re
                            description: Apply a regex filter. Useful for strings only.
                          $ilike:
                            type: string
                            title: $ilike
                            description: Apply a case-insensitive `like` filter. Useful for strings only.
                          $fulltext:
                            type: string
                            title: $fulltext
                            description: Filter to apply on full-text properties.
                          $overlap:
                            type: array
                            description: Filter arrays that have overlapping values with this parameter.
                            items:
                              type: string
                              title: $overlap
                              description: Filter arrays that have overlapping values with this parameter.
                          $contains:
                            type: array
                            description: Filter arrays that contain some of the values of this parameter.
                            items:
                              type: string
                              title: $contains
                              description: Filter arrays that contain some of the values of this parameter.
                          $contained:
                            type: array
                            description: Filter arrays that contain all values of this parameter.
                            items:
                              type: string
                              title: $contained
                              description: Filter arrays that contain all values of this parameter.
                          $exists:
                            type: boolean
                            title: $exists
                            description: Filter by whether a value for this parameter exists (not `null`).
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: updated_at
          in: query
          description: Filter by a tax region's update date.
          required: false
          schema:
            oneOf:
              - type: string
                title: updated_at
                description: Filter by a tax region's update date.
              - type: object
                description: Apply filters on the tax region's update date.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                        properties:
                          $and:
                            type: array
                            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $and
                          $or:
                            type: array
                            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $or
                          $eq:
                            oneOf:
                              - type: string
                                title: $eq
                                description: Filter by an exact match.
                              - type: array
                                description: Filter by an exact match.
                                items:
                                  type: string
                                  title: $eq
                                  description: Filter by an exact match.
                          $ne:
                            type: string
                            title: $ne
                            description: Filter by values not equal to this parameter.
                          $in:
                            type: array
                            description: Filter by values in this array.
                            items:
                              type: string
                              title: $in
                              description: Filter by values in this array.
                          $nin:
                            type: array
                            description: Filter by values not in this array.
                            items:
                              type: string
                              title: $nin
                              description: Filter by values not in this array.
                          $not:
                            oneOf:
                              - type: string
                                title: $not
                                description: Filter by values not matching the conditions in this parameter.
                              - type: object
                                description: Filter by values not matching the conditions in this parameter.
                              - type: array
                                description: Filter by values not matching the conditions in this parameter.
                                items:
                                  type: string
                                  title: $not
                                  description: Filter by values not matching the conditions in this parameter.
                          $gt:
                            type: string
                            title: $gt
                            description: Filter by values greater than this parameter. Useful for numbers and dates only.
                          $gte:
                            type: string
                            title: $gte
                            description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                          $lt:
                            type: string
                            title: $lt
                            description: Filter by values less than this parameter. Useful for numbers and dates only.
                          $lte:
                            type: string
                            title: $lte
                            description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                          $like:
                            type: string
                            title: $like
                            description: Apply a `like` filter. Useful for strings only.
                          $re:
                            type: string
                            title: $re
                            description: Apply a regex filter. Useful for strings only.
                          $ilike:
                            type: string
                            title: $ilike
                            description: Apply a case-insensitive `like` filter. Useful for strings only.
                          $fulltext:
                            type: string
                            title: $fulltext
                            description: Filter to apply on full-text properties.
                          $overlap:
                            type: array
                            description: Filter arrays that have overlapping values with this parameter.
                            items:
                              type: string
                              title: $overlap
                              description: Filter arrays that have overlapping values with this parameter.
                          $contains:
                            type: array
                            description: Filter arrays that contain some of the values of this parameter.
                            items:
                              type: string
                              title: $contains
                              description: Filter arrays that contain some of the values of this parameter.
                          $contained:
                            type: array
                            description: Filter arrays that contain all values of this parameter.
                            items:
                              type: string
                              title: $contained
                              description: Filter arrays that contain all values of this parameter.
                          $exists:
                            type: boolean
                            title: $exists
                            description: Filter by whether a value for this parameter exists (not `null`).
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: deleted_at
          in: query
          description: Filter by a tax region's deletion date.
          required: false
          schema:
            oneOf:
              - type: string
                title: deleted_at
                description: Filter by a tax region's deletion date.
              - type: object
                description: Apply filters on the tax region's deletion date.
                properties:
                  $and:
                    type: array
                    description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $and
                  $or:
                    type: array
                    description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                    items:
                      type: object
                    title: $or
                  $eq:
                    oneOf:
                      - type: string
                        title: $eq
                        description: Filter by an exact match.
                      - type: array
                        description: Filter by an exact match.
                        items:
                          type: string
                          title: $eq
                          description: Filter by an exact match.
                  $ne:
                    type: string
                    title: $ne
                    description: Filter by values not equal to this parameter.
                  $in:
                    type: array
                    description: Filter by values in this array.
                    items:
                      type: string
                      title: $in
                      description: Filter by values in this array.
                  $nin:
                    type: array
                    description: Filter by values not in this array.
                    items:
                      type: string
                      title: $nin
                      description: Filter by values not in this array.
                  $not:
                    oneOf:
                      - type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                      - type: object
                        description: Filter by values not matching the conditions in this parameter.
                        properties:
                          $and:
                            type: array
                            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $and
                          $or:
                            type: array
                            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                            items:
                              type: object
                            title: $or
                          $eq:
                            oneOf:
                              - type: string
                                title: $eq
                                description: Filter by an exact match.
                              - type: array
                                description: Filter by an exact match.
                                items:
                                  type: string
                                  title: $eq
                                  description: Filter by an exact match.
                          $ne:
                            type: string
                            title: $ne
                            description: Filter by values not equal to this parameter.
                          $in:
                            type: array
                            description: Filter by values in this array.
                            items:
                              type: string
                              title: $in
                              description: Filter by values in this array.
                          $nin:
                            type: array
                            description: Filter by values not in this array.
                            items:
                              type: string
                              title: $nin
                              description: Filter by values not in this array.
                          $not:
                            oneOf:
                              - type: string
                                title: $not
                                description: Filter by values not matching the conditions in this parameter.
                              - type: object
                                description: Filter by values not matching the conditions in this parameter.
                              - type: array
                                description: Filter by values not matching the conditions in this parameter.
                                items:
                                  type: string
                                  title: $not
                                  description: Filter by values not matching the conditions in this parameter.
                          $gt:
                            type: string
                            title: $gt
                            description: Filter by values greater than this parameter. Useful for numbers and dates only.
                          $gte:
                            type: string
                            title: $gte
                            description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                          $lt:
                            type: string
                            title: $lt
                            description: Filter by values less than this parameter. Useful for numbers and dates only.
                          $lte:
                            type: string
                            title: $lte
                            description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                          $like:
                            type: string
                            title: $like
                            description: Apply a `like` filter. Useful for strings only.
                          $re:
                            type: string
                            title: $re
                            description: Apply a regex filter. Useful for strings only.
                          $ilike:
                            type: string
                            title: $ilike
                            description: Apply a case-insensitive `like` filter. Useful for strings only.
                          $fulltext:
                            type: string
                            title: $fulltext
                            description: Filter to apply on full-text properties.
                          $overlap:
                            type: array
                            description: Filter arrays that have overlapping values with this parameter.
                            items:
                              type: string
                              title: $overlap
                              description: Filter arrays that have overlapping values with this parameter.
                          $contains:
                            type: array
                            description: Filter arrays that contain some of the values of this parameter.
                            items:
                              type: string
                              title: $contains
                              description: Filter arrays that contain some of the values of this parameter.
                          $contained:
                            type: array
                            description: Filter arrays that contain all values of this parameter.
                            items:
                              type: string
                              title: $contained
                              description: Filter arrays that contain all values of this parameter.
                          $exists:
                            type: boolean
                            title: $exists
                            description: Filter by whether a value for this parameter exists (not `null`).
                      - type: array
                        description: Filter by values not matching the conditions in this parameter.
                        items:
                          type: string
                          title: $not
                          description: Filter by values not matching the conditions in this parameter.
                  $gt:
                    type: string
                    title: $gt
                    description: Filter by values greater than this parameter. Useful for numbers and dates only.
                  $gte:
                    type: string
                    title: $gte
                    description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                  $lt:
                    type: string
                    title: $lt
                    description: Filter by values less than this parameter. Useful for numbers and dates only.
                  $lte:
                    type: string
                    title: $lte
                    description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                  $like:
                    type: string
                    title: $like
                    description: Apply a `like` filter. Useful for strings only.
                  $re:
                    type: string
                    title: $re
                    description: Apply a regex filter. Useful for strings only.
                  $ilike:
                    type: string
                    title: $ilike
                    description: Apply a case-insensitive `like` filter. Useful for strings only.
                  $fulltext:
                    type: string
                    title: $fulltext
                    description: Filter to apply on full-text properties.
                  $overlap:
                    type: array
                    description: Filter arrays that have overlapping values with this parameter.
                    items:
                      type: string
                      title: $overlap
                      description: Filter arrays that have overlapping values with this parameter.
                  $contains:
                    type: array
                    description: Filter arrays that contain some of the values of this parameter.
                    items:
                      type: string
                      title: $contains
                      description: Filter arrays that contain some of the values of this parameter.
                  $contained:
                    type: array
                    description: Filter arrays that contain all values of this parameter.
                    items:
                      type: string
                      title: $contained
                      description: Filter arrays that contain all values of this parameter.
                  $exists:
                    type: boolean
                    title: $exists
                    description: Filter by whether a value for this parameter exists (not `null`).
        - name: $and
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.taxRegion.list()
            .then(({ tax_regions, count, limit, offset }) => {
              console.log(tax_regions)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/tax-regions' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Tax Regions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of tax regions.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of tax regions.
                    required:
                      - tax_regions
                    properties:
                      tax_regions:
                        type: array
                        description: The list of tax regions.
                        items:
                          type: object
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostTaxRegions
      summary: Create Tax Region
      description: Create a tax region.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateTaxRegion'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.taxRegion.create({
              country_code: "us",
              province_code: "ca",
              default_tax_rate: {
                code: "VAT",
                name: "VAT",
                rate: 20, // 20%
                is_combinable: true,
              },
            })
            .then(({ tax_region }) => {
              console.log(tax_region)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/tax-regions' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "country_code": "{value}",
              "province_code": "us-ca",
              "parent_id": "{value}",
              "metadata": {}
            }'
      tags:
        - Tax Regions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTaxRegionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createTaxRegionsWorkflow
      x-events: []
  /admin/tax-regions/{id}:
    get:
      operationId: GetTaxRegionsId
      summary: Get a Tax Region
      description: Retrieve a tax region by its ID. You can expand the tax region's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The tax region's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.taxRegion.retrieve("txreg_123")
            .then(({ tax_region }) => {
              console.log(tax_region)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/tax-regions/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Tax Regions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTaxRegionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    post:
      operationId: PostTaxRegionsId
      summary: Update a Tax Region
      description: Update a tax region's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The tax region's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: |-
            Comma-separated fields that should be included in the returned data.
            if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields.
            without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateTaxRegion'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.taxRegion.update("txreg_123", {
              province_code: "ca",
            })
            .then(({ tax_region }) => {
              console.log(tax_region)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/tax-regions/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Tax Regions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTaxRegionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateTaxRegionsWorkflow
      x-events: []
    delete:
      operationId: DeleteTaxRegionsId
      summary: Delete a Tax Region
      description: Delete a tax region.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The tax region's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.taxRegion.delete("txreg_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/tax-regions/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Tax Regions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTaxRegionDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteTaxRegionsWorkflow
      x-events: []
  /admin/translations:
    get:
      operationId: GetTranslations
      summary: List Translations
      description: Retrieve a list of translations. The translations can be filtered by fields such as `reference_id` (For example, the ID of a product). The translations can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: q
          in: query
          description: Search query to filter translations by their fields.
          required: false
          schema:
            type: string
            title: q
            description: Search query to filter translations by their fields.
        - name: reference_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: reference_id
                description: Filter translations by a reference ID. For example, the ID of a product.
                example: prod_123
              - type: array
                description: Filter translations by multiple reference IDs. For example, the IDs of products.
                items:
                  type: string
                  title: reference_id
                  description: The reference ID's details. For example, the ID of a product.
                  example: prod_123
        - name: reference
          in: query
          description: Filter translations by the resource they belong to. For example, `product` or `product_variant`.
          required: false
          schema:
            type: string
            title: reference
            description: Filter translations by the resource they belong to. For example, `product` or `product_variant`.
        - name: locale_code
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: locale_code
                description: Filter translations by a locale code in BCP 47 format.
                example: fr-FR
              - type: array
                description: Filter translations by multiple locale codes in BCP 47 format.
                items:
                  type: string
                  title: locale_code
                  description: A locale code in BCP 47 format.
                  example: fr-FR
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: with_deleted
          in: query
          description: The translation's with deleted.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: The translation's with deleted.
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.translation.list()
            .then(({ translations, count, limit, offset }) => {
              console.log(translations)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/translations' \
            -H 'Authorization: Bearer {access_token}'
      tags:
        - Translations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The list of translations with pagination.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of translations returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of translations skipped before retrieving the returned translations.
                      count:
                        type: number
                        title: count
                        description: The total number of translations matching the query.
                      estimate_count:
                        type: number
                        title: estimate_count
                        description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
                        x-featureFlag: index_engine
                  - type: object
                    description: SUMMARY
                    required:
                      - translations
                    properties:
                      translations:
                        type: array
                        description: The list of translations.
                        items:
                          $ref: '#/components/schemas/AdminTranslation'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.12.3
      x-featureFlag: translation
  /admin/translations/batch:
    post:
      operationId: PostTranslationsBatch
      summary: Manage Translations
      description: Manage translations in bulk by creating, updating, or deleting multiple translations in a single request. You can manage translations for various resources such as products, product variants, categories, and more.
      x-authenticated: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: The translations to be created, updated, or deleted in bulk.
              properties:
                create:
                  type: array
                  description: The translations to create.
                  items:
                    type: object
                    description: The translation's details.
                    required:
                      - reference
                      - reference_id
                      - locale_code
                      - translations
                    properties:
                      reference:
                        type: string
                        title: reference
                        description: The resource that the translation belongs to.
                        example: product
                      reference_id:
                        type: string
                        title: reference_id
                        description: The ID of the resource that the translation belongs to. For example, the ID of a product.
                        example: prod_123
                      locale_code:
                        type: string
                        title: locale_code
                        description: The translation's locale code in BCP 47 format.
                        example: fr-FR
                      translations:
                        type: object
                        description: The translation key-value pairs. Each key is a field in the resource, and the value is the translated text.
                        example:
                          title: Chaussures
                          description: Des chaussures élégantes.
                update:
                  type: array
                  description: The translations to update.
                  items:
                    type: object
                    description: The data for updating a translation.
                    required:
                      - id
                    properties:
                      id:
                        type: string
                        title: id
                        description: The ID of the translation to update.
                      reference:
                        type: string
                        title: reference
                        description: The resource that the translation belongs to.
                        example: product
                      reference_id:
                        type: string
                        title: reference_id
                        description: The ID of the resource that the translation belongs to. For example, the ID of a product.
                        example: prod_123
                      locale_code:
                        type: string
                        title: locale_code
                        description: The translation's locale code in BCP 47 format.
                        example: fr-FR
                      translations:
                        type: object
                        description: The translation key-value pairs. Each key is a field in the resource, and the value is the translated text.
                        example:
                          title: Chaussures Modifiées
                          description: Des chaussures élégantes et modifiées.
                delete:
                  type: array
                  description: The translations to delete.
                  items:
                    type: string
                    title: delete
                    description: The ID of a translation to delete.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.translation.batch({
              create: [
                {
                  reference_id: "prod_123",
                  reference: "product",
                  locale_code: "en-US",
                  translations: { title: "Shirt" }
                }
              ],
              update: [
                {
                  id: "trans_123",
                  translations: { title: "Pants" }
                }
              ],
              delete: ["trans_321"]
            })
            .then(({ created, updated, deleted }) => {
              console.log(created, updated, deleted)
            })
            ```
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/translations/batch' \
            -H 'Authorization: Bearer {access_token}' \
            -H 'Content-Type: application/json' \
            -d '{
              "create": [
                {
                  "reference": "product",
                  "reference_id": "prod_123",
                  "locale_code": "fr-FR",
                  "translations": {
                    "title": "Chaussures",
                    "description": "Des chaussures élégantes."
                  }
                }
              ]
            }'
      tags:
        - Translations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTranslationsBatchResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchTranslationsWorkflow
      x-events:
        - name: translation.created
          payload: |-
            ```ts
            {
              id, // The ID of the translation
            }
            ```
          description: Emitted when translations are created.
          deprecated: false
          since: 2.12.3
        - name: translation.updated
          payload: |-
            ```ts
            {
              id, // The ID of the translation
            }
            ```
          description: Emitted when translations are updated.
          deprecated: false
          since: 2.12.3
        - name: translation.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the translation
            }
            ```
          description: Emitted when translations are deleted.
          deprecated: false
          since: 2.12.3
      x-since: 2.12.3
      x-featureFlag: translation
  /admin/translations/entities:
    get:
      operationId: GetTranslationsEntities
      summary: List Translatable Entities
      description: Retrieve a list of translatable entities. The entities can be filtered by fields such as `id`. The entities can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: type
          in: query
          description: Filter by a translatable entity type.
          required: true
          schema:
            type: string
            title: type
            description: Filter by a translatable entity type.
            example: product
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by an entity's ID.
              - type: array
                description: Filter by entity IDs.
                items:
                  type: string
                  title: id
                  description: An entity's ID.
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: with_deleted
          in: query
          description: The translation's with deleted.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: The translation's with deleted.
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.translation.entities({
              type: "product"
            })
            .then(({ data, count, offset, limit }) => {
              console.log(data)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/translations/entities' \
            -H 'Authorization: Bearer {access_token}'
      tags:
        - Translations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTranslationEntitiesResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.12.4
      x-featureFlag: translation
  /admin/translations/settings:
    get:
      operationId: GetTranslationsSettings
      summary: List Translation Settings
      x-sidebar-summary: List Settings
      description: Retrieve the list of translatable fields for all entities, such as products and collections. You can also filter the results by entity type or active entities.
      x-authenticated: true
      parameters:
        - name: entity_type
          in: query
          description: The entity to retrieve translation settings for.
          required: false
          schema:
            type: string
            title: entity_type
            description: The entity to retrieve translation settings for.
            example: product
        - name: is_active
          in: query
          description: Filter resources by whether translations is activated for them or not. If not provided, all resources are returned.
          required: false
          schema:
            type: boolean
            title: is_active
            description: Filter resources by whether translations is activated for them or not. If not provided, all resources are returned.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.translation.settings({
              entity_type: "product"
            })
            .then(({ translation_settings }) => {
              console.log(translation_settings)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/translations/settings' \
            -H 'Authorization: Bearer {access_token}'
      tags:
        - Translations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTranslationSettingsResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.12.3
      x-featureFlag: translation
  /admin/translations/settings/batch:
    post:
      operationId: PostTranslationsSettingsBatch
      summary: Manage Translation Settings
      description: Create, update, or delete multiple translation settings.
      x-authenticated: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminBatchTranslationSettings'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.translation.batchSettings({
              create: [
                {
                  entity_type: "product",
                  fields: ["title", "description"],
                  is_active: true
                }
              ],
              update: [
                {
                  id: "trset_123",
                  fields: ["title", "description", "subtitle"],
                  is_active: true
                }
              ],
              delete: ["trset_456"]
            })
            .then(({ created, updated, deleted }) => {
              console.log(created, updated, deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/translations/settings/batch' \
            -H 'Authorization: Bearer {access_token}'
      tags:
        - Translations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminBatchTranslationSettingsResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: batchTranslationSettingsWorkflow
      x-events: []
      x-since: 2.13.0
      x-featureFlag: translation
  /admin/translations/statistics:
    get:
      operationId: GetTranslationsStatistics
      summary: Retrieve Translation Statistics
      x-sidebar-summary: Get Statistics
      description: Get statistics on translations for specified locales and entity types. This includes overall translation progress for each entity type, and statistics for each locale within those entity types.
      x-authenticated: true
      parameters:
        - name: locales
          in: query
          description: The locale codes to retrieve translation statistics for. Locale codes are in [BCP 47](https://gist.github.com/typpo/b2b828a35e683b9bf8db91b5404f1bd1) format.
          required: true
          schema:
            type: array
            description: The locale codes to retrieve translation statistics for.
            items:
              type: string
              title: locales
              description: A locale code in [BCP 47](https://gist.github.com/typpo/b2b828a35e683b9bf8db91b5404f1bd1) format.
              example: fr-FR
        - name: entity_types
          in: query
          description: The table names of entities to retrieve translation statistics for.
          required: true
          schema:
            type: array
            description: The table names of entities to retrieve translation statistics for.
            items:
              type: string
              title: entity_types
              description: The table name of an entity.
              example: products
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.translation.statistics({
              entity_type: "product"
            })
            .then(({ statistics }) => {
              console.log(statistics)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/translations/statistics' \
            -H 'Authorization: Bearer {access_token}'
      tags:
        - Translations
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminTranslationStatisticsResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.12.3
      x-featureFlag: translation
  /admin/uploads:
    post:
      operationId: PostUploads
      summary: Upload Files
      description: Upload files to the configured File Module Provider.
      x-authenticated: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  description: The files to upload
                  required:
                    - files
                  properties:
                    files:
                      type: array
                      description: The upload's files.
                      items:
                        oneOf:
                          - type: object
                            description: The file's files.
                            required:
                              - name
                              - content
                            properties:
                              name:
                                type: string
                                title: name
                                description: The file's name.
                              content:
                                type: string
                                title: content
                                description: The file's content.
                          - type: object
                            description: A File to upload.
                            externalDocs:
                              url: https://developer.mozilla.org/en-US/docs/Web/API/File
                              description: Learn more about the File API
                            title: files
                - type: array
                  description: list of files to upload.
                  items:
                    type: object
                    description: A File to upload.
                    externalDocs:
                      url: https://developer.mozilla.org/en-US/docs/Web/API/File
                      description: Learn more about the File API
                  title: FileList
              description: The files to upload.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.upload.create(
              {
                files: [
                   // file uploaded as a binary string
                  {
                    name: "test.txt",
                    content: "test", // Should be the binary string of the file
                  },
                  // file uploaded as a File object
                  new File(["test"], "test.txt", { type: "text/plain" })
                ],
              }
            )
            .then(({ files }) => {
              console.log(files)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/uploads' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Uploads
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminFileListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: uploadFilesWorkflow
      x-events: []
  /admin/uploads/presigned-urls:
    post:
      operationId: PostUploadsPresignedUrls
      summary: Get Presigned Upload URL
      description: Get a presigned URL for uploading a file to the configured File Module Provider. The presigned URL can be used to upload files directly to the third-party provider. This only works if your configured provider supports presigned URLs, such as the S3 provider.
      x-authenticated: true
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUploadPreSignedUrl'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.upload.presignedUrl({
              name: "test.txt",
              size: 1000,
              type: "text/plain",
            }))
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/uploads/presigned-urls' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "originalname": "{value}",
              "size": 43,
              "mime_type": "{value}"
            }'
      tags:
        - Uploads
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminUploadPreSignedUrlResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/uploads/{id}:
    get:
      operationId: GetUploadsId
      summary: Get a File
      description: Retrieve an uploaded file by its ID. You can expand the file's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The upload's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.upload.retrieve("test.txt")
            .then(({ file }) => {
              console.log(file)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/uploads/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Uploads
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminFileResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    delete:
      operationId: DeleteUploadsId
      summary: Delete a File
      description: Delete a file. Uses the installed file module provider to delete the file.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The file's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.upload.delete("test.txt")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/uploads/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Uploads
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The file's ID.
                  object:
                    type: string
                    title: object
                    description: The name of the deleted object.
                    default: file
                  deleted:
                    type: boolean
                    title: deleted
                    description: Whether the file was deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: deleteFilesWorkflow
      x-events: []
  /admin/users:
    get:
      operationId: GetUsers
      summary: List Users
      description: Retrieve a list of users. The users can be filtered by fields such as `id`. The users can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: q
          in: query
          description: The search term to filter the user's searchable properties.
          required: false
          schema:
            type: string
            title: q
            description: The search term to filter the user's searchable properties.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a user's ID.
              - type: array
                description: Filter by user IDs.
                items:
                  type: string
                  title: id
                  description: A user's ID.
        - name: email
          in: query
          description: Filter by an email.
          required: false
          schema:
            type: string
            title: email
            description: Filter by an email.
            format: email
        - name: first_name
          in: query
          description: Filter by a first name.
          required: false
          schema:
            type: string
            title: first_name
            description: Filter by a first name.
        - name: last_name
          in: query
          description: Filter by a last name.
          required: false
          schema:
            type: string
            title: last_name
            description: Filter by a last name.
        - name: created_at
          in: query
          description: Filter by a user's creation date.
          required: false
          schema:
            type: object
            description: Filter by a user's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a user's update date.
          required: false
          schema:
            type: object
            description: Filter by a user's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: deleted_at
          in: query
          description: Filter by a user's deletion date.
          required: false
          schema:
            type: object
            description: Filter by a user's deletion date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: deleted_at
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.user.list()
            .then(({ users, count, limit, offset }) => {
              console.log(users)
            })
        - lang: Shell
          label: cURL
          source: curl '{backend_url}/admin/users'
      tags:
        - Users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminUserListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      security:
        - cookie_auth: []
        - jwt_token: []
  /admin/users/me:
    get:
      operationId: GetUsersMe
      summary: Get Logged-In User
      description: Retrieve the logged-in user's details.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.user.me()
            .then(({ user }) => {
              console.log(user)
            })
        - lang: Shell
          label: cURL
          source: curl '{backend_url}/admin/users/me'
      tags:
        - Users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminUserResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      security:
        - cookie_auth: []
        - jwt_token: []
  /admin/users/{id}:
    get:
      operationId: GetUsersId
      summary: Get a User
      description: Retrieve a user by its ID. You can expand the user's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The user's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.user.retrieve("user_123")
            .then(({ user }) => {
              console.log(user)
            })
        - lang: Shell
          label: cURL
          source: curl '{backend_url}/admin/users/{id}'
      tags:
        - Users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminUserResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      security:
        - cookie_auth: []
        - jwt_token: []
    post:
      operationId: PostUsersId
      summary: Update a User
      description: Update a user's details.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The user's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateUser'
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.user.update("user_123", {
              first_name: "John",
              last_name: "Doe",
            })
            .then(({ user }) => {
              console.log(user)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/users/{id}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "first_name": "{value}",
              "last_name": "{value}",
              "avatar_url": "{value}"
            }'
      tags:
        - Users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminUserResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateUsersWorkflow
      security:
        - cookie_auth: []
        - jwt_token: []
      x-events:
        - name: user.updated
          payload: |-
            ```ts
            {
              id, // The ID of the user
            }
            ```
          description: Emitted when users are updated.
          deprecated: false
    delete:
      operationId: DeleteUsersId
      summary: Delete a User
      description: Delete a user.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The user's ID.
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.user.delete("user_123")
            .then(({ deleted }) => {
              console.log(deleted)
            })
        - lang: Shell
          label: cURL
          source: curl -X DELETE '{backend_url}/admin/users/{id}'
      tags:
        - Users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminUserDeleteResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: removeUserAccountWorkflow
      security:
        - cookie_auth: []
        - jwt_token: []
      x-events:
        - name: user.deleted
          payload: |-
            ```ts
            {
              id, // The ID of the user
            }
            ```
          description: Emitted when users are deleted.
          deprecated: false
  /admin/views/{entity}/columns:
    get:
      operationId: GetViewsEntityColumns
      summary: List Columns in View
      x-sidebar-summary: List Columns
      description: Retrieve a list of columns in a view for an entity. The columns are retrieved for the authenticated admin user.
      x-authenticated: true
      parameters:
        - name: entity
          in: path
          description: The entity to retrieve its columns (for example, `orders`)
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/views/{entity}/columns' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Views
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminViewsEntityColumnsResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.10.3
      x-featureFlag: view_configurations
  /admin/views/{entity}/configurations:
    get:
      operationId: GetViewsEntityConfigurations
      summary: List View Configurations
      description: Retrieve a list of view configurations of an entity. The configurations can be filtered by fields like `id`. The configurations can also be paginated. An admin user can only retrieve their own configurations.
      x-authenticated: true
      parameters:
        - name: entity
          in: path
          description: The entity to retrieve its view configurations (for example, `orders`)
          required: true
          schema:
            type: string
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
            externalDocs:
              url: '#pagination'
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
        - name: id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: id
                description: Filter by a view configuration ID.
              - type: array
                description: Filter by view configuration IDs.
                items:
                  type: string
                  title: id
                  description: The view configuration ID.
        - name: entity
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: entity
                description: Filter by an entity.
              - type: array
                description: Filter by entities.
                items:
                  type: string
                  title: entity
                  description: An entity.
        - name: name
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: name
                description: Filter by a view's name.
              - type: array
                description: Filter by view names.
                items:
                  type: string
                  title: name
                  description: The view's name.
        - name: user_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: user_id
                description: Filter by the ID of the user who owns the view.
              - type: array
                description: Filter by the IDs of users who own the view.
                items:
                  type: string
                  title: user_id
                  description: The user ID.
        - name: is_system_default
          in: query
          description: Filter by whether the view is a system default.
          required: false
          schema:
            type: boolean
            title: is_system_default
            description: Whether the view is a system default.
        - name: created_at
          in: query
          description: Filter by a view configuration's creation date.
          required: false
          schema:
            type: object
            description: Filter by a view configuration's creation date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: created_at
        - name: updated_at
          in: query
          description: Filter by a view configuration's update date.
          required: false
          schema:
            type: object
            description: Filter by a view configuration's update date.
            properties:
              $and:
                type: array
                description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $and
              $or:
                type: array
                description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                items:
                  type: object
                title: $or
              $eq:
                oneOf:
                  - type: string
                    title: $eq
                    description: Filter by an exact match.
                  - type: array
                    description: Filter by an exact match.
                    items:
                      type: string
                      title: $eq
                      description: Filter by an exact match.
              $ne:
                type: string
                title: $ne
                description: Filter by values not equal to this parameter.
              $in:
                type: array
                description: Filter by values in this array.
                items:
                  type: string
                  title: $in
                  description: Filter by values in this array.
              $nin:
                type: array
                description: Filter by values not in this array.
                items:
                  type: string
                  title: $nin
                  description: Filter by values not in this array.
              $not:
                oneOf:
                  - type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
                  - type: object
                    description: Filter by values not matching the conditions in this parameter.
                  - type: array
                    description: Filter by values not matching the conditions in this parameter.
                    items:
                      type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
              $gt:
                type: string
                title: $gt
                description: Filter by values greater than this parameter. Useful for numbers and dates only.
              $gte:
                type: string
                title: $gte
                description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
              $lt:
                type: string
                title: $lt
                description: Filter by values less than this parameter. Useful for numbers and dates only.
              $lte:
                type: string
                title: $lte
                description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
              $like:
                type: string
                title: $like
                description: Apply a `like` filter. Useful for strings only.
              $re:
                type: string
                title: $re
                description: Apply a regex filter. Useful for strings only.
              $ilike:
                type: string
                title: $ilike
                description: Apply a case-insensitive `like` filter. Useful for strings only.
              $fulltext:
                type: string
                title: $fulltext
                description: Filter to apply on full-text properties.
              $overlap:
                type: array
                description: Filter arrays that have overlapping values with this parameter.
                items:
                  type: string
                  title: $overlap
                  description: Filter arrays that have overlapping values with this parameter.
              $contains:
                type: array
                description: Filter arrays that contain some of the values of this parameter.
                items:
                  type: string
                  title: $contains
                  description: Filter arrays that contain some of the values of this parameter.
              $contained:
                type: array
                description: Filter arrays that contain all values of this parameter.
                items:
                  type: string
                  title: $contained
                  description: Filter arrays that contain all values of this parameter.
              $exists:
                type: boolean
                title: $exists
                description: Filter by whether a value for this parameter exists (not `null`).
            title: updated_at
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: $and
          in: query
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $and
        - name: $or
          in: query
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          required: false
          schema:
            type: array
            description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
            items:
              type: object
            title: $or
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/views/{entity}/configurations' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Views
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The list of view configurations.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of returned items.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                      estimate_count:
                        type: number
                        title: estimate_count
                        description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
                        x-featureFlag: index_engine
                  - type: object
                    description: The list of view configurations.
                    required:
                      - view_configurations
                    properties:
                      view_configurations:
                        type: array
                        description: The list of view configurations.
                        items:
                          $ref: '#/components/schemas/AdminViewConfiguration'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.10.3
      x-featureFlag: view_configurations
    post:
      operationId: PostViewsEntityConfigurations
      summary: Create View Configuration
      description: Create a new view configuration for an entity. If `is_system_default` is set to true, the created configuration will be set as the system default for the specified entity. Otherwise, it will be a custom configuration for the admin user.
      x-authenticated: true
      parameters:
        - name: entity
          in: path
          description: The entity to create its view configuration (for example, `orders`).
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateViewConfiguration'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/views/{entity}/configurations' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            -d '{
              "is_system_default": true,
              "name": "Custom View"
            }'
      tags:
        - Views
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminViewConfigurationResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: createViewConfigurationWorkflow
      x-events: []
      x-since: 2.10.3
      x-featureFlag: view_configurations
  /admin/views/{entity}/configurations/active:
    get:
      operationId: GetViewsEntityConfigurationsActive
      summary: Get Active View Configuration
      description: Get the active view configurations for an entity. If no active view is set, `null` is returned. An admin user can only retrieve their own active configuration.
      x-authenticated: true
      parameters:
        - name: entity
          in: path
          description: The entity to retrieve its active view configurations (for example, `orders`).
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/views/{entity}/configurations/active' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Views
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/AdminViewConfigurationResponse'
                  - type: object
                    description: Additional properties related to the active view configuration.
                    properties:
                      is_default_active:
                        type: boolean
                        title: is_default_active
                        description: Whether the active view configuration is the system default.
                      default_type:
                        type: string
                        description: The type of the default view configuration if the active view is the system default. It will be `system` if the active view is the system default, `code` if no active view is set, or `undefined` if the active view isn't the system default.
                        enum:
                          - code
                          - system
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.10.3
      x-featureFlag: view_configurations
    post:
      operationId: PostViewsEntityConfigurationsActive
      summary: Make View Configuration Active
      description: Make a view configuration active. This will set the given view configuration as the active one for the specified entity for the admin user. An admin user can only set their own configurations as active. If the view configuration ID is `null`, the active view configuration will be cleared, and the `code` or system default view configuration type will be used as the active view.
      x-authenticated: true
      parameters:
        - name: entity
          in: path
          description: The entity to update its view configuration (for example, `orders`).
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminSetActiveViewConfiguration'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/views/{entity}/configurations/active' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "view_configuration_id": "{value}"
            }'
      tags:
        - Views
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The details of the operation.
                required:
                  - success
                properties:
                  success:
                    type: boolean
                    title: success
                    description: Whether the operation was successful.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.10.3
      x-featureFlag: view_configurations
  /admin/views/{entity}/configurations/{id}:
    get:
      operationId: GetViewsEntityConfigurationsId
      summary: Get View Configuration
      description: Retrieve a view configuration for an entity. An admin user can only retrieve their own configurations.
      x-authenticated: true
      parameters:
        - name: entity
          in: path
          description: The entity to retrieve its view configurations (for example, `orders`)
          required: true
          schema:
            type: string
        - name: id
          in: path
          description: The ID of the view configuration to retrieve.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. If a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. Without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/views/{entity}/configurations/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Views
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminViewConfigurationResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.10.3
      x-featureFlag: view_configurations
    post:
      operationId: PostViewsEntityConfigurationsId
      summary: Update View Configuration
      description: Update the view configuration of an entity. An admin user can only update their own configurations.
      x-authenticated: true
      parameters:
        - name: entity
          in: path
          description: The entity to update its view configuration (for example, `orders`).
          required: true
          schema:
            type: string
        - name: id
          in: path
          description: The view configuration's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminUpdateViewConfiguration'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/views/{entity}/configurations/{id}' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            -d '{
              "is_system_default": true
            }'
      tags:
        - Views
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminViewConfigurationResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: updateViewConfigurationWorkflow
      x-events: []
      x-since: 2.10.3
      x-featureFlag: view_configurations
    delete:
      operationId: DeleteViewsEntityConfigurationsId
      summary: Remove View Configurations
      description: Remove view configurations of an entity. An admin user can only delete their own configurations.
      x-authenticated: true
      parameters:
        - name: entity
          in: path
          description: The entity to delete its view configuration (for example, `orders`)
          required: true
          schema:
            type: string
        - name: id
          in: path
          description: The ID of the view configuration to delete
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/admin/views/{entity}/configurations/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Views
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The details of the deletion operation.
                required:
                  - id
                  - object
                  - deleted
                properties:
                  id:
                    type: string
                    title: id
                    description: The ID of the deleted View Configuration.
                  object:
                    type: string
                    title: object
                    description: The name of the deleted object.
                    example: view_configuration
                  deleted:
                    type: boolean
                    title: deleted
                    description: Whether the view was deleted.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-since: 2.10.3
      x-featureFlag: view_configurations
  /admin/workflows-executions:
    get:
      operationId: GetWorkflowsExecutions
      summary: List Workflows Executions
      description: Retrieve a list of workflows executions. The workflows executions can be filtered by fields such as `id`. The workflows executions can also be sorted or paginated.
      x-authenticated: true
      parameters:
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
        - name: offset
          in: query
          description: The number of items to skip when retrieving a list.
          required: false
          schema:
            type: number
            title: offset
            description: The number of items to skip when retrieving a list.
            externalDocs:
              url: '#pagination'
        - name: limit
          in: query
          description: Limit the number of items returned in the list.
          required: false
          schema:
            type: number
            title: limit
            description: Limit the number of items returned in the list.
            externalDocs:
              url: '#pagination'
        - name: order
          in: query
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
          required: false
          schema:
            type: string
            title: order
            description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        - name: transaction_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: transaction_id
                description: Filter by a transaction ID.
              - type: array
                description: Filter by transaction IDs.
                items:
                  type: string
                  title: transaction_id
                  description: A transaction ID.
        - name: workflow_id
          in: query
          required: false
          schema:
            oneOf:
              - type: string
                title: workflow_id
                description: Filter by a workflow ID.
              - type: array
                description: Filter by workflow IDs.
                items:
                  type: string
                  title: workflow_id
                  description: A workflow ID.
        - name: q
          in: query
          description: Search query to filter by a workflow execution's searchable fields.
          required: false
          schema:
            type: string
            title: q
            description: Search query to filter by a workflow execution's searchable fields.
        - name: with_deleted
          in: query
          description: Whether to include deleted records in the result.
          required: false
          schema:
            type: boolean
            title: with_deleted
            description: Whether to include deleted records in the result.
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.workflowExecution.list()
            .then(({ workflow_executions, count, limit, offset }) => {
              console.log(workflow_executions)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/workflows-executions' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Workflows Executions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    description: The paginated list of workflow executions.
                    required:
                      - limit
                      - offset
                      - count
                    properties:
                      limit:
                        type: number
                        title: limit
                        description: The maximum number of items returned.
                      offset:
                        type: number
                        title: offset
                        description: The number of items skipped before retrieving the returned items.
                      count:
                        type: number
                        title: count
                        description: The total number of items.
                  - type: object
                    description: The paginated list of workflow executions.
                    required:
                      - workflow_executions
                    properties:
                      workflow_executions:
                        type: array
                        description: The workflows execution's workflow executions.
                        items:
                          $ref: '#/components/schemas/AdminWorkflowExecution'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/workflows-executions/{id}:
    get:
      operationId: GetWorkflowsExecutionsId
      summary: Get a Workflows Execution
      description: Retrieve a workflows execution by its ID. You can expand the workflows execution's relations or select the fields that should be returned.
      x-authenticated: true
      parameters:
        - name: id
          in: path
          description: The workflows execution's ID.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.admin.workflowExecution.retrieve("wrk_123")
            .then(({ workflow_execution }) => {
              console.log(workflow_execution)
            })
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/workflows-executions/{id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Workflows Executions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminWorkflowExecutionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/workflows-executions/{workflow_id}/run:
    post:
      operationId: PostWorkflowsExecutionsWorkflow_idRun
      summary: Execute a Workflow
      description: Execute a workflow by its ID.
      x-authenticated: true
      parameters:
        - name: workflow_id
          in: path
          description: The workflow's ID.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateWorkflowsRun'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/workflows-executions/{workflow_id}/run' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Workflows Executions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The execution's details.
                required:
                  - acknowledgement
                properties:
                  acknowledgement:
                    type: object
                    description: The workflow's details
                    required:
                      - workflowId
                      - transactionId
                      - hasFinished
                      - hasFailed
                    properties:
                      workflowId:
                        type: string
                        description: The ID of the executed workflow.
                        title: workflowId
                      transactionId:
                        type: string
                        description: The ID of the workflow exection's transaction. Use this later to track the workflow execution's progress or succeed / fail its steps.
                        title: transactionId
                      parentStepIdempotencyKey:
                        type: string
                        title: parentStepIdempotencyKey
                        description: The idempotency key of the workflow execution.
                      hasFinished:
                        type: boolean
                        title: hasFinished
                        description: Whether the workflow execution has finished.
                      hasFailed:
                        type: boolean
                        title: hasFailed
                        description: Whether the workflow execution has failed.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/workflows-executions/{workflow_id}/steps/failure:
    post:
      operationId: PostWorkflowsExecutionsWorkflow_idStepsFailure
      summary: Fail a Step in a Workflow's Execution
      x-sidebar-summary: Fail a Step
      description: Set the status of a step in a workflow's execution as failed. This is useful for long-running workflows.
      x-authenticated: true
      parameters:
        - name: workflow_id
          in: path
          description: The workflows execution's workflow id.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateWorkflowsAsyncResponse'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/workflows-executions/{workflow_id}/steps/failure' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "transaction_id": "{value}",
              "step_id": "{value}"
            }'
      tags:
        - Workflows Executions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The details of failing the workflow step.
                required:
                  - success
                properties:
                  success:
                    type: boolean
                    title: success
                    description: Whether the workflow step has failed successfully.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/workflows-executions/{workflow_id}/steps/success:
    post:
      operationId: PostWorkflowsExecutionsWorkflow_idStepsSuccess
      summary: Succeed a Step in a Workflow's Execution
      x-sidebar-summary: Succed a Step
      description: Set the status of a step in a workflow's execution as successful. This is useful for long-running workflows.
      x-authenticated: true
      parameters:
        - name: workflow_id
          in: path
          description: The workflows execution's workflow id.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminCreateWorkflowsAsyncResponse'
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/admin/workflows-executions/{workflow_id}/steps/success' \
            -H 'Authorization: Bearer {jwt_token}' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "transaction_id": "{value}",
              "step_id": "{value}"
            }'
      tags:
        - Workflows Executions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The details of succeeding the workflow step.
                required:
                  - success
                properties:
                  success:
                    type: boolean
                    title: success
                    description: Whether the workflow step was succeeded.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/workflows-executions/{workflow_id}/subscribe:
    get:
      operationId: GetWorkflowsExecutionsWorkflow_idSubscribe
      summary: Subscribe to a Workflow's Execution
      x-sidebar-summary: Subscribe to Workflow
      description: |
        Subscribe to a workflow's execution to receive real-time information about its steps, status, and data.
        This route returns an event stream that you can consume using the [EventSource API](https://developer.mozilla.org/en-US/docs/Web/API/EventSource).
      x-authenticated: true
      parameters:
        - name: workflow_id
          in: path
          description: The workflows execution's workflow id.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/workflows-executions/{workflow_id}/subscribe' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Workflows Executions
      responses:
        '200':
          description: Stream of the step's status.
          content:
            text/event-stream:
              schema:
                type: string
                description: The step's status update and data changes.
                example: |-
                  event: success
                   data: {}
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/workflows-executions/{workflow_id}/{transaction_id}:
    get:
      operationId: GetWorkflowsExecutionsWorkflow_idTransaction_id
      summary: Get Workflow Execution's Details
      x-sidebar-summary: Get Exection
      description: Get the details of the workflow's execution.
      x-authenticated: true
      parameters:
        - name: workflow_id
          in: path
          description: The workflows execution's workflow id.
          required: true
          schema:
            type: string
        - name: transaction_id
          in: path
          description: The workflows execution's transaction id.
          required: true
          schema:
            type: string
        - name: fields
          in: query
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          required: false
          schema:
            type: string
            title: fields
            description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
            externalDocs:
              url: '#select-fields-and-relations'
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/workflows-executions/{workflow_id}/{transaction_id}' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Workflows Executions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminWorkflowExecutionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /admin/workflows-executions/{workflow_id}/{transaction_id}/{step_id}/subscribe:
    get:
      operationId: GetWorkflowsExecutionsWorkflow_idTransaction_idStep_idSubscribe
      summary: Subscribe to Step of a Workflow's Execution
      x-sidebar-summary: Subscribe to Step
      description: |
        Subscribe to a step in a workflow's execution to receive real-time information about its status and data.
        This route returns an event stream that you can consume using the [EventSource API](https://developer.mozilla.org/en-US/docs/Web/API/EventSource).
      x-authenticated: true
      parameters:
        - name: workflow_id
          in: path
          description: The workflows execution's workflow id.
          required: true
          schema:
            type: string
        - name: transaction_id
          in: path
          description: The workflows execution's transaction id.
          required: true
          schema:
            type: string
        - name: step_id
          in: path
          description: The workflows execution's step id.
          required: true
          schema:
            type: string
      security:
        - api_token: []
        - cookie_auth: []
        - jwt_token: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl '{backend_url}/admin/workflows-executions/{workflow_id}/{transaction_id}/{step_id}/subscribe' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Workflows Executions
      responses:
        '200':
          description: Stream of the step's status.
          content:
            text/event-stream:
              schema:
                type: string
                description: The step's status update and data changes.
                example: |-
                  event: success
                   data: {}
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /auth/session:
    post:
      operationId: PostSession
      summary: Set Authentication Session
      description: Set the cookie session ID of an admin user. The admin must be previously authenticated with the `/auth/user/{provider}` API route first, as the JWT token is required in the header of the request.
      x-authenticated: true
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/auth/session' \
            -H 'Authorization: Bearer {jwt_token}'
      tags:
        - Auth
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthAdminSessionResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    delete:
      operationId: DeleteSession
      summary: Delete Authentication Session
      description: Deletes the cookie session ID previously set for authentication.
      x-authenticated: true
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            await sdk.auth.logout()

            // user is now logged out
            // you can't send any requests that require authentication
        - lang: Shell
          label: cURL
          source: |-
            curl -X DELETE '{backend_url}/auth/session' \
            -H 'Cookie: connect.sid={sid}'
      tags:
        - Auth
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                description: The deletion's details.
                required:
                  - success
                properties:
                  success:
                    type: boolean
                    title: success
                    description: Whether the session was deleted successfully.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /auth/token/refresh:
    post:
      operationId: PostAdminAuthTokenRefresh
      summary: Refresh Authentication Token
      description: Refresh the authentication token of a user. This is useful after authenticating a user with a third-party service to ensure the token holds the new user's details, or when you don't want users to re-login every day.
      externalDocs:
        url: https://docs.medusajs.com/resources/commerce-modules/auth/authentication-route#2-third-party-service-authenticate-flow
        description: Learn about third-party authentication flow.
      x-authenticated: true
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            const token = await sdk.auth.refresh()

            // all subsequent requests will use the token in the header
            const { user } = await sdk.admin.user.me()
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/auth/token/refresh' \
            -H 'Authorization: Bearer {token}'
      tags:
        - Auth
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /auth/user/{auth_provider}:
    post:
      operationId: PostActor_typeAuth_provider
      summary: Authenticate User
      description: |
        Authenticate a user and receive the JWT token to be used in the header of subsequent requests.

        When used with a third-party provider, such as Google, the request returns a `location` property. You redirect to the specified URL in your frontend to continue authentication with the third-party service.
      externalDocs:
        url: https://docs.medusajs.com/resources/commerce-modules/auth/authentication-route#types-of-authentication-flows
        description: Learn about different authentication flows.
      x-authenticated: false
      parameters:
        - name: auth_provider
          in: path
          description: The provider used for authentication.
          required: true
          schema:
            type: string
            example: emailpass
      requestBody:
        content:
          application/json:
            schema:
              type: object
              title: input
              description: |
                The input data necessary for authentication. 
                For example, for email-pass authentication, pass `email` and `password` properties. 
                For the Google and GitHub authentication providers, you can pass `callback_url` to indicate the URL in the frontend that the user should be redirected to after completing their authentication. This will override the provider's `callbackUrl` configurations in `medusa-config.ts`.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            const result = await sdk.auth.login(
              "user",
              "emailpass",
              {
                email: "user@gmail.com",
                password: "supersecret"
              }
            )

            if (typeof result !== "string") {
              alert("Authentication requires additional steps")
              // replace with the redirect logic of your application
              window.location.href = result.location
              return
            }

            // user is now authenticated
            // all subsequent requests will use the token in the header
            const { user } = await sdk.admin.user.me()
        - lang: Bash
          label: Google Provider
          source: curl -X POST '{backend_url}/auth/user/google'
      tags:
        - Auth
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/AuthResponse'
                  - $ref: '#/components/schemas/AuthCallbackResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /auth/user/{auth_provider}/callback:
    post:
      operationId: PostActor_typeAuth_providerCallback
      summary: Validate Authentication Callback
      description: |
        This API route is used by your dashboard or frontend application when a third-party provider redirects to it after authentication. It validates the authentication with the third-party provider and, if successful, returns an authentication token. All query parameters received from the third-party provider, such as `code`, `state`, and `error`, must be passed as query parameters to this route.

        You can decode the JWT token using libraries like [react-jwt](https://www.npmjs.com/package/react-jwt) in the frontend. If the decoded data doesn't  have an `actor_id` property, then you must create a user, typically using the Accept Invite route passing the token in the request's Authorization header.
      externalDocs:
        url: https://docs.medusajs.com/resources/commerce-modules/auth/authentication-route#2-third-party-service-authenticate-flow
        description: Learn about third-party authentication flow.
      x-authenticated: false
      parameters:
        - name: auth_provider
          in: path
          description: The provider used for authentication.
          required: true
          schema:
            type: string
            example: google
      x-codeSamples:
        - lang: JavaScript
          label: Google Provider
          source: |-
            import Medusa from "@medusajs/js-sdk"
            import { decodeToken } from "react-jwt"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            const token = await sdk.auth.callback(
              "user",
              "google",
              {
                code: "123",
                state: "456"
              }
            )
            // all subsequent requests will use the token in the header

            const decodedToken = decodeToken(token) as { actor_id: string, user_metadata: Record<string, unknown> }

            const shouldCreateUser = decodedToken.actor_id === ""

            if (shouldCreateUser) {
              const user = await sdk.admin.invite.accept(
                {
                  email: decodedToken.user_metadata.email as string,
                  first_name: "John",
                  last_name: "Smith",
                  invite_token: "12345..."
                },
              )

              // refresh auth token
              await sdk.auth.refresh()
              // all subsequent requests will use the new token in the header
            } else {
              // User already exists and is authenticated
            }
        - lang: TypeScript
          label: GitHub Provider
          source: |-
            import Medusa from "@medusajs/js-sdk"
            import { decodeToken } from "react-jwt"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            const token = await sdk.auth.callback(
              "user",
              "github",
              {
                code: "123",
                state: "456"
              }
            )
            // all subsequent requests will use the token in the header

            const decodedToken = decodeToken(token) as { actor_id: string, user_metadata: Record<string, unknown> }

            const shouldCreateUser = decodedToken.actor_id === ""

            if (shouldCreateUser) {
              const user = await sdk.admin.invite.accept(
                {
                  email: decodedToken.user_metadata.email as string,
                  first_name: "John",
                  last_name: "Smith",
                  invite_token: "12345..."
                },
              )

              // refresh auth token
              await sdk.auth.refresh()
              // all subsequent requests will use the new token in the header
            } else {
              // User already exists and is authenticated
            }
      tags:
        - Auth
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /auth/user/{auth_provider}/register:
    post:
      operationId: PostActor_typeAuth_provider_register
      summary: Retrieve Registration JWT Token
      description: This API route retrieves a registration JWT token of a user that hasn't been registered yet. The token is used in the header of requests that create a user, such as the Accept Invite API route.
      externalDocs:
        url: https://docs.medusajs.com/resources/commerce-modules/auth/authentication-route#1-basic-authentication-flow
        description: Learn about the basic authentication flow.
      x-authenticated: false
      parameters:
        - name: auth_provider
          in: path
          description: The provider used for authentication.
          required: true
          schema:
            type: string
            example: emailpass
      requestBody:
        content:
          application/json:
            schema:
              type: object
              title: input
              description: The input data necessary for authentication. For example, for email-pass authentication, pass `email` and `password` properties.
              example:
                email: admin@medusa-test.com
                password: supersecret
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            const token = await sdk.auth.register("user", "emailpass", {
              email: "user@gmail.com",
              password: "supersecret"
            })

            // all subsequent requests will use the token in the header
            const { user } = await sdk.admin.invite.accept(
              {
                email: "user@gmail.com",
                first_name: "John",
                last_name: "Smith",
                invite_token: "12345..."
              },
            )
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/auth/user/emailpass/register' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "email": "admin@medusa-test.com",
              "password": "supersecret"
            }'
      tags:
        - Auth
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
  /auth/user/{auth_provider}/reset-password:
    post:
      operationId: PostActor_typeAuth_providerResetPassword
      summary: Generate Reset Password Token for Admin User
      x-sidebar-summary: Generate Reset Password Token
      description: |
        Generate a reset password token for an admin user. This API route doesn't reset the admin's password or send them the reset instructions in a notification.

        Instead, This API route emits the `auth.password_reset` event, passing it the token as a payload. You can listen to that event in a subscriber as explained in [this guide](https://docs.medusajs.com/resources/commerce-modules/auth/reset-password), then send the user a notification. The notification is sent using a [Notification Module Provider](https://docs.medusajs.com/resources/infrastructure-modules/notification), and it should have the URL to reset the password in the Medusa Admin dashboard, such as `http://localhost:9000/app/reset-password?token=123`.


         Use the generated token to update the user's password using the [Reset Password API route](https://docs.medusajs.com/api/admin#auth_postactor_typeauth_providerupdate).
      externalDocs:
        url: https://docs.medusajs.com/resources/commerce-modules/auth/authentication-route#generate-reset-password-token-route
        description: Learn more about this API route.
      x-authenticated: false
      parameters:
        - name: auth_provider
          in: path
          description: The provider used for authentication.
          required: true
          schema:
            type: string
            example: emailpass
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: The input data necessary to generate a reset password token.
              required:
                - identifier
              properties:
                identifier:
                  type: string
                  description: The identifier of the admin user. For example, their email address.
                  example: admin@medusa-test.com
                metadata:
                  type: object
                  description: Optional metadata to include with the reset password token generation request.
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.auth.resetPassword(
              "user",
              "emailpass",
              {
                identifier: "user@gmail.com"
              }
            )
            .then(() => {
              // user receives token
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/auth/user/emailpass/reset-password' \
            -H 'Content-Type: application/json' \
            --data-raw '{
              "identifier": "admin@medusa-test.com"
            }'
      tags:
        - Auth
      responses:
        '201':
          description: OK
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
      x-workflow: generateResetPasswordTokenWorkflow
      x-events:
        - name: auth.password_reset
          payload: |-
            ```ts
            {
              entity_id, // The identifier of the user or customer. For example, an email address.
              actor_type, // The type of actor. For example, "customer", "user", or custom.
              token, // The generated token.
              metadata, // Optional custom metadata passed from the request.
            }
            ```
          description: |-
            Emitted when a reset password token is generated. You can listen to this event
            to send a reset password email to the user or customer, for example.
          deprecated: false
  /auth/user/{auth_provider}/update:
    post:
      operationId: PostActor_typeAuth_providerUpdate
      summary: Reset an Admin User's Password
      x-sidebar-summary: Reset Password
      description: Reset an admin user's password using a reset-password token generated with the [Generate Reset Password Token API route](https://docs.medusajs.com/api/admin#auth_postactor_typeauth_providerresetpassword). You pass the token as a bearer token in the request's Authorization header.
      externalDocs:
        url: https://docs.medusajs.com/resources/commerce-modules/auth/authentication-route#reset-password-route
        description: Learn more about this API route.
      x-authenticated: true
      parameters:
        - name: auth_provider
          in: path
          description: The provider used for authentication.
          required: true
          schema:
            type: string
            example: emailpass
      requestBody:
        content:
          application/json:
            schema:
              type: object
              title: input
              description: The input data necessary for authentication. For example, for email-pass authentication, pass `email` and `password` properties.
              example:
                email: admin@medusa-test.com
                password: supersecret
      x-codeSamples:
        - lang: JavaScript
          label: JS SDK
          source: |-
            import Medusa from "@medusajs/js-sdk"

            export const sdk = new Medusa({
              baseUrl: import.meta.env.VITE_BACKEND_URL || "/",
              debug: import.meta.env.DEV,
              auth: {
                type: "session",
              },
            })

            sdk.auth.updateProvider(
              "user",
              "emailpass",
              {
                password: "supersecret"
              },
              token
            )
            .then(() => {
              // password updated
            })
        - lang: Shell
          label: cURL
          source: |-
            curl -X POST '{backend_url}/auth/user/emailpass/update' \
            -H 'Content-Type: application/json' \
            -H 'Authorization: Bearer {token}' \
            --data-raw '{
              "email": "admin@medusa-test.com",
              "password": "supersecret"
            }'
      security:
        - reset_password: []
      tags:
        - Auth
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                description: Details on the reset password's status.
                properties:
                  success:
                    type: boolean
                    title: success
                    description: Whether the password was reset successfully.
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
components:
  schemas:
    AdminAddClaimItems:
      type: object
      description: The details of the order items to add to the claim.
      x-schemaName: AdminAddClaimItems
      properties:
        items:
          type: array
          description: The item's details.
          items:
            type: object
            description: An item's details.
            required:
              - id
              - quantity
            properties:
              id:
                type: string
                title: id
                description: The ID of the order's item.
              quantity:
                type: number
                title: quantity
                description: The quantity of the order's item to add to the claim.
              reason:
                type: string
                description: The reason the item is claimed.
                enum:
                  - missing_item
                  - wrong_item
                  - production_failure
                  - other
              description:
                type: string
                title: description
                description: The item's description.
              internal_note:
                type: string
                title: internal_note
                description: A note that's only viewed by admin users.
    AdminAddClaimOutboundItems:
      type: object
      description: The details of the outbound items to add to the claim.
      x-schemaName: AdminAddClaimOutboundItems
      properties:
        items:
          type: array
          description: The outbound item's details.
          items:
            type: object
            description: An item's details.
            required:
              - id
              - quantity
            properties:
              quantity:
                type: number
                title: quantity
                description: The quantity to send to the customer.
              internal_note:
                type: string
                title: internal_note
                description: A note viewed only by admin users.
              id:
                type: string
                title: id
                description: The item's ID.
              reason:
                type: string
                description: The item's reason.
                enum:
                  - missing_item
                  - wrong_item
                  - production_failure
                  - other
              description:
                type: string
                title: description
                description: The item's description.
    AdminAddDraftOrderItems:
      type: object
      description: The details of the items to add to a draft order.
      x-schemaName: AdminAddDraftOrderItems
      properties:
        items:
          type: array
          description: The items to add to the draft order.
          items:
            type: object
            description: The item's details
            required:
              - quantity
            properties:
              quantity:
                type: number
                title: quantity
                description: The item's quantity.
              variant_id:
                type: string
                title: variant_id
                description: The ID of the variant to add to the draft order.
              title:
                type: string
                title: title
                description: The item's title.
              unit_price:
                type: number
                title: unit_price
                description: The item's unit price.
              compare_at_unit_price:
                type: number
                title: compare_at_unit_price
                description: The original price of the item before a promotion or sale.
              internal_note:
                type: string
                title: internal_note
                description: A note viewed only by admin users about the item.
              allow_backorder:
                type: boolean
                title: allow_backorder
                description: Whether the item can be purchased if it's out of stock.
              metadata:
                type: object
                description: The item's metadata, can hold custom key-value pairs.
                externalDocs:
                  url: https://docs.medusajs.com/api/admin#manage-metadata
                  description: Learn how to manage metadata
    AdminAddDraftOrderPromotions:
      type: object
      description: The details of the promotions to add to a draft order.
      x-schemaName: AdminAddDraftOrderPromotions
      required:
        - promo_codes
      properties:
        promo_codes:
          type: array
          description: The list promotion codes to add to the draft order.
          items:
            type: string
            title: promo_codes
            description: A promotion's code.
    AdminAddDraftOrderShippingMethod:
      type: object
      description: The details of the shipping method to add to a draft order.
      x-schemaName: AdminAddDraftOrderShippingMethod
      required:
        - shipping_option_id
      properties:
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the shipping option that this method is created from.
        custom_amount:
          type: number
          title: custom_amount
          description: A custom amount to be charged for this shipping method. If not provided, the shipping option's amount will be used.
        description:
          type: string
          title: description
          description: The shipping method's description.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users about the shipping method.
        metadata:
          type: object
          description: The shipping method's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminAddExchangeInboundItems:
      type: object
      description: The details of the inbound (return) items.
      x-schemaName: AdminAddExchangeInboundItems
      properties:
        items:
          type: array
          description: The details of the inbound (return) items.
          items:
            type: object
            description: An item's details.
            required:
              - id
              - quantity
            properties:
              id:
                type: string
                title: id
                description: The ID of the order's item.
              quantity:
                type: number
                title: quantity
                description: The item's quantity.
              description:
                type: string
                title: description
                description: The item's description.
              internal_note:
                type: string
                title: internal_note
                description: A note viewed only by admin users.
              reason_id:
                type: string
                title: reason_id
                description: The ID of the return reason to associate with the item.
              metadata:
                type: object
                description: The item's metadata, can hold custom key-value pairs.
                externalDocs:
                  url: https://docs.medusajs.com/api/admin#manage-metadata
                  description: Learn how to manage metadata
        location_id:
          type: string
          title: location_id
          description: The ID of the location to which outbound items are sent from.
    AdminAddExchangeOutboundItems:
      type: object
      description: The details of outbound items.
      x-schemaName: AdminAddExchangeOutboundItems
      properties:
        items:
          type: array
          description: The details of outbound items.
          items:
            type: object
            description: An item's details.
            required:
              - variant_id
              - quantity
            properties:
              variant_id:
                type: string
                title: variant_id
                description: The ID of the associated product variant.
              quantity:
                type: number
                title: quantity
                description: The item's quantity.
              unit_price:
                type: number
                title: unit_price
                description: The item's unit price.
              internal_note:
                type: string
                title: internal_note
                description: A note viewed only by admin users.
              allow_backorder:
                type: boolean
                title: allow_backorder
                description: Whether the item can be added even if it's not in stock.
              metadata:
                type: object
                description: The item's metadata, can hold custom key-value pairs.
                externalDocs:
                  url: https://docs.medusajs.com/api/admin#manage-metadata
                  description: Learn how to manage metadata
    AdminAddReturnItem:
      type: object
      description: An item's details.
      required:
        - id
        - quantity
      properties:
        id:
          type: string
          title: id
          description: The item's ID.
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        description:
          type: string
          title: description
          description: The item's description.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        metadata:
          type: object
          description: The item's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
      x-schemaName: AdminAddReturnItem
    AdminAddReturnItems:
      type: object
      description: The items' details.
      x-schemaName: AdminAddReturnItems
      properties:
        items:
          type: array
          description: The items' details.
          items:
            $ref: '#/components/schemas/AdminAddReturnItem'
      required:
        - items
    AdminAddReturnShipping:
      type: object
      description: The shipping method's details.
      x-schemaName: AdminAddReturnShipping
      required:
        - shipping_option_id
      properties:
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the associated shipping option.
        custom_amount:
          type: number
          title: custom_amount
          description: Set the price of the shipping method.
        description:
          type: string
          title: description
          description: The shipping method's description.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        metadata:
          type: object
          description: The exchange's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminApiKey:
      type: object
      description: The API key's details.
      x-schemaName: AdminApiKey
      required:
        - id
        - token
        - redacted
        - title
        - type
        - last_used_at
        - created_by
        - created_at
        - updated_at
        - revoked_by
        - revoked_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The api key's ID.
        token:
          type: string
          title: token
          description: The api key's token.
        redacted:
          type: string
          title: redacted
          description: The redacted form of the API key's token. This is useful when showing portion of the token.
          example: sk_...123
        title:
          type: string
          title: title
          description: The api key's title.
        type:
          type: string
          description: The api key's type. `secret` is used for a user's API key, whereas `publishable` is used for Publishable API keys.
          enum:
            - secret
            - publishable
        last_used_at:
          type: string
          title: last_used_at
          description: The date and time the API key was last used.
          format: date-time
        created_by:
          type: string
          title: created_by
          description: The ID of the user that created the API key, if available.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date and time the API key was created.
        revoked_by:
          type: string
          title: revoked_by
          description: The ID of the user that revoked the API key, if available.
        revoked_at:
          type: string
          title: revoked_at
          description: The date and time the API key was revoked. The API key is considered revoked when this property is set.
          format: date-time
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the API key was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the API key was deleted.
    AdminApiKeyResponse:
      type: object
      description: The API key's details.
      x-schemaName: AdminApiKeyResponse
      required:
        - api_key
      properties:
        api_key:
          $ref: '#/components/schemas/AdminApiKey'
    AdminApplicationMethod:
      type: object
      description: The application method's details.
      x-schemaName: AdminApplicationMethod
      required:
        - id
      properties:
        promotion:
          type: object
        target_rules:
          type: array
          description: The application method's target rules.
          items:
            $ref: '#/components/schemas/AdminPromotionRule'
        buy_rules:
          type: array
          description: The application method's buy rules.
          items:
            $ref: '#/components/schemas/AdminPromotionRule'
        id:
          type: string
          title: id
          description: The application method's ID.
        type:
          type: string
          description: The application method's type. If it's `fixed`, the promotion discounts a fixed amount. If it's `percentage`, the promotion discounts a percentage.
          enum:
            - fixed
            - percentage
        target_type:
          type: string
          description: Which item does the promotion apply to. `items` mean the promotion applies to the cart's items; `shipping_methods` means the promotion applies to the cart's shipping methods; `order` means the promotion applies on the entire order.
          enum:
            - items
            - shipping_methods
            - order
        allocation:
          type: string
          description: How is the promotion amount discounted. `each` means the discounted amount is applied on each applicable item; `across` means the discounted amount is split accross the applicable items.
          enum:
            - each
            - across
        value:
          type: number
          title: value
          description: The amount to be discounted.
        currency_code:
          type: string
          title: currency_code
          description: The application method's currency code.
          example: usd
        max_quantity:
          type: number
          title: max_quantity
          description: The max quantity allowed in the cart for the associated promotion to be applied.
        buy_rules_min_quantity:
          type: number
          title: buy_rules_min_quantity
          description: The minimum quantity required for a `buyget` promotion to be applied. For example, if the promotion is a "Buy 2 shirts get 1 free", the value of this attribute is `2`.
        apply_to_quantity:
          type: number
          title: apply_to_quantity
          description: The quantity that results from matching the `buyget` promotion's condition. For example, if the promotion is a "Buy 2 shirts get 1 free", the value of this attribute is `1`.
    AdminBatchCreateInventoryItemLocationLevels:
      type: object
      description: The inventory level's details.
      required:
        - location_id
      properties:
        location_id:
          type: string
          title: location_id
          description: The ID of the associated location.
        stocked_quantity:
          type: number
          title: stocked_quantity
          description: The inventory level's stocked quantity.
        incoming_quantity:
          type: number
          title: incoming_quantity
          description: The inventory level's incoming quantity.
      x-schemaName: AdminBatchCreateInventoryItemLocationLevels
    AdminBatchCreateInventoryItemsLocationLevels:
      type: object
      description: The details of an inventory level to create.
      required:
        - location_id
        - inventory_item_id
      properties:
        location_id:
          type: string
          title: location_id
          description: The ID of the associated stock location.
        inventory_item_id:
          type: string
          title: inventory_item_id
          description: The ID of the associated inventory item.
        stocked_quantity:
          type: number
          title: stocked_quantity
          description: The stocked quantity.
        incoming_quantity:
          type: number
          title: incoming_quantity
          description: The incoming quantity to be added to stock.
      x-schemaName: AdminBatchCreateInventoryItemsLocationLevels
    AdminBatchImageVariantRequest:
      type: object
      description: Details of the associations between variants and a product image to manage.
      x-schemaName: AdminBatchImageVariantRequest
      properties:
        add:
          type: array
          description: The IDs of product variants to add the image to.
          items:
            type: string
            title: add
            description: The ID of the variant to add.
        remove:
          type: array
          description: The IDs of product variants to remove the image from.
          items:
            type: string
            title: remove
            description: The ID of the variant to remove.
    AdminBatchImageVariantResponse:
      type: object
      description: Result of managing the associations between variants and a product image.
      x-schemaName: AdminBatchImageVariantResponse
      required:
        - added
        - removed
      properties:
        added:
          type: array
          description: The IDs of product variants added the image to.
          items:
            type: string
            title: added
            description: The ID of the variant added.
        removed:
          type: array
          description: The IDs of product variants removed the image from.
          items:
            type: string
            title: removed
            description: The ID of the variant removed.
    AdminBatchInventoryItemLocationsLevel:
      type: object
      description: The inventory levels to create, update, or delete.
      properties:
        create:
          type: array
          description: The inventory levels to create.
          items:
            type: object
            description: The inventory level's details.
            required:
              - location_id
            properties:
              location_id:
                type: string
                title: location_id
                description: The ID of the associated location.
              stocked_quantity:
                type: number
                title: stocked_quantity
                description: The inventory level's stocked quantity.
              incoming_quantity:
                type: number
                title: incoming_quantity
                description: The inventory level's incoming quantity.
        update:
          type: array
          description: The inventory levels to update.
          items:
            type: object
            description: The inventory level's details.
            properties:
              stocked_quantity:
                type: number
                title: stocked_quantity
                description: The inventory level's stocked quantity.
              incoming_quantity:
                type: number
                title: incoming_quantity
                description: The inventory level's incoming quantity.
              location_id:
                type: string
                title: location_id
                description: The associated stock location's ID.
              id:
                type: string
                title: id
                description: The ID of the location level.
            required:
              - location_id
        delete:
          type: array
          description: The inventory levels to delete.
          items:
            type: string
            title: delete
            description: The ID of the inventory level to delete.
        force:
          type: boolean
          title: force
          description: Whether to delete specified inventory levels even if they have a non-zero stocked quantity.
      x-schemaName: AdminBatchInventoryItemLocationsLevel
    AdminBatchInventoryItemsLocationLevels:
      type: object
      description: The inventory levels to manage.
      properties:
        create:
          type: array
          description: The inventory levels to create.
          items:
            $ref: '#/components/schemas/AdminBatchCreateInventoryItemsLocationLevels'
        update:
          type: array
          description: The inventory levels to update.
          items:
            $ref: '#/components/schemas/AdminBatchUpdateInventoryItemsLocationLevels'
        delete:
          type: array
          description: The IDs of the inventory levels to delete.
          items:
            type: string
            title: delete
            description: The ID of the inventory level to delete.
        force:
          type: boolean
          title: force
          description: Whether to delete specified inventory levels even if they have a non-zero stocked quantity.
      required:
        - create
        - update
        - delete
      x-schemaName: AdminBatchInventoryItemsLocationLevels
    AdminBatchInventoryItemsLocationLevelsResponse:
      type: object
      description: The result of managing inventory levels.
      x-schemaName: AdminBatchInventoryItemsLocationLevelsResponse
      properties:
        created:
          type: array
          description: The created inventory levels.
          items:
            $ref: '#/components/schemas/InventoryLevel'
        updated:
          type: array
          description: The updated inventory levels.
          items:
            $ref: '#/components/schemas/InventoryLevel'
        deleted:
          type: array
          description: The IDs of deleted inventory levels.
          items:
            type: string
            title: deleted
            description: The ID of a deleted inventory level.
    AdminBatchLink:
      type: object
      description: A batch operation to manage the associations between two entities.
      properties:
        add:
          type: array
          description: The IDs of an entity to add to the other.
          items:
            type: string
            title: add
            description: The entity's ID.
        remove:
          type: array
          description: The IDs of an entity to remove from the other.
          items:
            type: string
            title: remove
            description: The entity's ID.
      x-schemaName: AdminBatchLink
    AdminBatchProductRequest:
      type: object
      description: The products to create, update, or delete.
      x-schemaName: AdminBatchProductRequest
      properties:
        create:
          type: array
          description: The products to create.
          items:
            $ref: '#/components/schemas/AdminCreateProduct'
        update:
          type: array
          description: The products to update.
          items:
            $ref: '#/components/schemas/AdminBatchUpdateProduct'
        delete:
          type: array
          description: The products to delete.
          items:
            type: string
            title: delete
            description: A product's ID.
    AdminBatchProductResponse:
      type: object
      description: The details of the products created, updated, or deleted.
      x-schemaName: AdminBatchProductResponse
      required:
        - created
        - updated
        - deleted
      properties:
        created:
          type: array
          description: The created products
          items:
            $ref: '#/components/schemas/AdminProduct'
        updated:
          type: array
          description: The updated products.
          items:
            $ref: '#/components/schemas/AdminProduct'
        deleted:
          type: object
          description: The deleted products' details.
          required:
            - ids
            - object
            - deleted
          properties:
            ids:
              type: array
              description: The IDs of deleted products.
              items:
                type: string
                title: ids
                description: The ID of a deleted product.
            object:
              type: string
              title: object
              description: The name of the deleted objects.
              default: product
            deleted:
              type: boolean
              title: deleted
              description: Whether the products were deleted.
    AdminBatchProductVariantRequest:
      type: object
      description: The product variants to create, update, or delete.
      x-schemaName: AdminBatchProductVariantRequest
      properties:
        create:
          type: array
          description: The product variants to create.
          items:
            $ref: '#/components/schemas/AdminCreateProductVariant'
        update:
          type: array
          description: The product variants to update.
          items:
            $ref: '#/components/schemas/AdminBatchUpdateProductVariant'
        delete:
          type: array
          description: The product variants to delete.
          items:
            type: string
            title: delete
            description: A product variant's ID.
    AdminBatchProductVariantResponse:
      type: object
      description: The details of the product variants created, updated, or deleted.
      x-schemaName: AdminBatchProductVariantResponse
      required:
        - created
        - updated
        - deleted
      properties:
        created:
          type: array
          description: The created product variants.
          items:
            $ref: '#/components/schemas/AdminProductVariant'
        updated:
          type: array
          description: The updated product variants.
          items:
            $ref: '#/components/schemas/AdminProductVariant'
        deleted:
          type: object
          description: The details of the deleted product variants.
          required:
            - ids
            - object
            - deleted
          properties:
            ids:
              type: array
              description: The IDs of the deleted product variants.
              items:
                type: string
                title: ids
                description: The ID of a deleted variant.
            object:
              type: string
              title: object
              description: The name of the deleted objects.
              default: variant
            deleted:
              type: boolean
              title: deleted
              description: Whether the product variants were deleted.
    AdminBatchTranslationSettings:
      type: object
      description: The translation settings to create, update, or delete in batch.
      x-schemaName: AdminBatchTranslationSettings
      properties:
        create:
          type: array
          description: The translation settings to create.
          items:
            $ref: '#/components/schemas/AdminCreateTranslationSettings'
        update:
          type: array
          description: The translation settings to update.
          items:
            $ref: '#/components/schemas/AdminUpdateTranslationSettings'
        delete:
          type: array
          description: The translation settings to delete.
          items:
            type: string
            title: delete
            description: The IDs of the translation settings to delete.
    AdminBatchTranslationSettingsResponse:
      type: object
      description: The result of managing the translation settings in batch.
      x-schemaName: AdminBatchTranslationSettingsResponse
      required:
        - created
        - updated
        - deleted
      properties:
        created:
          type: array
          description: The created translation settings.
          items:
            $ref: '#/components/schemas/AdminTranslationSettings'
        updated:
          type: array
          description: The updated translation settings.
          items:
            $ref: '#/components/schemas/AdminTranslationSettings'
        deleted:
          type: object
          description: The deletion result.
          required:
            - ids
            - object
            - deleted
          properties:
            ids:
              type: array
              description: The IDs of the deleted translation settings.
              items:
                type: string
                title: ids
                description: The ID of a deleted translation settings.
            object:
              type: string
              title: object
              description: The type of object deleted.
            deleted:
              type: boolean
              title: deleted
              description: Whether the deletion was successful.
    AdminBatchUpdateInventoryItemsLocationLevels:
      type: object
      description: The details of an inventory level to update.
      required:
        - location_id
        - inventory_item_id
      properties:
        location_id:
          type: string
          title: location_id
          description: The ID of the associated stock location.
        inventory_item_id:
          type: string
          title: inventory_item_id
          description: The ID of the associated inventory item.
        stocked_quantity:
          type: number
          title: stocked_quantity
          description: The stocked quantity.
        incoming_quantity:
          type: number
          title: incoming_quantity
          description: The incoming quantity to be added to stock.
        id:
          type: string
          title: id
          description: The update's ID.
      x-schemaName: AdminBatchUpdateInventoryItemsLocationLevels
    AdminBatchUpdateProduct:
      type: object
      description: The product's details.
      x-schemaName: AdminBatchUpdateProduct
      properties:
        title:
          type: string
          title: title
          description: The product's title.
        subtitle:
          type: string
          title: subtitle
          description: The product's subtitle.
        description:
          type: string
          title: description
          description: The product's description.
        is_giftcard:
          type: boolean
          title: is_giftcard
          description: Whether the product is a gift card.
        discountable:
          type: boolean
          title: discountable
          description: Whether discounts can be applied on the product.
        images:
          type: array
          description: The product's images.
          items:
            type: object
            description: The image's details.
            required:
              - url
            properties:
              url:
                type: string
                title: url
                description: The image's URL.
              id:
                type: string
                title: id
                description: The image's ID.
        thumbnail:
          type: string
          title: thumbnail
          description: The product's thumbnail URL.
        handle:
          type: string
          title: handle
          description: The product's unique handle.
        status:
          type: string
          description: The product's status.
          enum:
            - draft
            - proposed
            - published
            - rejected
        type_id:
          type: string
          title: type_id
          description: The ID of the product's type.
        collection_id:
          type: string
          title: collection_id
          description: The ID of the product's collection.
        categories:
          type: array
          description: The product's categories.
          items:
            type: object
            description: The product's category.
            required:
              - id
            properties:
              id:
                type: string
                title: id
                description: The category's ID.
        tags:
          type: array
          description: The product's tags.
          items:
            type: object
            description: The product's tag.
            required:
              - id
            properties:
              id:
                type: string
                title: id
                description: The tag's ID.
        options:
          type: array
          description: The product's options.
          items:
            $ref: '#/components/schemas/AdminUpdateProductOption'
        variants:
          type: array
          description: The product's variants. You can add new variants or update existing ones, passing their IDs in the object.
          items:
            oneOf:
              - $ref: '#/components/schemas/AdminCreateProductVariant'
              - $ref: '#/components/schemas/AdminUpdateProductVariant'
        sales_channels:
          type: array
          description: The sales channels that the product is available in.
          items:
            type: object
            description: The sales channel's details.
            required:
              - id
            properties:
              id:
                type: string
                title: id
                description: The sales channel's ID.
        weight:
          type: number
          title: weight
          description: The product's weight.
        length:
          type: number
          title: length
          description: The product's length.
        height:
          type: number
          title: height
          description: The product's height.
        width:
          type: number
          title: width
          description: The product's width.
        hs_code:
          type: string
          title: hs_code
          description: The product's HS code.
        mid_code:
          type: string
          title: mid_code
          description: The product's MID code.
        origin_country:
          type: string
          title: origin_country
          description: The product's origin country.
        material:
          type: string
          title: material
          description: The product's material.
        metadata:
          type: object
          description: The product's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        external_id:
          type: string
          title: external_id
          description: The ID of the product in an external or third-party system.
        id:
          type: string
          title: id
          description: The product's ID.
        shipping_profile_id:
          type: string
          title: shipping_profile_id
          description: The ID of the product's shipping profile.
      required:
        - id
    AdminBatchUpdateProductVariant:
      type: object
      description: The properties to update of a product variant.
      x-schemaName: AdminBatchUpdateProductVariant
      properties:
        title:
          type: string
          title: title
          description: The product variant's title.
        sku:
          type: string
          title: sku
          description: The product variant's SKU.
        ean:
          type: string
          title: ean
          description: The product variant's EAN.
        upc:
          type: string
          title: upc
          description: The product variant's UPC.
        barcode:
          type: string
          title: barcode
          description: The product variant's barcode.
        hs_code:
          type: string
          title: hs_code
          description: The product variant's HS code.
        mid_code:
          type: string
          title: mid_code
          description: The product variant's MID code.
        allow_backorder:
          type: boolean
          title: allow_backorder
          description: Whether customers can order the variant even if it's not in stock.
        manage_inventory:
          type: boolean
          title: manage_inventory
          description: Whether the Medusa application manages the variant's inventory. If disabled, the product variant is always considered in stock.
        variant_rank:
          type: number
          title: variant_rank
          description: The product variant's rank among its siblings.
        weight:
          type: number
          title: weight
          description: The product variant's weight.
        length:
          type: number
          title: length
          description: The product variant's length.
        height:
          type: number
          title: height
          description: The product variant's height.
        width:
          type: number
          title: width
          description: The product variant's width.
        origin_country:
          type: string
          title: origin_country
          description: The product variant's origin country.
        material:
          type: string
          title: material
          description: The product variant's material.
        metadata:
          type: object
          description: The product variant's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        prices:
          type: array
          description: The product variant's prices.
          items:
            $ref: '#/components/schemas/AdminCreateProductVariantPrice'
        options:
          type: object
          description: The product variant's options.
        id:
          type: string
          title: id
          description: The update's ID.
        thumbnail:
          type: string
          title: thumbnail
          description: The variant's thumbnail.
      required:
        - id
    AdminBatchVariantImagesRequest:
      type: object
      description: Details of the associations between images and a product variant to manage.
      x-schemaName: AdminBatchVariantImagesRequest
      properties:
        add:
          type: array
          description: The IDs of product images to add to the variant.
          items:
            type: string
            title: add
            description: The ID of the image to add.
        remove:
          type: array
          description: The IDs of product images to remove from the variant.
          items:
            type: string
            title: remove
            description: The ID of the image to remove.
    AdminBatchVariantImagesResponse:
      type: object
      description: Result of managing the associations between images and a product variant.
      x-schemaName: AdminBatchVariantImagesResponse
      required:
        - added
        - removed
      properties:
        added:
          type: array
          description: The IDs of product images added to the variant.
          items:
            type: string
            title: added
            description: The ID of the image added.
        removed:
          type: array
          description: The IDs of product images removed from the variant.
          items:
            type: string
            title: removed
            description: The ID of the image removed.
    AdminCampaign:
      type: object
      description: The campaign's details.
      x-schemaName: AdminCampaign
      required:
        - id
        - name
        - description
        - currency
        - campaign_identifier
        - starts_at
        - ends_at
        - budget
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The campaign's ID.
        name:
          type: string
          title: name
          description: The campaign's name.
        description:
          type: string
          title: description
          description: The campaign's description.
        currency:
          type: string
          title: currency
          description: The campaign's currency.
        campaign_identifier:
          type: string
          title: campaign_identifier
          description: The campaign's identifier.
        starts_at:
          type: string
          title: starts_at
          description: The date and time that the campaign starts.
        ends_at:
          type: string
          title: ends_at
          description: The date and time that the campaign ends.
        budget:
          type: object
          description: The campaign's budget.
          required:
            - id
            - type
            - currency_code
            - limit
            - used
            - attribute
          properties:
            id:
              type: string
              title: id
              description: The budget's ID.
            type:
              type: string
              description: |
                The budget's type. `spend` means the limit is set on the total amount discounted by the campaign's promotions; `usage` means the limit is set on the total number of times the campaign's promotions can be used.
              enum:
                - spend
                - usage
            currency_code:
              type: string
              title: currency_code
              description: The budget's currency code.
            limit:
              type: number
              title: limit
              description: The budget's limit.
            used:
              type: number
              title: used
              description: |
                How much of the budget has been used. If the limit is `spend`, this property holds the total amount discounted so far. If the limit is `usage`, it holds the number of times the campaign's promotions have been used so far.
            attribute:
              type: string
              title: attribute
              description: The cart attribute to limit the budget by.
              externalDocs:
                url: https://docs.medusajs.com/resources/commerce-modules/promotion/campaign#attribute-based-budgets
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the campaign was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the campaign was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the campaign was deleted.
    AdminCampaignResponse:
      type: object
      description: The campaign's details.
      x-schemaName: AdminCampaignResponse
      required:
        - campaign
      properties:
        campaign:
          $ref: '#/components/schemas/AdminCampaign'
    AdminCapturePayment:
      type: object
      description: The payment's details.
      properties:
        amount:
          type: number
          title: amount
          description: The amount to capture.
      x-schemaName: AdminCapturePayment
    AdminClaim:
      type: object
      description: The claim's details.
      x-schemaName: AdminClaim
      required:
        - order
        - return
        - id
        - type
        - order_id
        - display_id
        - order_version
        - created_at
        - updated_at
        - canceled_at
        - additional_items
        - claim_items
      properties:
        id:
          type: string
          title: id
          description: The claim's ID.
        order_id:
          type: string
          title: order_id
          description: The ID of the order associated with the claim.
        claim_items:
          type: array
          description: The order items targetted by the claim.
          items:
            $ref: '#/components/schemas/BaseClaimItem'
        additional_items:
          type: array
          description: The outbound or new items of the claim.
          items:
            $ref: '#/components/schemas/BaseClaimItem'
        return:
          $ref: '#/components/schemas/AdminReturn'
        return_id:
          type: string
          title: return_id
          description: The ID of the associated return.
        no_notification:
          type: boolean
          title: no_notification
          description: Whether the customer should be notified about changes in the claim.
        refund_amount:
          type: number
          title: refund_amount
          description: The amount to be refunded.
        display_id:
          type: number
          title: display_id
          description: The claim's display ID.
        shipping_methods:
          type: array
          description: The claim's shipping methods.
          items:
            $ref: '#/components/schemas/AdminOrderShippingMethod'
        transactions:
          type: array
          description: The claim's transactions.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/order/transactions
            description: Learn more about transactions of orders and associated models.
          items:
            $ref: '#/components/schemas/BaseOrderTransaction'
        metadata:
          type: object
          description: The claim's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The claim's creation date.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The claim's update date.
        order:
          $ref: '#/components/schemas/AdminOrder'
        type:
          type: string
          description: The claim's type.
          enum:
            - replace
            - refund
        order_version:
          type: string
          title: order_version
          description: The version of the order when the claim is applied.
        created_by:
          type: string
          title: created_by
          description: The ID of the user that created the claim.
        canceled_at:
          type: string
          title: canceled_at
          description: The date the claim was canceled.
          format: date-time
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the claim was deleted.
    AdminClaimAddOutboundShipping:
      type: object
      description: The details of the shipping method used to ship outbound items.
      x-schemaName: AdminClaimAddOutboundShipping
      required:
        - shipping_option_id
      properties:
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the associated shipping option.
        custom_amount:
          type: number
          title: custom_amount
          description: Set a custom price for the shipping method.
        description:
          type: string
          title: description
          description: The shipping method's description.
        internal_note:
          type: string
          title: internal_note
          description: A note only viewed by admin users.
        metadata:
          type: object
          description: The claim's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminClaimDeleteResponse:
      type: object
      description: The details of the deleted claim.
      x-schemaName: AdminClaimDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The claim's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: claim
        deleted:
          type: boolean
          title: deleted
          description: Whether the claim was deleted.
    AdminClaimListResponse:
      type: object
      description: The paginated list of claims.
      x-schemaName: AdminClaimListResponse
      required:
        - limit
        - offset
        - count
        - claims
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        claims:
          type: array
          description: The list of claims.
          items:
            $ref: '#/components/schemas/AdminClaim'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminClaimOrderResponse:
      type: object
      description: The created claim's details.
      x-schemaName: AdminClaimOrderResponse
      required:
        - order
        - claim
      properties:
        order:
          $ref: '#/components/schemas/Order'
        claim:
          $ref: '#/components/schemas/AdminClaim'
    AdminClaimPreviewResponse:
      type: object
      description: The details of the claim, as well as a preview of the order when the claim is applied.
      x-schemaName: AdminClaimPreviewResponse
      required:
        - order_preview
        - claim
      properties:
        order_preview:
          $ref: '#/components/schemas/AdminOrderPreview'
        claim:
          $ref: '#/components/schemas/AdminClaim'
    AdminClaimRequestResponse:
      type: object
      description: The details of the claim, its return, and a preview of the order when the claim is applied.
      x-schemaName: AdminClaimRequestResponse
      required:
        - return
        - order_preview
        - claim
      properties:
        return:
          $ref: '#/components/schemas/AdminReturn'
        order_preview:
          $ref: '#/components/schemas/AdminOrderPreview'
        claim:
          $ref: '#/components/schemas/AdminClaim'
    AdminClaimResponse:
      type: object
      description: The claim's details.
      x-schemaName: AdminClaimResponse
      required:
        - claim
      properties:
        claim:
          $ref: '#/components/schemas/AdminClaim'
    AdminClaimReturnPreviewResponse:
      type: object
      description: The details of the claim's return, with a preview of the order when the claim's return is applied.
      x-schemaName: AdminClaimReturnPreviewResponse
      required:
        - order_preview
        - return
      properties:
        order_preview:
          $ref: '#/components/schemas/AdminOrderPreview'
        return:
          $ref: '#/components/schemas/AdminReturn'
    AdminClaimUpdateInboundShipping:
      type: object
      description: The details to update in the shipping method.
      x-schemaName: AdminClaimUpdateInboundShipping
      properties:
        custom_amount:
          type: number
          title: custom_amount
          description: The shipping method's custom amount.
        internal_note:
          type: string
          title: internal_note
          description: A note only viewed by admin users.
        metadata:
          type: object
          description: The claim's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminClaimUpdateOutboundShipping:
      type: object
      description: The details to update in the shipping method.
      x-schemaName: AdminClaimUpdateOutboundShipping
      properties:
        custom_amount:
          type: number
          title: custom_amount
          description: The shipping method's custom amount.
        internal_note:
          type: string
          title: internal_note
          description: A note only viewed by admin users.
        metadata:
          type: object
          description: The claim's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCollection:
      type: object
      description: The product collection's details.
      x-schemaName: AdminCollection
      required:
        - id
        - title
        - handle
        - created_at
        - updated_at
        - deleted_at
        - metadata
      properties:
        id:
          type: string
          title: id
          description: The collection's ID.
        title:
          type: string
          title: title
          description: The collection's title.
        handle:
          type: string
          title: handle
          description: The collection's handle.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The collection's creation date.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The collection's update date.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The collection's deletion date.
        products:
          type: array
          description: The collection's products.
          items:
            $ref: '#/components/schemas/BaseProduct'
        metadata:
          type: object
          description: The collection's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        translations:
          type: array
          description: The collection's translations.
          items:
            $ref: '#/components/schemas/AdminTranslation'
    AdminCollectionDeleteResponse:
      type: object
      description: The details of the deleted collection.
      x-schemaName: AdminCollectionDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The collection's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: collection
        deleted:
          type: boolean
          title: deleted
          description: Whether the collection was deleted.
    AdminCollectionListResponse:
      type: object
      description: The paginated list of product collections.
      x-schemaName: AdminCollectionListResponse
      required:
        - limit
        - offset
        - count
        - collections
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned results.
        count:
          type: number
          title: count
          description: The total number of items.
        collections:
          type: array
          description: The list of product collections.
          items:
            $ref: '#/components/schemas/AdminCollection'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminCollectionResponse:
      type: object
      description: The collection's details.
      x-schemaName: AdminCollectionResponse
      required:
        - collection
      properties:
        collection:
          $ref: '#/components/schemas/AdminCollection'
    AdminColumn:
      type: object
      description: The details of a column in a view configuration.
      x-schemaName: AdminColumn
      required:
        - id
        - name
        - field
        - sortable
        - hideable
        - default_visible
        - data_type
      properties:
        id:
          type: string
          title: id
          description: The column's ID.
        name:
          type: string
          title: name
          description: The column's name. This is displayed in the view header.
        description:
          type: string
          title: description
          description: The column's description.
        field:
          type: string
          title: field
          description: The column's field in the entity.
        sortable:
          type: boolean
          title: sortable
          description: Whether the column is sortable.
        hideable:
          type: boolean
          title: hideable
          description: Whether the column is hideable.
        default_visible:
          type: boolean
          title: default_visible
          description: Whether the column is visible by default.
        data_type:
          type: string
          description: The data type of the column's value.
          enum:
            - string
            - number
            - boolean
            - object
            - date
            - currency
            - enum
        semantic_type:
          type: string
          title: semantic_type
          description: The column's semantic type. It can be `computed`, or other primitive types.
        context:
          type: string
          title: context
          description: The column's context. It can be `display` or `generic`.
        computed:
          type: object
          description: A computed column's details. Only available if the column's `semantic_type` is `computed`.
          required:
            - type
            - required_fields
            - optional_fields
          properties:
            type:
              type: string
              title: type
              description: The computed's type for rendering.
            required_fields:
              type: array
              description: The required fields in the computed column.
              items:
                type: string
                title: required_fields
                description: A required field in the computed column.
            optional_fields:
              type: array
              description: The optional fields in the computed column.
              items:
                type: string
                title: optional_fields
                description: An optional field in the computed column.
        relationship:
          type: object
          description: The relationship details. Only available for relationship columns.
          required:
            - entity
            - field
          properties:
            entity:
              type: string
              title: entity
              description: The related entity.
            field:
              type: string
              title: field
              description: The field in the related entity.
        default_order:
          type: number
          title: default_order
          description: The column's sort order in the default view configuration.
        category:
          type: string
          description: The column's category.
          enum:
            - status
            - metadata
            - identifier
            - timestamp
            - metric
            - relationship
    AdminConfirmReceiveReturn:
      type: object
      description: The confirmation's details.
      x-schemaName: AdminConfirmReceiveReturn
      properties:
        no_notification:
          type: boolean
          title: no_notification
          description: Whether to send the customer a notification about the confirmation.
    AdminConfirmReturnRequest:
      type: object
      description: The confirmation's details.
      x-schemaName: AdminConfirmReturnRequest
      properties:
        no_notification:
          type: boolean
          title: no_notification
          description: Whether to send the customer a notification about the confirmation.
    AdminCreateApiKey:
      type: object
      description: The API key's details.
      x-schemaName: AdminCreateApiKey
      required:
        - title
        - type
      properties:
        title:
          type: string
          title: title
          description: The API key's title.
        type:
          type: string
          description: The API key's type. Use `secret` for a user's API key; Use `publishable` for Publishable API keys.
          enum:
            - publishable
            - secret
    AdminCreateCalculatedShippingOption:
      type: object
      description: The calculated shipping option's details.
      x-schemaName: AdminCreateCalculatedShippingOption
      required:
        - price_type
        - name
        - service_zone_id
        - shipping_profile_id
        - provider_id
      properties:
        price_type:
          type: string
          title: price_type
          description: The calculated shipping option's price type.
          enum:
            - calculated
            - flat
        name:
          type: string
          title: name
          description: The calculated shipping option's name.
        service_zone_id:
          type: string
          title: service_zone_id
          description: The ID of the associated service zone.
        shipping_profile_id:
          type: string
          title: shipping_profile_id
          description: The ID of the associated shipping profile.
        data:
          type: object
          description: The calculated shipping option's data.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#data-property
        provider_id:
          type: string
          title: provider_id
          description: The ID of the fulfillment provider handling this calculated shipping option.
        type:
          $ref: '#/components/schemas/AdminCreateShippingOptionType'
        type_id:
          type: string
          title: type_id
          description: The ID of the shipping option type that this shipping option belongs to.
        rules:
          type: array
          description: The calculated shipping option's rules.
          items:
            $ref: '#/components/schemas/AdminCreateShippingOptionRule'
        metadata:
          type: object
          description: The shipping option's metadata, can hold custom key-value pairs.
    AdminCreateClaim:
      type: object
      description: The claim's details.
      x-schemaName: AdminCreateClaim
      required:
        - type
        - order_id
      properties:
        type:
          type: string
          description: The claim's type.
          enum:
            - refund
            - replace
        order_id:
          type: string
          title: order_id
          description: The ID of the order the claim is created for.
        description:
          type: string
          title: description
          description: The claim's description.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        reason_id:
          type: string
          title: reason_id
          description: The ID of the associated return reason.
        metadata:
          type: object
          description: The claim's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateCustomerGroup:
      type: object
      description: The customer group's details.
      x-schemaName: AdminCreateCustomerGroup
      required:
        - name
      properties:
        name:
          type: string
          title: name
          description: The customer group's name.
        metadata:
          type: object
          description: The customer group's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateExchange:
      type: object
      description: The exchange's details.
      x-schemaName: AdminCreateExchange
      required:
        - order_id
      properties:
        order_id:
          type: string
          title: order_id
          description: The ID of the order this exchange is created for.
        description:
          type: string
          title: description
          description: The exchange's description.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        metadata:
          type: object
          description: The exchange's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateFlatRateShippingOption:
      type: object
      description: The flat rate shipping option's details.
      x-schemaName: AdminCreateFlatRateShippingOption
      required:
        - price_type
        - prices
        - name
        - service_zone_id
        - shipping_profile_id
        - provider_id
      properties:
        name:
          type: string
          title: name
          description: The flat-rate shipping option's name.
        service_zone_id:
          type: string
          title: service_zone_id
          description: The ID of the associated service zone.
        shipping_profile_id:
          type: string
          title: shipping_profile_id
          description: The ID of the associated shipping profile.
        data:
          type: object
          description: The flat-rate shipping option's data, useful for the fulfillment provider handling its processing.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#data-property
        price_type:
          type: string
          description: The shipping option's price type. If `flat`, the shipping option has a fixed price set in `prices`. Otherwise, the shipping option's price is calculated by the fulfillment provider.
          enum:
            - flat
            - calculated
        provider_id:
          type: string
          title: provider_id
          description: The ID of the fulfillment provider handling this shipping option.
        type:
          $ref: '#/components/schemas/AdminCreateShippingOptionType'
        prices:
          type: array
          description: The shipping option's prices.
          items:
            oneOf:
              - type: object
                description: The price's details.
                x-schemaName: AdminCreateShippingOptionPriceWithCurrency
                required:
                  - currency_code
                  - amount
                properties:
                  currency_code:
                    type: string
                    title: currency_code
                    description: The price's currency code.
                    example: usd
                  amount:
                    type: number
                    title: amount
                    description: The price's amount.
                  rules:
                    type: array
                    description: The price's rules.
                    items:
                      type: object
                      description: The rule's details.
                      x-schemaName: PriceRule
                      required:
                        - attribute
                        - operator
                        - value
                      properties:
                        attribute:
                          type: string
                          title: attribute
                          description: The rule's attribute.
                        operator:
                          type: string
                          description: The rule's operator.
                          enum:
                            - gt
                            - lt
                            - eq
                            - lte
                            - gte
                        value:
                          type: number
                          title: value
                          description: The rule's value.
              - type: object
                description: The price's details.
                x-schemaName: AdminCreateShippingOptionPriceWithRegion
                required:
                  - region_id
                  - amount
                properties:
                  region_id:
                    type: string
                    title: region_id
                    description: The ID of the region this price is used in.
                  amount:
                    type: number
                    title: amount
                    description: The price's amount.
                  rules:
                    type: array
                    description: The price's rules.
                    items:
                      type: object
                      description: The rule's details.
                      x-schemaName: PriceRule
                      required:
                        - attribute
                        - operator
                        - value
                      properties:
                        attribute:
                          type: string
                          title: attribute
                          description: The rule's attribute.
                        operator:
                          type: string
                          description: The rule's operator.
                          enum:
                            - gt
                            - lt
                            - eq
                            - lte
                            - gte
                        value:
                          type: number
                          title: value
                          description: The rule's value.
        type_id:
          type: string
          title: type_id
          description: The ID of the shipping option type that this shipping option belongs to.
        rules:
          type: array
          description: The shipping option's rules.
          items:
            $ref: '#/components/schemas/AdminCreateShippingOptionRule'
        metadata:
          type: object
          description: The shipping option's metadata.
    AdminCreateFulfillment:
      type: object
      description: The filfillment's details.
      x-schemaName: AdminCreateFulfillment
      required:
        - location_id
        - provider_id
        - delivery_address
        - items
        - labels
        - order_id
      properties:
        location_id:
          type: string
          title: location_id
          description: The ID of the location the items are fulfilled from.
        provider_id:
          type: string
          title: provider_id
          description: The ID of the provider handling this fulfillment.
        delivery_address:
          $ref: '#/components/schemas/AdminFulfillmentDeliveryAddress'
        items:
          type: array
          description: The items to fulfill.
          items:
            $ref: '#/components/schemas/AdminCreateFulfillmentItem'
        labels:
          type: array
          description: The labels for the fulfillment's shipments.
          items:
            $ref: '#/components/schemas/AdminCreateFulfillmentLabel'
        order_id:
          type: string
          title: order_id
          description: The ID of the order this fulfillment is created for.
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the shipping option used in the order.
        data:
          type: object
          description: Any data useful for the fulfillment provider to handle the fulfillment.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#data-property
            description: Learn more about the data property.
        packed_at:
          type: string
          title: packed_at
          description: The date and time the fulfillment was packed.
          format: date-time
        shipped_at:
          type: string
          title: shipped_at
          description: The date and time the fulfillment was shipped.
          format: date-time
        delivered_at:
          type: string
          title: delivered_at
          description: The date and time the fulfillment was delivered.
          format: date-time
        canceled_at:
          type: string
          title: canceled_at
          description: The date and time the fulfillment was canceled.
          format: date-time
        metadata:
          type: object
          description: The fulfillment's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateFulfillmentItem:
      type: object
      description: An item to fulfill.
      required:
        - title
        - sku
        - quantity
        - barcode
      properties:
        title:
          type: string
          title: title
          description: The item's title.
        sku:
          type: string
          title: sku
          description: The item's SKU.
        quantity:
          type: number
          title: quantity
          description: The quantity to fulfill of the item.
        barcode:
          type: string
          title: barcode
          description: The item's barcode.
        line_item_id:
          type: string
          title: line_item_id
          description: The ID of the associated line item.
        inventory_item_id:
          type: string
          title: inventory_item_id
          description: The ID of the inventory item associated with the underlying variant.
      x-schemaName: AdminCreateFulfillmentItem
    AdminCreateFulfillmentLabel:
      type: object
      description: Details of the fulfillment label to create.
      required:
        - tracking_number
        - tracking_url
        - label_url
      properties:
        tracking_number:
          type: string
          title: tracking_number
          description: The label's tracking number.
        tracking_url:
          type: string
          title: tracking_url
          description: The label's tracking URL.
        label_url:
          type: string
          title: label_url
          description: The label's URL.
      x-schemaName: AdminCreateFulfillmentLabel
    AdminCreateFulfillmentSetServiceZone:
      type: object
      description: Details of the service zone to create for the fulfillment set.
      required:
        - name
        - geo_zones
      properties:
        name:
          type: string
          title: name
          description: The service zone's name.
        geo_zones:
          type: array
          description: The service zone's geo zones.
          items:
            oneOf:
              - type: object
                description: A country geo zone.
                required:
                  - metadata
                  - country_code
                  - type
                properties:
                  metadata:
                    type: object
                    description: The geo zone's metadata.
                    externalDocs:
                      url: https://docs.medusajs.com/api/admin#manage-metadata
                      description: Learn how to manage metadata
                  country_code:
                    type: string
                    title: country_code
                    description: The geo zone's country code.
                  type:
                    type: string
                    title: type
                    description: The geo zone's type.
                    default: country
              - type: object
                description: A province geo zone.
                required:
                  - metadata
                  - country_code
                  - type
                  - province_code
                properties:
                  metadata:
                    type: object
                    description: The geo zone's metadata.
                    externalDocs:
                      url: https://docs.medusajs.com/api/admin#manage-metadata
                      description: Learn how to manage metadata
                  country_code:
                    type: string
                    title: country_code
                    description: The geo zone's country code.
                  type:
                    type: string
                    title: type
                    description: The geo zone's type.
                    default: province
                  province_code:
                    type: string
                    title: province_code
                    description: The geo zone's ISO 3166-2 province code. Must be lower-case.
                    example: us-ca
                    externalDocs:
                      url: https://en.wikipedia.org/wiki/ISO_3166-2
                      description: Learn more about ISO 3166-2
              - type: object
                description: A city geo zone
                required:
                  - metadata
                  - country_code
                  - type
                  - province_code
                  - city
                properties:
                  metadata:
                    type: object
                    description: The geo zone's metadata.
                    externalDocs:
                      url: https://docs.medusajs.com/api/admin#manage-metadata
                      description: Learn how to manage metadata
                  country_code:
                    type: string
                    title: country_code
                    description: The geo zone's country code.
                  type:
                    type: string
                    title: type
                    description: The geo zone's type.
                    default: city
                  province_code:
                    type: string
                    title: province_code
                    description: The geo zone's ISO 3166-2 province code. Must be lower-case.
                    example: us-ca
                    externalDocs:
                      url: https://en.wikipedia.org/wiki/ISO_3166-2
                      description: Learn more about ISO 3166-2
                  city:
                    type: string
                    title: city
                    description: The geo zone's city.
              - type: object
                description: A ZIP geo zone.
                required:
                  - metadata
                  - country_code
                  - type
                  - province_code
                  - city
                  - postal_expression
                properties:
                  metadata:
                    type: object
                    description: The geo zone's metadata.
                    externalDocs:
                      url: https://docs.medusajs.com/api/admin#manage-metadata
                      description: Learn how to manage metadata
                  country_code:
                    type: string
                    title: country_code
                    description: The geo zone's country code.
                  type:
                    type: string
                    title: type
                    description: The geo zone's type.
                    default: zip
                  province_code:
                    type: string
                    title: province_code
                    description: The geo zone's ISO 3166-2 province code. Must be lower-case.
                    example: us-ca
                    externalDocs:
                      url: https://en.wikipedia.org/wiki/ISO_3166-2
                      description: Learn more about ISO 3166-2
                  city:
                    type: string
                    title: city
                    description: The geo zone's city.
                  postal_expression:
                    type: object
                    description: The geo zone's postal expression or ZIP code.
      x-schemaName: AdminCreateFulfillmentSetServiceZone
    AdminCreateFulfillmentShipment:
      type: object
      description: Details of the shipment to create for a fulfillment.
      x-schemaName: AdminCreateFulfillmentShipment
      required:
        - labels
      properties:
        labels:
          type: array
          description: The shipment's labels.
          items:
            $ref: '#/components/schemas/AdminCreateFulfillmentLabel'
    AdminCreateGiftCardParams:
      type: object
      description: The details of the gift card to create.
      x-schemaName: AdminCreateGiftCardParams
      required:
        - code
        - value
        - currency_code
        - expires_at
        - reference_id
        - reference
        - line_item_id
        - customer_id
        - metadata
      properties:
        code:
          type: string
          title: code
          description: The gift card's code.
        value:
          type: number
          title: value
          description: The gift card's amount.
          example: 20
        currency_code:
          type: string
          title: currency_code
          description: The gift card's currency code.
          example: usd
        expires_at:
          type: string
          title: expires_at
          description: The date the gift card expires at.
        reference_id:
          type: string
          title: reference_id
          description: The gift card's reference ID.
        reference:
          type: string
          title: reference
          description: The gift card's reference.
        line_item_id:
          type: string
          title: line_item_id
          description: The ID of the line item associated with the gift card.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer associated with the gift card.
        metadata:
          type: object
          description: The gift card's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateInventoryItem:
      type: object
      description: The inventory item's details.
      x-schemaName: AdminCreateInventoryItem
      properties:
        sku:
          type: string
          title: sku
          description: The inventory item's SKU.
        hs_code:
          type: string
          title: hs_code
          description: The inventory item's HS code.
        weight:
          type: number
          title: weight
          description: The inventory item's weight.
        length:
          type: number
          title: length
          description: The inventory item's length.
        height:
          type: number
          title: height
          description: The inventory item's height.
        width:
          type: number
          title: width
          description: The inventory item's width.
        origin_country:
          type: string
          title: origin_country
          description: The inventory item's origin country.
        mid_code:
          type: string
          title: mid_code
          description: The inventory item's mid code.
        material:
          type: string
          title: material
          description: The inventory item's material.
        title:
          type: string
          title: title
          description: The inventory item's title.
        description:
          type: string
          title: description
          description: The description of the variant associated with the inventory item.
        requires_shipping:
          type: boolean
          title: requires_shipping
          description: Whether the item requires shipping.
        thumbnail:
          type: string
          title: thumbnail
          description: The inventory item's thumbnail.
        metadata:
          type: object
          description: The inventory item's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateOrderCreditLine:
      type: object
      description: The details of a credit line to add to an order.
      x-schemaName: AdminCreateOrderCreditLine
      required:
        - amount
        - reference
        - reference_id
      properties:
        amount:
          type: number
          title: amount
          description: The amount of the credit line.
          example: 100
        reference:
          type: string
          title: reference
          description: The name of the table that the credit line is referencing.
          example: order
        reference_id:
          type: string
          title: reference_id
          description: The ID of a record in the table that the credit line is referencing.
          example: order_123
        metadata:
          type: object
          description: The credit line's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreatePaymentCollection:
      type: object
      description: The payment collection's details.
      required:
        - order_id
        - amount
      properties:
        order_id:
          type: string
          title: order_id
          description: The ID of the associated order.
        amount:
          type: number
          title: amount
          description: The amount to be paid.
      x-schemaName: AdminCreatePaymentCollection
    AdminCreatePriceList:
      type: object
      description: The price list's details.
      x-schemaName: AdminCreatePriceList
      required:
        - title
        - description
      properties:
        title:
          type: string
          title: title
          description: The price list's title.
        description:
          type: string
          title: description
          description: The price list's description.
        starts_at:
          type: string
          title: starts_at
          description: The date and time the price list starts at.
          format: date-time
        ends_at:
          type: string
          title: ends_at
          description: The date and time the price list ends at.
          format: date-time
        status:
          type: string
          description: The price list's status.
          enum:
            - active
            - draft
        type:
          type: string
          description: The price list's type.
          enum:
            - sale
            - override
        rules:
          type: object
          description: The price list's rules.
          example:
            product_category_id: pcat_123
        prices:
          type: array
          description: The price list's prices.
          items:
            $ref: '#/components/schemas/AdminCreatePriceListPrice'
    AdminCreatePriceListPrice:
      type: object
      description: The details of a price to be created within a price list.
      required:
        - currency_code
        - amount
        - variant_id
      properties:
        currency_code:
          type: string
          title: currency_code
          description: The price's currency code.
        amount:
          type: number
          title: amount
          description: The price's amount.
        variant_id:
          type: string
          title: variant_id
          description: The ID of the product variant this price is for.
        min_quantity:
          type: number
          title: min_quantity
          description: The minimum quantity required in the cart for this price to be applied.
        max_quantity:
          type: number
          title: max_quantity
          description: The maximum quantity in the cart that shouldn't be crossed for this price to be applied.
        rules:
          type: object
          description: The price's rules.
          example:
            region_id: reg_123
      x-schemaName: AdminCreatePriceListPrice
    AdminCreatePricePreference:
      type: object
      description: The price preference's details.
      x-schemaName: AdminCreatePricePreference
      properties:
        attribute:
          type: string
          title: attribute
          description: The name of the attribute the price preference applies on.
          example: currency_code
        value:
          type: string
          title: value
          description: The attribute's value.
          example: usd
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the price is tax inclusive if the value of the specified attribute matches the specified value.
    AdminCreateProduct:
      type: object
      description: The product's details.
      x-schemaName: AdminCreateProduct
      required:
        - title
        - options
      properties:
        title:
          type: string
          title: title
          description: The product's title.
        subtitle:
          type: string
          title: subtitle
          description: The product's subtitle.
        description:
          type: string
          title: description
          description: The product's description.
        is_giftcard:
          type: boolean
          title: is_giftcard
          description: Whether the product is a gift card.
        discountable:
          type: boolean
          title: discountable
          description: Whether the product is discountable.
        images:
          type: array
          description: The product's images.
          items:
            type: object
            description: A product's image details.
            required:
              - url
            properties:
              url:
                type: string
                title: url
                description: The image's URL.
        thumbnail:
          type: string
          title: thumbnail
          description: The URL of the product's thumbnail.
        handle:
          type: string
          title: handle
          description: The product's handle.
        status:
          type: string
          description: The product's status.
          enum:
            - draft
            - proposed
            - published
            - rejected
        type_id:
          type: string
          title: type_id
          description: The ID of the type the product belongs to.
        collection_id:
          type: string
          title: collection_id
          description: The ID of the collection the product belongs to.
        categories:
          type: array
          description: The categories the product belongs to.
          items:
            type: object
            description: A category's details.
            required:
              - id
            properties:
              id:
                type: string
                title: id
                description: The category's ID.
        tags:
          type: array
          description: The product's tags.
          items:
            type: object
            description: A tag's details.
            required:
              - id
            properties:
              id:
                type: string
                title: id
                description: The tag's ID.
        options:
          type: array
          description: The product's options.
          items:
            $ref: '#/components/schemas/AdminCreateProductOption'
        variants:
          type: array
          description: The product's variants.
          items:
            $ref: '#/components/schemas/AdminCreateProductVariant'
        sales_channels:
          type: array
          description: The sales channels the product is available in.
          items:
            type: object
            description: A sales channel's details.
            required:
              - id
            properties:
              id:
                type: string
                title: id
                description: The sales channel's ID.
        weight:
          type: number
          title: weight
          description: The product's weight.
        length:
          type: number
          title: length
          description: The product's length.
        height:
          type: number
          title: height
          description: The product's height.
        width:
          type: number
          title: width
          description: The product's width.
        hs_code:
          type: string
          title: hs_code
          description: The product's HS code.
        mid_code:
          type: string
          title: mid_code
          description: The product's MID code.
        origin_country:
          type: string
          title: origin_country
          description: The product's origin country.
        material:
          type: string
          title: material
          description: The product's material.
        metadata:
          type: object
          description: The product's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        external_id:
          type: string
          title: external_id
          description: The ID of the product in an external or third-party system.
        shipping_profile_id:
          type: string
          title: shipping_profile_id
          description: The ID of the product's shipping profile.
    AdminCreateProductCategory:
      type: object
      description: The product category's details.
      x-schemaName: AdminCreateProductCategory
      required:
        - name
      properties:
        name:
          type: string
          title: name
          description: The product category's name.
        description:
          type: string
          title: description
          description: The product category's description.
        handle:
          type: string
          title: handle
          description: The product category's handle.
        is_internal:
          type: boolean
          title: is_internal
          description: Whether the product category is only used and seen by admin users.
        is_active:
          type: boolean
          title: is_active
          description: Whether the product category is active.
        parent_category_id:
          type: string
          title: parent_category_id
          description: The ID of a category that's the parent of this one.
        rank:
          type: number
          title: rank
          description: The sorting order of the product category among sibling categories.
        metadata:
          type: object
          description: The product category's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateProductOption:
      type: object
      description: The product option's details.
      x-schemaName: AdminCreateProductOption
      required:
        - title
        - values
      properties:
        title:
          type: string
          title: title
          description: The product option's title.
        values:
          type: array
          description: The product option's values.
          items:
            type: string
            title: values
            description: A value.
    AdminCreateProductTag:
      type: object
      description: The product tag's details.
      x-schemaName: AdminCreateProductTag
      required:
        - value
      properties:
        value:
          type: string
          title: value
          description: The product tag's value.
        metadata:
          type: object
          description: The product tag's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateProductType:
      type: object
      description: The details of the product type to create.
      x-schemaName: AdminCreateProductType
      required:
        - value
      properties:
        metadata:
          type: object
          description: The product's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        value:
          type: string
          title: value
          description: The product type's value.
    AdminCreateProductVariant:
      type: object
      description: The product variant's details.
      x-schemaName: AdminCreateProductVariant
      required:
        - title
        - prices
      properties:
        title:
          type: string
          title: title
          description: The variant's title.
        sku:
          type: string
          title: sku
          description: The variant's SKU.
        ean:
          type: string
          title: ean
          description: The variant's EAN.
        upc:
          type: string
          title: upc
          description: The variant's UPC.
        barcode:
          type: string
          title: barcode
          description: The variant's barcode.
        hs_code:
          type: string
          title: hs_code
          description: The variant's HS code.
        mid_code:
          type: string
          title: mid_code
          description: The variant's MID code.
        allow_backorder:
          type: boolean
          title: allow_backorder
          description: Whether it's allowed to order this variant when it's out of stock.
        manage_inventory:
          type: boolean
          title: manage_inventory
          description: Whether Medusa manages the variant's inventory quantity. If disabled, the product variant is always considered in stock.
        variant_rank:
          type: number
          title: variant_rank
          description: The sorting order of the variant among other variants in the product.
        weight:
          type: number
          title: weight
          description: The variant's weight.
        length:
          type: number
          title: length
          description: The variant's length.
        height:
          type: number
          title: height
          description: The variant's height.
        width:
          type: number
          title: width
          description: The variant's width.
        origin_country:
          type: string
          title: origin_country
          description: The variant's origin country.
        material:
          type: string
          title: material
          description: The variant's material.
        metadata:
          type: object
          description: The variant's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        prices:
          type: array
          description: The variant's prices.
          items:
            $ref: '#/components/schemas/AdminCreateProductVariantPrice'
        options:
          type: object
          description: The variant's options, where the key is an option's name, and the value is the option's value.
          example:
            Color: Black
        inventory_items:
          type: array
          description: The variant's inventory items to create.
          items:
            $ref: '#/components/schemas/AdminCreateProductVariantInventoryKit'
    AdminCreateProductVariantInventoryKit:
      type: object
      description: The details of a variant's inventory item.
      x-schemaName: AdminCreateProductVariantInventoryKit
      required:
        - inventory_item_id
      properties:
        inventory_item_id:
          type: string
          title: inventory_item_id
          description: The inventory item's ID.
        required_quantity:
          type: number
          title: required_quantity
          description: The number of units a single quantity is equivalent to. For example, if a customer orders one quantity of the variant, Medusa checks the availability of the quantity multiplied by the value set for `required_quantity`. When the customer orders the quantity, Medusa reserves the ordered quantity multiplied by the value set for `required_quantity`.
    AdminCreateProductVariantPrice:
      type: object
      description: The details of a variant's price.
      x-schemaName: AdminCreateProductVariantPrice
      required:
        - currency_code
        - amount
      properties:
        currency_code:
          type: string
          title: currency_code
          description: The price's currency code.
        amount:
          type: number
          title: amount
          description: The price's amount.
        min_quantity:
          type: number
          title: min_quantity
          description: The minimum quantity that must be available in the cart for this price to apply.
        max_quantity:
          type: number
          title: max_quantity
          description: The maximum quantity that must not be surpassed in the cart for this price to apply.
        rules:
          type: object
          description: The price's rules.
          example:
            region_id: reg_123
          properties:
            region_id:
              type: string
              title: region_id
              description: The ID of a region.
          required:
            - region_id
    AdminCreatePromotionRule:
      type: object
      description: The promotion rule's details.
      x-schemaName: AdminCreatePromotionRule
      required:
        - operator
        - attribute
        - values
      properties:
        operator:
          type: string
          description: The operator used to check whether the buy rule applies on a cart. For example, `eq` means that the cart's value for the specified attribute must match the specified value.
          enum:
            - gte
            - lte
            - gt
            - lt
            - eq
            - ne
            - in
        description:
          type: string
          title: description
          description: The rule's description.
        attribute:
          type: string
          title: attribute
          description: The attribute to compare against when checking whether a promotion can be applied on a cart.
          example: items.product.id
        values:
          oneOf:
            - type: string
              title: values
              description: The attribute's value.
              example: prod_123
            - type: array
              description: The allowed attribute values.
              items:
                type: string
                title: values
                description: An attribute value.
                example: prod_123
    AdminCreateRefundReason:
      type: object
      description: The refund reason's details.
      x-schemaName: AdminCreateRefundReason
      required:
        - label
        - code
      properties:
        label:
          type: string
          title: label
          description: The refund reason's label.
        description:
          type: string
          title: description
          description: The refund reason's description.
        code:
          type: string
          title: code
          description: The refund reason's code.
        metadata:
          type: object
          description: The refund reason's metadata. Can hold custom key-value pairs.
    AdminCreateRegion:
      type: object
      description: The region's details.
      x-schemaName: AdminCreateRegion
      required:
        - name
        - currency_code
      properties:
        name:
          type: string
          title: name
          description: The region's name.
        currency_code:
          type: string
          title: currency_code
          description: The region's currency code.
          example: usd
        countries:
          type: array
          description: The region's countries.
          items:
            type: string
            title: countries
            description: A country code.
            example: us
        automatic_taxes:
          type: boolean
          title: automatic_taxes
          description: Whether taxes are calculated automatically during checkout in this region.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether prices in this region are tax inclusive.
        payment_providers:
          type: array
          description: The payment providers enabled in this region.
          items:
            type: string
            title: payment_providers
            description: A payment provider's ID.
            example: pp_stripe_stripe
        metadata:
          type: object
          description: The region's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateReservation:
      type: object
      description: The reservation's details.
      x-schemaName: AdminCreateReservation
      required:
        - location_id
        - inventory_item_id
        - quantity
      properties:
        line_item_id:
          type: string
          title: line_item_id
          description: The ID of the line item this reservation is created for.
        location_id:
          type: string
          title: location_id
          description: The ID of the location the quantity is reserved from.
        inventory_item_id:
          type: string
          title: inventory_item_id
          description: The ID of the inventory item associated with the line item's variant.
        quantity:
          type: number
          title: quantity
          description: The reserved quantity.
        description:
          type: string
          title: description
          description: The reservation's description.
        metadata:
          type: object
          description: The reservation's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateReturnReason:
      type: object
      description: The details of the return reason to create.
      x-schemaName: AdminCreateReturnReason
      required:
        - value
        - label
      properties:
        value:
          type: string
          title: value
          description: The return reason's value.
        label:
          type: string
          title: label
          description: The return reason's label.
        description:
          type: string
          title: description
          description: The return reason's description.
        parent_return_reason_id:
          type: string
          title: parent_return_reason_id
          description: The ID of the parent return reason.
        metadata:
          type: object
          description: The return reason's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateSalesChannel:
      type: object
      description: The sales channel's details.
      x-schemaName: AdminCreateSalesChannel
      required:
        - name
      properties:
        name:
          type: string
          title: name
          description: The sales channel's name.
        description:
          type: string
          title: description
          description: The sales channel's description.
        is_disabled:
          type: boolean
          title: is_disabled
          description: Whether the sales channel is disabled.
        metadata:
          type: object
          description: The sales channel's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateShippingOptionRule:
      type: object
      description: The details of the shipping option rule.
      x-schemaName: AdminCreateShippingOptionRule
      required:
        - operator
        - attribute
        - value
      properties:
        operator:
          type: string
          description: The operator used to check whether a rule applies.
          enum:
            - gt
            - lt
            - eq
            - ne
            - in
            - lte
            - gte
            - nin
        attribute:
          type: string
          title: attribute
          description: The name of a property or table that the rule applies to.
          example: customer_group
        value:
          oneOf:
            - type: string
              title: value
              description: A value of the attribute that enables this rule.
              example: cusgroup_123
            - type: array
              description: Values of the attribute that enable this rule.
              items:
                type: string
                title: value
                description: A value of the attribute that enables this rule.
                example: cusgroup_123
    AdminCreateShippingOptionType:
      type: object
      description: The shipping option type's details.
      x-schemaName: AdminCreateShippingOptionType
      required:
        - label
        - code
      properties:
        label:
          type: string
          title: label
          description: The type's label.
        description:
          type: string
          title: description
          description: The type's description.
        code:
          type: string
          title: code
          description: The type's code.
    AdminCreateShippingProfile:
      type: object
      description: The shipping profile's details.
      x-schemaName: AdminCreateShippingProfile
      required:
        - name
        - type
      properties:
        name:
          type: string
          title: name
          description: The shipping profile's name.
        type:
          type: string
          title: type
          description: The shipping profile's type.
        metadata:
          type: object
          description: The shipping profile's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateStockLocation:
      type: object
      description: The stock location's details.
      x-schemaName: AdminCreateStockLocation
      required:
        - name
      properties:
        name:
          type: string
          title: name
          description: The stock location's name.
        address_id:
          type: string
          title: address_id
          description: The ID of the stock location's address.
        address:
          $ref: '#/components/schemas/AdminUpsertStockLocationAddress'
        metadata:
          type: object
          description: The stock location's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateStockLocationFulfillmentSet:
      type: object
      description: The fulfillment set to create.
      required:
        - name
        - type
      properties:
        name:
          type: string
          title: name
          description: The fulfillment set's name.
        type:
          type: string
          title: type
          description: The fulfillment set's type.
      x-schemaName: AdminCreateStockLocationFulfillmentSet
    AdminCreateStoreCreditAccount:
      type: object
      description: The details of the store credit account to create.
      x-schemaName: AdminCreateStoreCreditAccount
      required:
        - currency_code
      properties:
        currency_code:
          type: string
          title: currency_code
          description: The store credit account's currency code.
          example: usd
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that the store credit account belongs to.
        metadata:
          type: object
          description: The store credit account's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateTaxRate:
      type: object
      description: The tax rate's details.
      x-schemaName: AdminCreateTaxRate
      required:
        - name
        - tax_region_id
        - code
      properties:
        name:
          type: string
          title: name
          description: The tax rate's name.
          example: VAT
        tax_region_id:
          type: string
          title: tax_region_id
          description: The ID of the tax region this rate belongs to.
        rate:
          type: number
          title: rate
          description: The rate to charge.
          example: 10
        code:
          type: string
          title: code
          description: The code the tax rate is identified by.
        rules:
          type: array
          description: The tax rate's rules.
          items:
            $ref: '#/components/schemas/AdminCreateTaxRateRule'
        is_default:
          type: boolean
          title: is_default
          description: Whether the tax rate is the default in its tax region.
        is_combinable:
          type: boolean
          title: is_combinable
          description: Whether the tax rate should be combined with parent rates.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/tax/tax-rates-and-rules#combinable-tax-rates
        metadata:
          type: object
          description: The tax rate's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminCreateTaxRateRule:
      type: object
      description: The tax rate rule's details.
      x-schemaName: AdminCreateTaxRateRule
      required:
        - reference
        - reference_id
      properties:
        reference:
          type: string
          title: reference
          description: The name of a table in the database that this rule points to.
          example: product_type
        reference_id:
          type: string
          title: reference_id
          description: The ID of a record in the table specified in reference.
          example: ptype_123
    AdminCreateTaxRegion:
      type: object
      description: The tax region's details.
      x-schemaName: AdminCreateTaxRegion
      required:
        - country_code
      properties:
        country_code:
          type: string
          title: country_code
          description: The tax region's country code.
          example: us
        province_code:
          type: string
          title: province_code
          description: The tax region's ISO 3166-2 province code. Must be lower-case.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        parent_id:
          type: string
          title: parent_id
          description: The ID of the parent tax region.
        default_tax_rate:
          type: object
          description: The tax region's default tax rate.
          required:
            - code
            - name
          properties:
            rate:
              type: number
              title: rate
              description: The rate to charge.
              example: 10
            code:
              type: string
              title: code
              description: The code the tax rate is identified by
            name:
              type: string
              title: name
              description: The default tax rate's name.
              example: VAT
            is_combinable:
              type: boolean
              description: Whether the tax rate should be combined with parent rates.
              externalDocs:
                url: https://docs.medusajs.com/resources/commerce-modules/tax/tax-rates-and-rules#combinable-tax-rates
            metadata:
              type: object
              description: The default tax rate's metadata, used to store custom key-value pairs.
              externalDocs:
                url: https://docs.medusajs.com/api/admin#manage-metadata
                description: Learn how to manage metadata
        metadata:
          type: object
          description: The tax region's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        provider_id:
          type: string
          title: provider_id
          description: The ID of the tax provider used to calculate the tax rate in this tax region.
    AdminCreateTranslationSettings:
      type: object
      description: The translation settings to create.
      x-schemaName: AdminCreateTranslationSettings
      required:
        - entity_type
        - fields
      properties:
        entity_type:
          type: string
          title: entity_type
          description: The entity type to create the translation settings for.
          example: product
        fields:
          type: array
          description: The fields to support translations for.
          items:
            type: string
            title: fields
            description: A field to support translations for.
            example: title
        is_active:
          type: boolean
          title: is_active
          description: Whether translations are active for the given entity type.
    AdminCreateVariantInventoryItem:
      type: object
      description: The details of the variant-inventory item association.
      x-schemaName: AdminCreateVariantInventoryItem
      required:
        - required_quantity
        - inventory_item_id
      properties:
        required_quantity:
          type: number
          title: required_quantity
          description: The quantity of the variant in the inventory item.
        inventory_item_id:
          type: string
          title: inventory_item_id
          description: The inventory item's ID.
    AdminCreateViewConfiguration:
      type: object
      description: The details of a view configuration to create.
      x-schemaName: AdminCreateViewConfiguration
      properties:
        is_system_default:
          type: boolean
          title: is_system_default
          description: Whether the view is the system default. If so, it will be used as the default view for all users that don't have a custom active view set.
        set_active:
          type: boolean
          title: set_active
          description: Whether the view is set as active.
        configuration:
          type: object
          description: The view's configuration.
          required:
            - visible_columns
            - column_order
          properties:
            visible_columns:
              type: array
              description: The configuration's visible columns.
              items:
                type: string
                title: visible_columns
                description: The visible column's name.
            column_order:
              type: array
              description: The columns in the order they should be displayed.
              items:
                type: string
                title: column_order
                description: The column's name.
            search:
              type: string
              title: search
              description: The search query used in the view.
            column_widths:
              type: object
              description: The column widths in the view.
            filters:
              type: object
              description: The filters applied to the view.
            sorting:
              type: object
              description: The sorting applied to the view.
              required:
                - id
                - desc
              properties:
                id:
                  type: string
                  title: id
                  description: The ID of the sorting column.
                desc:
                  type: boolean
                  title: desc
                  description: Whether the sorting is descending.
        name:
          type: string
          title: name
          description: The view's name.
    AdminCreateWorkflowsAsyncResponse:
      type: object
      description: The details of changing a workflow execution's step status.
      x-schemaName: AdminCreateWorkflowsAsyncResponse
      required:
        - transaction_id
        - step_id
      properties:
        transaction_id:
          type: string
          title: transaction_id
          description: The workflows execution's transaction ID.
        step_id:
          type: string
          title: step_id
          description: The ID of the step whose status was changed.
        response:
          description: Sets the step's response. It accepts any type.
        compensate_input:
          description: Sets the compensation function's input. It accepts any response.
        action:
          type: string
          description: Whether to invoke or compensate the step.
          enum:
            - invoke
            - compensate
    AdminCreateWorkflowsRun:
      type: object
      description: The details of the workflow to execute.
      x-schemaName: AdminCreateWorkflowsRun
      properties:
        input:
          description: The input to pass to the workflow. Can be of any type.
        transaction_id:
          type: string
          title: transaction_id
          description: The ID of the workflow execution's transaction.
    AdminCreditStoreCreditAccountParams:
      type: object
      description: The details of the credits to add to the store credit account.
      x-schemaName: AdminCreditStoreCreditAccountParams
      required:
        - amount
      properties:
        amount:
          type: number
          title: amount
          description: The credits to add to the store credit account.
        note:
          type: string
          title: note
          description: An internal note with more details on the credit addition.
    AdminCurrency:
      type: object
      description: The currency's currencies.
      x-schemaName: AdminCurrency
      required:
        - code
        - symbol
        - symbol_native
        - name
        - decimal_digits
        - rounding
        - created_at
        - updated_at
        - deleted_at
      properties:
        code:
          type: string
          title: code
          description: The currency's code.
          example: usd
        symbol:
          type: string
          title: symbol
          description: The currency's symbol.
          example: $
        symbol_native:
          type: string
          title: symbol_native
          description: The currency's native symbol, if different than the symbol.
          example: $
        name:
          type: string
          title: name
          description: The currency's name.
        decimal_digits:
          type: number
          title: decimal_digits
          description: The number of digits after the decimal for prices in this currency.
        rounding:
          type: number
          title: rounding
          description: The rounding percision applied on prices in this currency.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The currency's creation date.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The currency's update date.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The currency's deletion date.
    AdminCurrencyListResponse:
      type: object
      description: The paginated list of currencies.
      x-schemaName: AdminCurrencyListResponse
      required:
        - limit
        - offset
        - count
        - currencies
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        currencies:
          type: array
          description: The list of currencies.
          items:
            $ref: '#/components/schemas/AdminCurrency'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminCurrencyResponse:
      type: object
      description: The currency's details.
      x-schemaName: AdminCurrencyResponse
      required:
        - currency
      properties:
        currency:
          $ref: '#/components/schemas/AdminCurrency'
    AdminCustomer:
      type: object
      description: The customer's details.
      x-schemaName: AdminCustomer
      required:
        - has_account
        - addresses
        - id
        - email
        - default_billing_address_id
        - default_shipping_address_id
        - company_name
        - first_name
        - last_name
      properties:
        id:
          type: string
          title: id
          description: The customer's ID.
        has_account:
          type: boolean
          title: has_account
          description: Whether the customer is registered.
        groups:
          type: array
          description: The customer's groups.
          items:
            $ref: '#/components/schemas/AdminCustomerGroup'
        email:
          type: string
          title: email
          description: The customer's email.
          format: email
        default_billing_address_id:
          type: string
          title: default_billing_address_id
          description: The ID of the address used as the default billing address.
        default_shipping_address_id:
          type: string
          title: default_shipping_address_id
          description: The ID of the address used as the default shipping address.
        company_name:
          type: string
          title: company_name
          description: The customer's company name.
        first_name:
          type: string
          title: first_name
          description: The customer's first name.
        last_name:
          type: string
          title: last_name
          description: The customer's last name.
        addresses:
          type: array
          description: The customer's addresses.
          items:
            $ref: '#/components/schemas/AdminCustomerAddress'
        phone:
          type: string
          title: phone
          description: The customer's phone.
        metadata:
          type: object
          description: The customer's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_by:
          type: string
          title: created_by
          description: The ID of the user that created this customer, if available.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The customer's creation date.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The customer's update date.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The customer's deletion date.
    AdminCustomerAddress:
      type: object
      description: The customer's address.
      x-schemaName: AdminCustomerAddress
      required:
        - id
        - address_name
        - is_default_shipping
        - is_default_billing
        - customer_id
        - company
        - first_name
        - last_name
        - address_1
        - address_2
        - city
        - country_code
        - province
        - postal_code
        - phone
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The address's ID.
        address_name:
          type: string
          title: address_name
          description: The address's name.
        is_default_shipping:
          type: boolean
          title: is_default_shipping
          description: Whether the address is the default shipping address.
        is_default_billing:
          type: boolean
          title: is_default_billing
          description: Whether the address is the default billing address.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that this address belongs to.
        company:
          type: string
          title: company
          description: The customer's company.
        first_name:
          type: string
          title: first_name
          description: The customer's first name.
        last_name:
          type: string
          title: last_name
          description: The customer's last name.
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        city:
          type: string
          title: city
          description: The address's city.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
          example: us
        province:
          type: string
          title: province
          description: The address's lower-case ISO 3166-2 province code.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        phone:
          type: string
          title: phone
          description: The address's phone.
        metadata:
          type: object
          description: The address's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The address's creation date.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The address's update date.
    AdminCustomerAddressResponse:
      type: object
      description: The address's details.
      x-schemaName: AdminCustomerAddressResponse
      required:
        - address
      properties:
        address:
          $ref: '#/components/schemas/AdminCustomerAddress'
    AdminCustomerGroup:
      type: object
      description: The customer group's details.
      x-schemaName: AdminCustomerGroup
      required:
        - customers
        - id
        - name
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The customer group's ID.
        name:
          type: string
          title: name
          description: The customer group's name.
        customers:
          type: array
          description: The customer group's customers.
          items:
            type: object
        metadata:
          type: object
          description: The customer group's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The customer group's creation date.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The customer group's update date.
    AdminCustomerGroupResponse:
      type: object
      description: The customer group's details.
      x-schemaName: AdminCustomerGroupResponse
      required:
        - customer_group
      properties:
        customer_group:
          $ref: '#/components/schemas/AdminCustomerGroup'
    AdminCustomerInGroupFilters:
      type: object
      description: Filters to apply on customers to retrieve their groups.
      x-schemaName: AdminCustomerInGroupFilters
      properties:
        id:
          oneOf:
            - type: string
              title: id
              description: Filter by a customer's ID.
            - type: array
              description: Filter by customer IDs.
              items:
                type: string
                title: id
                description: A customer's ID.
        email:
          oneOf:
            - type: string
              title: email
              description: Filter by a customer's email.
              format: email
            - type: array
              description: Filter by customer emails.
              items:
                type: string
                title: email
                description: A customer's email.
                format: email
            - type: object
              description: Apply filters on the customer's email.
              properties:
                $and:
                  type: array
                  description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
                  items:
                    type: object
                  title: $and
                $or:
                  type: array
                  description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
                  items:
                    type: object
                  title: $or
                $eq:
                  oneOf:
                    - type: string
                      title: $eq
                      description: Filter by an exact match.
                    - type: array
                      description: Filter by exact matches
                      items:
                        type: string
                        title: $eq
                        description: Filter by an exact match.
                $ne:
                  type: string
                  title: $ne
                  description: Filter by values not equal to this parameter.
                $in:
                  type: array
                  description: Filter by values in this array.
                  items:
                    type: string
                    title: $in
                    description: Filter by values in this array.
                $nin:
                  type: array
                  description: Filter by values not in this array.
                  items:
                    type: string
                    title: $nin
                    description: Filter by values not in this array.
                $not:
                  oneOf:
                    - type: string
                      title: $not
                      description: Filter by values not matching the conditions in this parameter.
                    - type: object
                      description: Filter by values not matching the conditions in this parameter.
                    - type: array
                      description: Filter by values not matching the conditions in this parameter.
                      items:
                        type: string
                        title: $not
                        description: Filter by values not matching the conditions in this parameter.
                $gt:
                  type: string
                  title: $gt
                  description: Filter by values greater than this parameter. Useful for numbers and dates only.
                $gte:
                  type: string
                  title: $gte
                  description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
                $lt:
                  type: string
                  title: $lt
                  description: Filter by values less than this parameter. Useful for numbers and dates only.
                $lte:
                  type: string
                  title: $lte
                  description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
                $like:
                  type: string
                  title: $like
                  description: Apply a `like` filter. Useful for strings only.
                $re:
                  type: string
                  title: $re
                  description: Apply a regex filter. Useful for strings only.
                $ilike:
                  type: string
                  title: $ilike
                  description: Apply a case-insensitive `like` filter. Useful for strings only.
                $fulltext:
                  type: string
                  title: $fulltext
                  description: Filter to apply on full-text properties.
                $overlap:
                  type: array
                  description: Filter arrays that have overlapping values with this parameter.
                  items:
                    type: string
                    title: $overlap
                    description: Filter arrays that have overlapping values with this parameter.
                $contains:
                  type: array
                  description: Filter arrays that contain some of the values of this parameter.
                  items:
                    type: string
                    title: $contains
                    description: Filter arrays that contain some of the values of this parameter.
                $contained:
                  type: array
                  description: Filter arrays that contain all values of this parameter.
                  items:
                    type: string
                    title: $contained
                    description: Filter arrays that contain all values of this parameter.
                $exists:
                  type: boolean
                  title: $exists
                  description: Filter by whether a value for this parameter exists (not `null`).
        default_billing_address_id:
          oneOf:
            - type: string
              title: default_billing_address_id
              description: Filter by the ID of a customer's default billing address.
            - type: array
              description: Filter by the IDs of a customers' default billing address.
              items:
                type: string
                title: default_billing_address_id
                description: The ID of a customer's default billing address.
        default_shipping_address_id:
          oneOf:
            - type: string
              title: default_shipping_address_id
              description: Filter by the ID of a customer's default shipping address.
            - type: array
              description: Filter by the IDs of a customers' default shipping address.
              items:
                type: string
                title: default_shipping_address_id
                description: The ID of a customer's default shipping address.
        company_name:
          oneOf:
            - type: string
              title: company_name
              description: Filter by a customer's company name.
            - type: array
              description: Filter by customers' company names.
              items:
                type: string
                title: company_name
                description: A company name.
        first_name:
          oneOf:
            - type: string
              title: first_name
              description: Filter by a customer's first name.
            - type: array
              description: Filter by customers' first names.
              items:
                type: string
                title: first_name
                description: A first name.
        last_name:
          oneOf:
            - type: string
              title: last_name
              description: Filter by a customer's last name.
            - type: array
              description: Filter by customers' last names.
              items:
                type: string
                title: last_name
                description: A last name.
        created_by:
          oneOf:
            - type: string
              title: created_by
              description: Filter by the ID of a user to retrieve the groups of the customers they created.
            - type: array
              description: Filter by the ID of users to retrieve the groups of the customers they created.
              items:
                type: string
                title: created_by
                description: A user's ID.
        created_at:
          type: object
          description: Filter the customer's creation date.
          properties:
            $and:
              type: array
              description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
              items:
                type: object
              title: $and
            $or:
              type: array
              description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
              items:
                type: object
              title: $or
            $eq:
              oneOf:
                - type: string
                  title: $eq
                  description: Filter by an exact match.
                - type: array
                  description: Filter by exact matches
                  items:
                    type: string
                    title: $eq
                    description: Filter by an exact match.
            $ne:
              type: string
              title: $ne
              description: Filter by values not equal to this parameter.
            $in:
              type: array
              description: Filter by values in this array.
              items:
                type: string
                title: $in
                description: Filter by values in this array.
            $nin:
              type: array
              description: Filter by values not in this array.
              items:
                type: string
                title: $nin
                description: Filter by values not in this array.
            $not:
              oneOf:
                - type: string
                  title: $not
                  description: Filter by values not matching the conditions in this parameter.
                - type: object
                  description: Filter by values not matching the conditions in this parameter.
                - type: array
                  description: Filter by values not matching the conditions in this parameter.
                  items:
                    type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
            $gt:
              type: string
              title: $gt
              description: Filter by values greater than this parameter. Useful for numbers and dates only.
            $gte:
              type: string
              title: $gte
              description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
            $lt:
              type: string
              title: $lt
              description: Filter by values less than this parameter. Useful for numbers and dates only.
            $lte:
              type: string
              title: $lte
              description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
            $like:
              type: string
              title: $like
              description: Apply a `like` filter. Useful for strings only.
            $re:
              type: string
              title: $re
              description: Apply a regex filter. Useful for strings only.
            $ilike:
              type: string
              title: $ilike
              description: Apply a case-insensitive `like` filter. Useful for strings only.
            $fulltext:
              type: string
              title: $fulltext
              description: Filter to apply on full-text properties.
            $overlap:
              type: array
              description: Filter arrays that have overlapping values with this parameter.
              items:
                type: string
                title: $overlap
                description: Filter arrays that have overlapping values with this parameter.
            $contains:
              type: array
              description: Filter arrays that contain some of the values of this parameter.
              items:
                type: string
                title: $contains
                description: Filter arrays that contain some of the values of this parameter.
            $contained:
              type: array
              description: Filter arrays that contain all values of this parameter.
              items:
                type: string
                title: $contained
                description: Filter arrays that contain all values of this parameter.
            $exists:
              type: boolean
              title: $exists
              description: Filter by whether a value for this parameter exists (not `null`).
        updated_at:
          type: object
          description: Filter the customer's update date.
          properties:
            $and:
              type: array
              description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
              items:
                type: object
              title: $and
            $or:
              type: array
              description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
              items:
                type: object
              title: $or
            $eq:
              oneOf:
                - type: string
                  title: $eq
                  description: Filter by an exact match.
                - type: array
                  description: Filter by an exact match.
                  items:
                    type: string
                    title: $eq
                    description: Filter by an exact match.
            $ne:
              type: string
              title: $ne
              description: Filter by values not equal to this parameter.
            $in:
              type: array
              description: Filter by values in this array.
              items:
                type: string
                title: $in
                description: Filter by values in this array.
            $nin:
              type: array
              description: Filter by values not in this array.
              items:
                type: string
                title: $nin
                description: Filter by values not in this array.
            $not:
              oneOf:
                - type: string
                  title: $not
                  description: Filter by values not matching the conditions in this parameter.
                - type: object
                  description: Filter by values not matching the conditions in this parameter.
                - type: array
                  description: Filter by values not matching the conditions in this parameter.
                  items:
                    type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
            $gt:
              type: string
              title: $gt
              description: Filter by values greater than this parameter. Useful for numbers and dates only.
            $gte:
              type: string
              title: $gte
              description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
            $lt:
              type: string
              title: $lt
              description: Filter by values less than this parameter. Useful for numbers and dates only.
            $lte:
              type: string
              title: $lte
              description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
            $like:
              type: string
              title: $like
              description: Apply a `like` filter. Useful for strings only.
            $re:
              type: string
              title: $re
              description: Apply a regex filter. Useful for strings only.
            $ilike:
              type: string
              title: $ilike
              description: Apply a case-insensitive `like` filter. Useful for strings only.
            $fulltext:
              type: string
              title: $fulltext
              description: Filter to apply on full-text properties.
            $overlap:
              type: array
              description: Filter arrays that have overlapping values with this parameter.
              items:
                type: string
                title: $overlap
                description: Filter arrays that have overlapping values with this parameter.
            $contains:
              type: array
              description: Filter arrays that contain some of the values of this parameter.
              items:
                type: string
                title: $contains
                description: Filter arrays that contain some of the values of this parameter.
            $contained:
              type: array
              description: Filter arrays that contain all values of this parameter.
              items:
                type: string
                title: $contained
                description: Filter arrays that contain all values of this parameter.
            $exists:
              type: boolean
              title: $exists
              description: Filter by whether a value for this parameter exists (not `null`).
        deleted_at:
          type: object
          description: Filter the customer's deletion date.
          properties:
            $and:
              type: array
              description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
              items:
                type: object
              title: $and
            $or:
              type: array
              description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
              items:
                type: object
              title: $or
            $eq:
              oneOf:
                - type: string
                  title: $eq
                  description: Filter by an exact match.
                - type: array
                  description: Filter by an exact match.
                  items:
                    type: string
                    title: $eq
                    description: Filter by an exact match.
            $ne:
              type: string
              title: $ne
              description: Filter by values not equal to this parameter.
            $in:
              type: array
              description: Filter by values in this array.
              items:
                type: string
                title: $in
                description: Filter by values in this array.
            $nin:
              type: array
              description: Filter by values not in this array.
              items:
                type: string
                title: $nin
                description: Filter by values not in this array.
            $not:
              oneOf:
                - type: string
                  title: $not
                  description: Filter by values not matching the conditions in this parameter.
                - type: object
                  description: Filter by values not matching the conditions in this parameter.
                - type: array
                  description: Filter by values not matching the conditions in this parameter.
                  items:
                    type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
            $gt:
              type: string
              title: $gt
              description: Filter by values greater than this parameter. Useful for numbers and dates only.
            $gte:
              type: string
              title: $gte
              description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
            $lt:
              type: string
              title: $lt
              description: Filter by values less than this parameter. Useful for numbers and dates only.
            $lte:
              type: string
              title: $lte
              description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
            $like:
              type: string
              title: $like
              description: Apply a `like` filter. Useful for strings only.
            $re:
              type: string
              title: $re
              description: Apply a regex filter. Useful for strings only.
            $ilike:
              type: string
              title: $ilike
              description: Apply a case-insensitive `like` filter. Useful for strings only.
            $fulltext:
              type: string
              title: $fulltext
              description: Filter to apply on full-text properties.
            $overlap:
              type: array
              description: Filter arrays that have overlapping values with this parameter.
              items:
                type: string
                title: $overlap
                description: Filter arrays that have overlapping values with this parameter.
            $contains:
              type: array
              description: Filter arrays that contain some of the values of this parameter.
              items:
                type: string
                title: $contains
                description: Filter arrays that contain some of the values of this parameter.
            $contained:
              type: array
              description: Filter arrays that contain all values of this parameter.
              items:
                type: string
                title: $contained
                description: Filter arrays that contain all values of this parameter.
            $exists:
              type: boolean
              title: $exists
              description: Filter by whether a value for this parameter exists (not `null`).
    AdminCustomerResponse:
      type: object
      description: The customer's details.
      x-schemaName: AdminCustomerResponse
      required:
        - customer
      properties:
        customer:
          $ref: '#/components/schemas/AdminCustomer'
    AdminDeletePaymentCollectionResponse:
      type: object
      description: The result of deleting the payment collection.
      x-schemaName: AdminDeletePaymentCollectionResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The payment collection's ID.
        object:
          type: string
          title: object
          description: The name of the object that was deleted.
          default: payment-collection
        deleted:
          type: boolean
          title: deleted
          description: Whether the object was deleted.
    AdminDismissItems:
      type: object
      description: The items details.
      x-schemaName: AdminDismissItems
      properties:
        items:
          type: array
          description: The items details.
          items:
            type: object
            description: An item's details.
            required:
              - id
              - quantity
            properties:
              id:
                type: string
                title: id
                description: The ID of the item in the order.
              quantity:
                type: number
                title: quantity
                description: The item's quantity.
              internal_note:
                type: string
                title: internal_note
                description: A note viewed only by admin users.
    AdminDraftOrder:
      type: object
      description: The draft order's details.
      x-schemaName: AdminDraftOrder
      required:
        - payment_collections
        - items
        - shipping_methods
        - status
        - id
        - version
        - region_id
        - customer_id
        - sales_channel_id
        - email
        - currency_code
        - payment_status
        - fulfillment_status
        - summary
        - created_at
        - updated_at
        - original_item_total
        - original_item_subtotal
        - original_item_tax_total
        - item_total
        - item_subtotal
        - item_tax_total
        - item_discount_total
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - gift_card_total
        - gift_card_tax_total
        - shipping_total
        - shipping_subtotal
        - shipping_tax_total
        - shipping_discount_total
        - original_shipping_total
        - original_shipping_subtotal
        - original_shipping_tax_total
        - credit_line_total
      properties:
        payment_collections:
          type: array
          description: The draft order's payment collections.
          items:
            $ref: '#/components/schemas/AdminPaymentCollection'
        fulfillments:
          type: array
          description: The draft order's fulfillments.
          items:
            $ref: '#/components/schemas/AdminOrderFulfillment'
        sales_channel:
          $ref: '#/components/schemas/AdminSalesChannel'
        customer:
          $ref: '#/components/schemas/AdminCustomer'
        shipping_address:
          $ref: '#/components/schemas/AdminOrderAddress'
        billing_address:
          $ref: '#/components/schemas/AdminOrderAddress'
        items:
          type: array
          description: The draft order's items.
          items:
            $ref: '#/components/schemas/AdminOrderLineItem'
        shipping_methods:
          type: array
          description: The draft order's shipping methods.
          items:
            $ref: '#/components/schemas/AdminOrderShippingMethod'
        status:
          type: string
          title: status
          description: The draft order's status.
        currency_code:
          type: string
          title: currency_code
          description: The draft order's currency code.
          example: usd
        id:
          type: string
          title: id
          description: The draft order's ID.
        version:
          type: number
          title: version
          description: The draft order's version.
        region_id:
          type: string
          title: region_id
          description: The ID of the region associated with the draft order.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that the draft order belongs to.
        sales_channel_id:
          type: string
          title: sales_channel_id
          description: The ID of the sales channel that the draft order is placed in.
        email:
          type: string
          title: email
          description: The customer email associated with the draft order.
          format: email
        display_id:
          type: number
          title: display_id
          description: The draft order's display ID.
        payment_status:
          type: string
          description: The draft order's payment status.
          enum:
            - not_paid
            - awaiting
            - authorized
            - partially_authorized
            - canceled
            - captured
            - partially_captured
            - partially_refunded
            - refunded
            - requires_action
        fulfillment_status:
          type: string
          description: The draft order's fulfillment status.
          enum:
            - canceled
            - not_fulfilled
            - partially_fulfilled
            - fulfilled
            - partially_shipped
            - shipped
            - partially_delivered
            - delivered
        transactions:
          type: array
          description: The draft order's transactions.
          items:
            $ref: '#/components/schemas/BaseOrderTransaction'
        summary:
          $ref: '#/components/schemas/BaseOrderSummary'
        metadata:
          type: object
          description: The draft order's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the draft order was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the draft order was updated.
        original_item_total:
          type: number
          title: original_item_total
          description: The total of the draft order's items including taxes, excluding promotions.
        original_item_subtotal:
          type: number
          title: original_item_subtotal
          description: The total of the draft order's items excluding taxes, including promotions.
        original_item_tax_total:
          type: number
          title: original_item_tax_total
          description: The tax total of the draft order's items excluding promotions.
        item_total:
          type: number
          title: item_total
          description: The total of the draft order's items including taxes and promotions.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The total of the draft order's items excluding taxes, including promotions.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The tax total of the draft order's items including promotions.
        original_total:
          type: number
          title: original_total
          description: The draft order's total excluding promotions, including taxes.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The draft order's total excluding taxes, including promotions.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The draft order's tax total, excluding promotions.
        total:
          type: number
          title: total
          description: The draft order's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The draft order's total excluding taxes, including promotions.
        tax_total:
          type: number
          title: tax_total
          description: The draft order's tax total including promotions.
        discount_total:
          type: number
          title: discount_total
          description: The draft order's discount or promotions total.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The tax total of draft order's discount or promotion.
        gift_card_total:
          type: number
          title: gift_card_total
          description: The draft order's gift card total.
        gift_card_tax_total:
          type: number
          title: gift_card_tax_total
          description: The tax total of the draft order's gift card.
        shipping_total:
          type: number
          title: shipping_total
          description: The draft order's shipping total including taxes and promotions.
        shipping_subtotal:
          type: number
          title: shipping_subtotal
          description: The draft order's shipping total excluding taxes, including promotions.
        shipping_tax_total:
          type: number
          title: shipping_tax_total
          description: The tax total of the draft order's shipping.
        original_shipping_total:
          type: number
          title: original_shipping_total
          description: The draft order's shipping total including taxes, excluding promotions.
        original_shipping_subtotal:
          type: number
          title: original_shipping_subtotal
          description: The draft order's shipping total excluding taxes, including promotions.
        original_shipping_tax_total:
          type: number
          title: original_shipping_tax_total
          description: The tax total of the draft order's shipping excluding promotions.
        region:
          $ref: '#/components/schemas/AdminRegion'
        credit_lines:
          type: array
          description: The draft order's credit lines.
          items:
            $ref: '#/components/schemas/OrderCreditLine'
        credit_line_total:
          type: number
          title: credit_line_total
          description: The draft order's credit line total.
        item_discount_total:
          type: number
          title: item_discount_total
          description: The total discount amount applied on the draft order's items.
        shipping_discount_total:
          type: number
          title: shipping_discount_total
          description: The total discount amount applied on the draft order's shipping.
        custom_display_id:
          type: string
          title: custom_display_id
          description: The custom display ID of the draft order.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/order/custom-display-id
    AdminDraftOrderListResponse:
      type: object
      description: The list of draft orders with pagination fields.
      x-schemaName: AdminDraftOrderListResponse
      required:
        - limit
        - offset
        - count
        - draft_orders
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items retrieved.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total count of items available.
        draft_orders:
          type: array
          description: The list of draft orders.
          items:
            $ref: '#/components/schemas/AdminDraftOrder'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminDraftOrderParams:
      type: object
      description: The parameters for retrieving draft orders.
      x-schemaName: AdminDraftOrderParams
      properties:
        fields:
          type: string
          title: fields
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
    AdminDraftOrderPreview:
      type: object
      description: The draft order preview's details.
      x-schemaName: AdminDraftOrderPreview
      required:
        - return_requested_total
        - order_change
        - status
        - id
        - version
        - region_id
        - customer_id
        - sales_channel_id
        - email
        - currency_code
        - payment_collections
        - payment_status
        - fulfillment_status
        - summary
        - created_at
        - updated_at
        - original_item_total
        - original_item_subtotal
        - original_item_tax_total
        - item_total
        - item_subtotal
        - item_tax_total
        - item_discount_total
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - gift_card_total
        - gift_card_tax_total
        - shipping_total
        - shipping_subtotal
        - shipping_tax_total
        - shipping_discount_total
        - original_shipping_total
        - original_shipping_subtotal
        - original_shipping_tax_total
        - credit_line_total
      properties:
        return_requested_total:
          type: number
          title: return_requested_total
          description: The total of the requested return.
        order_change:
          $ref: '#/components/schemas/AdminOrderChange'
        items:
          type: array
          description: The order's items.
          items:
            allOf:
              - type: object
                description: An order's item.
                x-schemaName: BaseOrderLineItem
                required:
                  - id
                  - title
                  - subtitle
                  - thumbnail
                  - variant_id
                  - product_id
                  - product_title
                  - product_description
                  - product_subtitle
                  - product_type
                  - product_collection
                  - product_handle
                  - variant_sku
                  - variant_barcode
                  - variant_title
                  - variant_option_values
                  - requires_shipping
                  - is_discountable
                  - is_tax_inclusive
                  - unit_price
                  - quantity
                  - detail
                  - created_at
                  - updated_at
                  - metadata
                  - original_total
                  - original_subtotal
                  - original_tax_total
                  - item_total
                  - item_subtotal
                  - item_tax_total
                  - total
                  - subtotal
                  - tax_total
                  - discount_total
                  - discount_tax_total
                  - refundable_total
                  - refundable_total_per_unit
                properties:
                  id:
                    type: string
                    title: id
                    description: The item's ID.
                  title:
                    type: string
                    title: title
                    description: The item's title.
                  subtitle:
                    type: string
                    title: subtitle
                    description: The item's subtitle.
                  thumbnail:
                    type: string
                    title: thumbnail
                    description: The URL of the item's thumbnail.
                  variant:
                    $ref: '#/components/schemas/BaseProductVariant'
                  variant_id:
                    type: string
                    title: variant_id
                    description: The ID of the associated variant.
                  product:
                    $ref: '#/components/schemas/AdminProduct'
                  product_id:
                    type: string
                    title: product_id
                    description: The ID of the associated product.
                  product_title:
                    type: string
                    title: product_title
                    description: The title of the item's product.
                  product_description:
                    type: string
                    title: product_description
                    description: The description of the item's product.
                  product_subtitle:
                    type: string
                    title: product_subtitle
                    description: The subtitle of the item's product.
                  product_type:
                    type: string
                    title: product_type
                    description: The ID of type of the item's product.
                  product_collection:
                    type: string
                    title: product_collection
                    description: The ID of collection of the item's product.
                  product_handle:
                    type: string
                    title: product_handle
                    description: The handle of the item's product.
                  variant_sku:
                    type: string
                    title: variant_sku
                    description: The SKU of the item's variant.
                  variant_barcode:
                    type: string
                    title: variant_barcode
                    description: The barcode of the item's variant.
                  variant_title:
                    type: string
                    title: variant_title
                    description: The title of the item's variant.
                  variant_option_values:
                    type: object
                    description: The option values of the item's variant as key-value pairs. The key is the title of an option, and the value is the option's value.
                  requires_shipping:
                    type: boolean
                    title: requires_shipping
                    description: Whether the item requires shipping.
                  is_discountable:
                    type: boolean
                    title: is_discountable
                    description: Whether the item is discountable.
                  is_tax_inclusive:
                    type: boolean
                    title: is_tax_inclusive
                    description: Whether the item's price includes taxes.
                  compare_at_unit_price:
                    type: number
                    title: compare_at_unit_price
                    description: The original price of the item before a promotion or sale.
                  unit_price:
                    type: number
                    title: unit_price
                    description: The item's unit price.
                  quantity:
                    type: number
                    title: quantity
                    description: The item's quantity.
                  tax_lines:
                    type: array
                    description: The item's tax lines.
                    items:
                      $ref: '#/components/schemas/BaseOrderLineItemTaxLine'
                  adjustments:
                    type: array
                    description: The item's adjustments.
                    items:
                      $ref: '#/components/schemas/BaseOrderLineItemAdjustment'
                  detail:
                    $ref: '#/components/schemas/BaseOrderItemDetail'
                  created_at:
                    type: string
                    format: date-time
                    title: created_at
                    description: The date the item was created.
                  updated_at:
                    type: string
                    format: date-time
                    title: updated_at
                    description: The date the item was updated.
                  metadata:
                    type: object
                    description: The item's metadata, can hold custom key-value pairs.
                    externalDocs:
                      url: https://docs.medusajs.com/api/admin#manage-metadata
                      description: Learn how to manage metadata
                  original_total:
                    type: number
                    title: original_total
                    description: The item's total including taxes, excluding promotions.
                  original_subtotal:
                    type: number
                    title: original_subtotal
                    description: The item's total excluding taxes, including promotions.
                  original_tax_total:
                    type: number
                    title: original_tax_total
                    description: The tax total of the item excluding promotions.
                  item_total:
                    type: number
                    title: item_total
                    description: The item's total for a single unit including taxes and promotions.
                  item_subtotal:
                    type: number
                    title: item_subtotal
                    description: The item's total for a single unit excluding taxes, including promotions.
                  item_tax_total:
                    type: number
                    title: item_tax_total
                    description: The tax total for a single unit of the item including promotions.
                  total:
                    type: number
                    title: total
                    description: The item's total including taxes and promotions.
                  subtotal:
                    type: number
                    title: subtotal
                    description: The item's total excluding taxes, including promotions.
                  tax_total:
                    type: number
                    title: tax_total
                    description: The tax total of the item including promotions.
                  discount_total:
                    type: number
                    title: discount_total
                    description: The total of the item's discount / promotion.
                  discount_tax_total:
                    type: number
                    title: discount_tax_total
                    description: The tax total of the item's discount / promotion
                  refundable_total:
                    type: number
                    title: refundable_total
                    description: The total refundable amount of the item's total.
                  refundable_total_per_unit:
                    type: number
                    title: refundable_total_per_unit
                    description: The total refundable amount of the item's total for a single unit.
              - type: object
                description: An order's item.
                properties:
                  actions:
                    type: array
                    description: The actions applied on an item.
                    items:
                      type: object
                      description: The action's details.
                      x-schemaName: BaseOrderChangeAction
        shipping_methods:
          type: array
          description: The order's shipping methods.
          items:
            allOf:
              - type: object
                description: The shipping method's details.
                x-schemaName: BaseOrderShippingMethod
                required:
                  - id
                  - order_id
                  - name
                  - amount
                  - is_tax_inclusive
                  - shipping_option_id
                  - data
                  - metadata
                  - original_total
                  - original_subtotal
                  - original_tax_total
                  - total
                  - subtotal
                  - tax_total
                  - discount_total
                  - discount_tax_total
                  - created_at
                  - updated_at
                properties:
                  id:
                    type: string
                    title: id
                    description: The shipping method's ID.
                  order_id:
                    type: string
                    title: order_id
                    description: The ID of the order this shipping method belongs to.
                  name:
                    type: string
                    title: name
                    description: The shipping method's name.
                  description:
                    type: string
                    title: description
                    description: The shipping method's description.
                  amount:
                    type: number
                    title: amount
                    description: The shipping method's amount.
                  is_tax_inclusive:
                    type: boolean
                    title: is_tax_inclusive
                    description: Whether the shipping method's amount is tax inclusive.
                  shipping_option_id:
                    type: string
                    title: shipping_option_id
                    description: The ID of the shipping option this method was created from.
                  data:
                    type: object
                    description: The data relevant for the fulfillment provider to process this shipment.
                    externalDocs:
                      url: https://docs.medusajs.com/resources/commerce-modules/order/concepts#data-property
                  metadata:
                    type: object
                    description: The shipping method's metadata, can hold custom key-value pairs.
                    externalDocs:
                      url: https://docs.medusajs.com/api/admin#manage-metadata
                      description: Learn how to manage metadata
                  tax_lines:
                    type: array
                    description: The shipping method's tax lines.
                    items:
                      $ref: '#/components/schemas/BaseOrderShippingMethodTaxLine'
                  adjustments:
                    type: array
                    description: The shipping method's adjustments.
                    items:
                      $ref: '#/components/schemas/BaseOrderShippingMethodAdjustment'
                  original_total:
                    oneOf:
                      - type: string
                        title: original_total
                        description: The shipping method's total including taxes, excluding promotions.
                      - type: number
                        title: original_total
                        description: The shipping method's total including taxes, excluding promotions.
                  original_subtotal:
                    oneOf:
                      - type: string
                        title: original_subtotal
                        description: The shipping method's total excluding taxes, including promotions.
                      - type: number
                        title: original_subtotal
                        description: The shipping method's total excluding taxes, including promotions.
                  original_tax_total:
                    oneOf:
                      - type: string
                        title: original_tax_total
                        description: The tax total of the shipping method excluding promotions.
                      - type: number
                        title: original_tax_total
                        description: The tax total of the shipping method excluding promotions.
                  total:
                    oneOf:
                      - type: string
                        title: total
                        description: The shipping method's total including taxes and promotions.
                      - type: number
                        title: total
                        description: The shipping method's total including taxes and promotions.
                  subtotal:
                    oneOf:
                      - type: string
                        title: subtotal
                        description: The shipping method's total excluding taxes, including promotions.
                      - type: number
                        title: subtotal
                        description: The shipping method's total excluding taxes, including promotions.
                  tax_total:
                    oneOf:
                      - type: string
                        title: tax_total
                        description: The tax total of the shipping method including promotions.
                      - type: number
                        title: tax_total
                        description: The tax total of the shipping method including promotions.
                  discount_total:
                    oneOf:
                      - type: string
                        title: discount_total
                        description: The total of the shipping method's promotion.
                      - type: number
                        title: discount_total
                        description: The total of the shipping method's promotion.
                  discount_tax_total:
                    oneOf:
                      - type: string
                        title: discount_tax_total
                        description: The tax total of the shipping method's promotion.
                      - type: number
                        title: discount_tax_total
                        description: The shipping method's discount tax total.
                  created_at:
                    type: string
                    format: date-time
                    title: created_at
                    description: The date the shipping method was created.
                  updated_at:
                    type: string
                    format: date-time
                    title: updated_at
                    description: The date the shipping method was updated.
              - type: object
                description: The shipping method's details.
                properties:
                  actions:
                    type: array
                    description: The actions applied on the shipping method.
                    items:
                      type: object
                      description: The action's details.
                      x-schemaName: BaseOrderChangeAction
        currency_code:
          type: string
          title: currency_code
          description: The order's currency code.
        version:
          type: number
          title: version
          description: The order's version when this preview is applied.
        id:
          type: string
          title: id
          description: The order's ID.
        region_id:
          type: string
          title: region_id
          description: The ID of the order's associated region.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that placed the order.
        sales_channel_id:
          type: string
          title: sales_channel_id
          description: The ID of the sales channel that the order was placed in.
        email:
          type: string
          title: email
          description: The email of the customer that placed the order.
          format: email
        display_id:
          type: number
          title: display_id
          description: The order's display ID.
        shipping_address:
          $ref: '#/components/schemas/AdminOrderAddress'
        billing_address:
          $ref: '#/components/schemas/AdminOrderAddress'
        payment_collections:
          type: array
          description: The order's payment collections.
          items:
            $ref: '#/components/schemas/AdminPaymentCollection'
        payment_status:
          type: string
          description: The order's payment status.
          enum:
            - canceled
            - not_paid
            - awaiting
            - authorized
            - partially_authorized
            - captured
            - partially_captured
            - partially_refunded
            - refunded
            - requires_action
        fulfillments:
          type: array
          description: The order's fulfillments.
          items:
            $ref: '#/components/schemas/AdminOrderFulfillment'
        fulfillment_status:
          type: string
          description: The order's fulfillment status.
          enum:
            - canceled
            - not_fulfilled
            - partially_fulfilled
            - fulfilled
            - partially_shipped
            - shipped
            - partially_delivered
            - delivered
        transactions:
          type: array
          description: The order's transactions.
          items:
            $ref: '#/components/schemas/BaseOrderTransaction'
        summary:
          $ref: '#/components/schemas/BaseOrderSummary'
        metadata:
          type: object
          description: The order's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the order was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the order was updated.
        original_item_total:
          type: number
          title: original_item_total
          description: The total of the order's items including taxes, excluding promotions.
        original_item_subtotal:
          type: number
          title: original_item_subtotal
          description: The total of the order's items excluding taxes, including promotions.
        original_item_tax_total:
          type: number
          title: original_item_tax_total
          description: The tax total of the order's items excluding promotions.
        item_total:
          type: number
          title: item_total
          description: The total of the order's items including taxes and promotions.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The total of the order's items excluding taxes, including promotions.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The tax total of the order's items including promotions.
        original_total:
          type: number
          title: original_total
          description: The order's total excluding promotions, including taxes.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The order's total excluding taxes, including promotions.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The order's tax total, excluding promotions.
        total:
          type: number
          title: total
          description: The order's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The order's total excluding taxes, including promotions.
        tax_total:
          type: number
          title: tax_total
          description: The order's tax total including promotions.
        discount_total:
          type: number
          title: discount_total
          description: The order's discount or promotions total.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The tax total of order's discount or promotion.
        gift_card_total:
          type: number
          title: gift_card_total
          description: The order's gift card total.
        gift_card_tax_total:
          type: number
          title: gift_card_tax_total
          description: The tax total of the order's gift card.
        shipping_total:
          type: number
          title: shipping_total
          description: The order's shipping total including taxes and promotions.
        shipping_subtotal:
          type: number
          title: shipping_subtotal
          description: The order's shipping total excluding taxes, including promotions.
        shipping_tax_total:
          type: number
          title: shipping_tax_total
          description: The tax total of the order's shipping.
        original_shipping_total:
          type: number
          title: original_shipping_total
          description: The order's shipping total including taxes, excluding promotions.
        original_shipping_subtotal:
          type: number
          title: original_shipping_subtotal
          description: The order's shipping total excluding taxes, including promotions.
        original_shipping_tax_total:
          type: number
          title: original_shipping_tax_total
          description: The tax total of the order's shipping excluding promotions.
        customer:
          $ref: '#/components/schemas/AdminCustomer'
        sales_channel:
          $ref: '#/components/schemas/AdminSalesChannel'
        status:
          type: string
          title: status
          description: The order's status.
        region:
          $ref: '#/components/schemas/AdminRegion'
        credit_lines:
          type: array
          description: The order preview's credit lines.
          items:
            $ref: '#/components/schemas/OrderCreditLine'
        credit_line_total:
          type: number
          title: credit_line_total
          description: The draft order preview's credit line total.
        item_discount_total:
          type: number
          title: item_discount_total
          description: The total discount amount applied on the draft order's items.
        shipping_discount_total:
          type: number
          title: shipping_discount_total
          description: The total discount amount applied on the draft order's shipping.
        custom_display_id:
          type: string
          title: custom_display_id
          description: The custom display ID of the draft order.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/order/custom-display-id
    AdminDraftOrderPreviewResponse:
      type: object
      description: The details of the preview on the draft order.
      x-schemaName: AdminDraftOrderPreviewResponse
      required:
        - draft_order_preview
      properties:
        draft_order_preview:
          $ref: '#/components/schemas/AdminDraftOrderPreview'
    AdminDraftOrderResponse:
      type: object
      description: The draft order's details.
      x-schemaName: AdminDraftOrderResponse
      required:
        - draft_order
      properties:
        draft_order:
          $ref: '#/components/schemas/AdminDraftOrder'
    AdminExchange:
      type: object
      description: The exchange's details.
      x-schemaName: AdminExchange
      required:
        - id
        - order_id
        - created_at
        - updated_at
        - canceled_at
        - deleted_at
        - additional_items
        - return_items
      properties:
        order_id:
          type: string
          title: order_id
          description: The ID of the order the exchange is created for.
        return_items:
          type: array
          description: The items returned (inbound) by the exchange.
          items:
            $ref: '#/components/schemas/AdminReturnItem'
        additional_items:
          type: array
          description: The new items (outbound) sent by the exchange.
          items:
            $ref: '#/components/schemas/BaseExchangeItem'
        no_notification:
          type: boolean
          title: no_notification
          description: Whether to send the customer notifications when the exchange is updated.
        difference_due:
          type: number
          title: difference_due
          description: The amount to be exchanged or refunded. If the amount is negative, it must be refunded. If positive, additional payment is required from the customer.
        return:
          $ref: '#/components/schemas/AdminReturn'
        return_id:
          type: string
          title: return_id
          description: The ID of the associated exchange.
        id:
          type: string
          title: id
          description: The exchange's ID.
        display_id:
          type: string
          title: display_id
          description: The exchange's display ID.
        shipping_methods:
          type: array
          description: The shipping methods used to send the new (outbound) items.
          items:
            $ref: '#/components/schemas/BaseOrderShippingMethod'
        transactions:
          type: array
          description: The exchange's transactions.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/order/transactions
          items:
            $ref: '#/components/schemas/BaseOrderTransaction'
        metadata:
          type: object
          description: The exchange's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date that the exchange was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date that the exchange was updated.
        order_version:
          type: string
          title: order_version
          description: The version of the order once the exchange is applied.
        created_by:
          type: string
          title: created_by
          description: The ID of the user that created the exchange.
        canceled_at:
          type: string
          title: canceled_at
          description: The date the exchange was canceled.
          format: date-time
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the exchange was deleted.
        order:
          $ref: '#/components/schemas/BaseOrder'
        allow_backorder:
          type: boolean
          title: allow_backorder
          description: Whether variants that are out-of-stock can still be added as additional or outbound items.
    AdminExchangeAddOutboundShipping:
      type: object
      description: The outbound shipping method's details.
      x-schemaName: AdminExchangeAddOutboundShipping
      required:
        - shipping_option_id
      properties:
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the associated shipping option.
        custom_amount:
          type: number
          title: custom_amount
          description: Set a custom amount for the shipping method.
        description:
          type: string
          title: description
          description: The shipping method's description.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed by admin users only.
        metadata:
          type: object
          description: The exchange's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminExchangeDeleteResponse:
      type: object
      description: The details of deleting an exchange.
      x-schemaName: AdminExchangeDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The exchange's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: exchange
        deleted:
          type: boolean
          title: deleted
          description: Whether the exchange was deleted.
    AdminExchangeOrderResponse:
      type: object
      description: The exchange's details.
      x-schemaName: AdminExchangeOrderResponse
      required:
        - order
        - exchange
      properties:
        order:
          $ref: '#/components/schemas/Order'
        exchange:
          $ref: '#/components/schemas/AdminExchange'
    AdminExchangePreviewResponse:
      type: object
      description: A preview of the order once the exchange is applied.
      x-schemaName: AdminExchangePreviewResponse
      required:
        - order_preview
        - exchange
      properties:
        order_preview:
          $ref: '#/components/schemas/AdminOrderPreview'
        exchange:
          $ref: '#/components/schemas/AdminExchange'
    AdminExchangeRequestResponse:
      type: object
      description: The details of a requested exchange.
      x-schemaName: AdminExchangeRequestResponse
      required:
        - return
        - order_preview
        - exchange
      properties:
        return:
          $ref: '#/components/schemas/AdminReturn'
        order_preview:
          $ref: '#/components/schemas/AdminOrderPreview'
        exchange:
          $ref: '#/components/schemas/AdminExchange'
    AdminExchangeResponse:
      type: object
      description: The exchange's details.
      x-schemaName: AdminExchangeResponse
      required:
        - exchange
      properties:
        exchange:
          $ref: '#/components/schemas/AdminExchange'
    AdminExchangeReturnResponse:
      type: object
      description: The details of an exchange's return.
      x-schemaName: AdminExchangeReturnResponse
      required:
        - order_preview
        - return
      properties:
        order_preview:
          $ref: '#/components/schemas/AdminOrderPreview'
        return:
          $ref: '#/components/schemas/AdminReturn'
    AdminExchangeUpdateInboundShipping:
      type: object
      description: The details of the shipping method to update.
      x-schemaName: AdminExchangeUpdateInboundShipping
      properties:
        custom_amount:
          type: number
          title: custom_amount
          description: The shipping method's custom amount.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed by admin users only.
        metadata:
          type: object
          description: The exchange's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminExchangeUpdateOutboundShipping:
      type: object
      description: The details of the shipping method to update.
      x-schemaName: AdminExchangeUpdateOutboundShipping
      properties:
        custom_amount:
          type: number
          title: custom_amount
          description: The shipping method's custom amount.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed by admin users only.
        metadata:
          type: object
          description: The exchange's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminExportOrderResponse:
      type: object
      description: The details of the order export.
      x-schemaName: AdminExportOrderResponse
      required:
        - transaction_id
      properties:
        transaction_id:
          type: string
          title: transaction_id
          description: The ID of the workflow execution's transaction. Use it to check the status of the export by sending a GET request to `/admin/workflows-executions/export-orders/:transaction-id`
    AdminExportProductResponse:
      type: object
      description: The details of the product export.
      x-schemaName: AdminExportProductResponse
      required:
        - transaction_id
      properties:
        transaction_id:
          type: string
          title: transaction_id
          description: The ID of the workflow execution's transaction. Use it to check the status of the export by sending a GET request to `/admin/workflows-executions/export-products/:transaction-id`
    AdminFile:
      type: object
      description: A file's details.
      x-schemaName: AdminFile
      required:
        - id
        - url
      properties:
        id:
          type: string
          title: id
          description: The file's ID.
        url:
          type: string
          title: url
          description: The file's URL.
    AdminFileListResponse:
      type: object
      description: The list of uploaded files.
      x-schemaName: AdminFileListResponse
      required:
        - files
      properties:
        files:
          type: array
          description: The list of uploaded files.
          items:
            $ref: '#/components/schemas/AdminFile'
    AdminFileResponse:
      type: object
      description: A file's details.
      x-schemaName: AdminFileResponse
      required:
        - file
      properties:
        file:
          $ref: '#/components/schemas/AdminFile'
    AdminFulfillment:
      type: object
      description: The fulfillment's details.
      x-schemaName: AdminFulfillment
      required:
        - id
        - location_id
        - provider_id
        - shipping_option_id
        - provider
        - delivery_address
        - items
        - labels
        - packed_at
        - shipped_at
        - delivered_at
        - canceled_at
        - data
        - metadata
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The fulfillment's ID.
        location_id:
          type: string
          title: location_id
          description: The ID of the location the fulfillment's items are shipped from.
        provider_id:
          type: string
          title: provider_id
          description: The ID of the fulfillment provider handling this fulfillment.
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the shipping option this fulfillment is created for.
        provider:
          $ref: '#/components/schemas/AdminFulfillmentProvider'
        delivery_address:
          $ref: '#/components/schemas/AdminFulfillmentAddress'
        items:
          type: array
          description: The fulfillment's items.
          items:
            $ref: '#/components/schemas/AdminFulfillmentItem'
        labels:
          type: array
          description: The fulfillment's shipment labels.
          items:
            $ref: '#/components/schemas/AdminFulfillmentLabel'
        packed_at:
          type: string
          title: packed_at
          description: The date the fulfillment was packed at.
        shipped_at:
          type: string
          title: shipped_at
          description: The date the fulfillment was shipped at.
        delivered_at:
          type: string
          title: delivered_at
          description: The date the fulfillment was delivered at.
        canceled_at:
          type: string
          title: canceled_at
          description: The date the fulfillment was canceled at.
        data:
          type: object
          description: The fulfillment's data, useful for the third-party provider handling the fulfillment.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#data-property
        metadata:
          type: object
          description: The fulfillment's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the fulfillment was created at.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the fulfillment was updated at.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the fulfillment was deleted at.
    AdminFulfillmentAddress:
      type: object
      description: An address's details.
      x-schemaName: AdminFulfillmentAddress
      required:
        - id
        - fulfillment_id
        - company
        - first_name
        - last_name
        - address_1
        - address_2
        - city
        - country_code
        - province
        - postal_code
        - phone
        - metadata
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The address's ID.
        fulfillment_id:
          type: string
          title: fulfillment_id
          description: The ID of the fulfillment that the address belongs to.
        company:
          type: string
          title: company
          description: The address's company.
        first_name:
          type: string
          title: first_name
          description: The address's first name.
        last_name:
          type: string
          title: last_name
          description: The address's last name.
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        city:
          type: string
          title: city
          description: The address's city.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
        province:
          type: string
          title: province
          description: The address's lower-case ISO 3166-2 province code.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        phone:
          type: string
          title: phone
          description: The address's phone.
        metadata:
          type: object
          description: The address's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the address was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the address was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the address was deleted.
    AdminFulfillmentDeliveryAddress:
      type: object
      description: The address to deliver the items to.
      properties:
        first_name:
          type: string
          title: first_name
          description: The customer's first name.
        last_name:
          type: string
          title: last_name
          description: The customer's last name.
        phone:
          type: string
          title: phone
          description: The customer's phone.
        company:
          type: string
          title: company
          description: The delivery address's company.
        address_1:
          type: string
          title: address_1
          description: The delivery address's first line.
        address_2:
          type: string
          title: address_2
          description: The delivery address's second line.
        city:
          type: string
          title: city
          description: The delivery address's city.
        country_code:
          type: string
          title: country_code
          description: The delivery address's country code.
        province:
          type: string
          title: province
          description: The delivery address's ISO 3166-2 province code. Must be lower-case.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        postal_code:
          type: string
          title: postal_code
          description: The delivery address's postal code.
        metadata:
          type: object
          description: The delivery address's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
      x-schemaName: AdminFulfillmentDeliveryAddress
    AdminFulfillmentItem:
      type: object
      description: The details of a fulfillment's item.
      x-schemaName: AdminFulfillmentItem
      required:
        - id
        - title
        - quantity
        - sku
        - barcode
        - line_item_id
        - inventory_item_id
        - fulfillment_id
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The item's ID.
        title:
          type: string
          title: title
          description: The item's title.
        quantity:
          type: number
          title: quantity
          description: The item's quantity to be fulfilled.
        sku:
          type: string
          title: sku
          description: The item's SKU.
        barcode:
          type: string
          title: barcode
          description: The item's barcode.
        line_item_id:
          type: string
          title: line_item_id
          description: The ID of the order's line item to be fulfilled.
        inventory_item_id:
          type: string
          title: inventory_item_id
          description: The ID of the inventory item of the underlying product variant.
        fulfillment_id:
          type: string
          title: fulfillment_id
          description: The ID of the fulfillment the item belongs to.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the item was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the item was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the item was deleted.
    AdminFulfillmentLabel:
      type: object
      description: The details of a fulfillmet's shipment label.
      x-schemaName: AdminFulfillmentLabel
      required:
        - id
        - tracking_number
        - tracking_url
        - label_url
        - fulfillment_id
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The label's ID.
        tracking_number:
          type: string
          title: tracking_number
          description: The label's tracking number.
        tracking_url:
          type: string
          title: tracking_url
          description: The label's tracking URL.
        label_url:
          type: string
          title: label_url
          description: The label's URL.
        fulfillment_id:
          type: string
          title: fulfillment_id
          description: The ID of the fulfillment the label is associated with.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the label was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the label was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the label was deleted.
    AdminFulfillmentProvider:
      type: object
      description: The fulfillment provider's details.
      x-schemaName: AdminFulfillmentProvider
      required:
        - id
        - is_enabled
      properties:
        id:
          type: string
          title: id
          description: The provider's ID.
        is_enabled:
          type: boolean
          title: is_enabled
          description: The provider's is enabled.
    AdminFulfillmentProviderListResponse:
      type: object
      description: The paginated list of fulfillment providers.
      x-schemaName: AdminFulfillmentProviderListResponse
      required:
        - limit
        - offset
        - count
        - fulfillment_providers
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total count of items.
        fulfillment_providers:
          type: array
          description: The list of fulfillment providers.
          items:
            $ref: '#/components/schemas/AdminFulfillmentProvider'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminFulfillmentProviderOption:
      type: object
      description: The fulfillment option's details.
      x-schemaName: AdminFulfillmentProviderOption
      required:
        - id
        - is_return
      properties:
        id:
          type: string
          title: id
          description: The fulfillment option's ID.
        is_return:
          type: boolean
          title: is_return
          description: Whether the fulfillment option is used for returns.
    AdminFulfillmentProviderOptionsListResponse:
      type: object
      description: The paginated list of fulfillment options.
      x-schemaName: AdminFulfillmentProviderOptionsListResponse
      required:
        - limit
        - offset
        - count
        - fulfillment_options
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        fulfillment_options:
          type: array
          description: The list of fulfillment options.
          items:
            $ref: '#/components/schemas/AdminFulfillmentProviderOption'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminFulfillmentResponse:
      type: object
      description: A fulfillment's details.
      x-schemaName: AdminFulfillmentResponse
      required:
        - fulfillment
      properties:
        fulfillment:
          $ref: '#/components/schemas/AdminFulfillment'
    AdminFulfillmentSet:
      type: object
      description: The service zone's fulfillment set.
      x-schemaName: AdminFulfillmentSet
      required:
        - id
        - name
        - type
        - location
        - service_zones
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The fulfillment set's ID.
        name:
          type: string
          title: name
          description: The fulfillment set's name.
        type:
          type: string
          title: type
          description: The fulfillment set's type.
        location:
          $ref: '#/components/schemas/AdminStockLocation'
        service_zones:
          type: array
          description: The fulfillment set's service zones.
          items:
            $ref: '#/components/schemas/AdminServiceZone'
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The fulfillment set's created at.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The fulfillment set's updated at.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The fulfillment set's deleted at.
    AdminFulfillmentSetDeleteResponse:
      type: object
      description: The deletion details.
      x-schemaName: AdminFulfillmentSetDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The fulfillment set's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: fulfillment_set
        deleted:
          type: boolean
          title: deleted
          description: Whether the fulfillment set was deleted.
    AdminFulfillmentSetResponse:
      type: object
      description: The fulfillment set's details.
      x-schemaName: AdminFulfillmentSetResponse
      required:
        - fulfillment_set
      properties:
        fulfillment_set:
          $ref: '#/components/schemas/AdminFulfillmentSet'
    AdminGeoZone:
      type: object
      description: The geo zone's geo zones.
      x-schemaName: AdminGeoZone
      required:
        - id
        - type
        - country_code
        - province_code
        - city
        - postal_expression
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The geo zone's ID.
        type:
          type: string
          description: The geo zone's type.
          enum:
            - country
            - province
            - city
            - zip
        country_code:
          type: string
          title: country_code
          description: The geo zone's country code.
        province_code:
          type: string
          title: province_code
          description: The geo zone's lower-case ISO 3166-2 province code.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        city:
          type: string
          title: city
          description: The geo zone's city.
        postal_expression:
          type: object
          description: The geo zone's postal expression.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The geo zone's created at.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The geo zone's updated at.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The geo zone's deleted at.
    AdminGiftCard:
      type: object
      description: The gift card's details.
      x-schemaName: AdminGiftCard
      required:
        - line_item
        - customer
        - id
        - code
        - status
        - value
        - currency_code
        - customer_id
        - reference_id
        - note
        - reference
        - expires_at
        - created_at
        - updated_at
      properties:
        line_item:
          $ref: '#/components/schemas/AdminOrderLineItem'
        customer:
          $ref: '#/components/schemas/AdminCustomer'
        id:
          type: string
          title: id
          description: The gift card's ID.
        code:
          type: string
          title: code
          description: The gift card's code.
        status:
          type: string
          description: The gift card's status.
          enum:
            - pending
            - redeemed
        value:
          type: number
          title: value
          description: The gift card's amount.
        currency_code:
          type: string
          title: currency_code
          description: The gift card's currency code.
          example: usd
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer associated with the gift card.
        reference_id:
          type: string
          title: reference_id
          description: The gift card's reference ID.
        note:
          type: string
          title: note
          description: The gift card's note.
        reference:
          type: string
          title: reference
          description: The gift card's reference.
        expires_at:
          type: string
          title: expires_at
          description: The date the gift card expires at.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the gift card was created at.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the gift card was updated at.
    AdminGiftCardResponse:
      type: object
      description: The gift card's details.
      x-schemaName: AdminGiftCardResponse
      required:
        - gift_card
      properties:
        gift_card:
          $ref: '#/components/schemas/AdminGiftCard'
    AdminGiftCardsResponse:
      type: object
      description: The paginated list of gift cards.
      x-schemaName: AdminGiftCardsResponse
      required:
        - limit
        - offset
        - count
        - gift_cards
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of gift cards to return.
        offset:
          type: number
          title: offset
          description: The number of gift cards to skip before retrieving the results.
        count:
          type: number
          title: count
          description: The total number of gift cards available.
        gift_cards:
          type: array
          description: The list of gift cards.
          items:
            $ref: '#/components/schemas/AdminGiftCard'
        estimate_count:
          type: number
          title: estimate_count
          description: The gift card's estimate count.
          x-featureFlag: index_engine
    AdminImportProductRequest:
      type: object
      description: The import's details.
      x-schemaName: AdminImportProductRequest
      required:
        - file
      properties:
        file:
          type: object
          description: A File to upload.
          externalDocs:
            url: https://developer.mozilla.org/en-US/docs/Web/API/File
            description: Learn more about the File API
          title: file
    AdminImportProductResponse:
      type: object
      description: The import process's details.
      x-schemaName: AdminImportProductResponse
      required:
        - transaction_id
        - summary
      properties:
        transaction_id:
          type: string
          title: transaction_id
          description: The ID of the workflow execution's transaction. This is useful to confirm the import using the `/admin/products/:transaction-id/import` API route.
        summary:
          type: object
          description: The import's summary.
          required:
            - toCreate
            - toUpdate
          properties:
            toCreate:
              type: number
              title: toCreate
              description: The number of products that will be created by this import.
            toUpdate:
              type: number
              title: toUpdate
              description: The number of products that will be updated by this import.
    AdminImportProducts:
      type: object
      description: The details of the product's import file.
      x-schemaName: AdminImportProducts
      required:
        - file_key
        - originalname
        - extension
        - size
        - mime_type
      properties:
        file_key:
          type: string
          title: file_key
          description: The name of the file as stored in the configured File Module Provider.
        originalname:
          type: string
          title: originalname
          description: The file's original name.
        extension:
          type: string
          title: extension
          description: The file's extension.
          example: csv
        size:
          type: number
          title: size
          description: The file's size in bytes.
        mime_type:
          type: string
          title: mime_type
          description: The file's mime type.
          example: text/csv
    AdminIndexDetailsResponse:
      type: object
      description: The index's metadata details.
      x-schemaName: AdminIndexDetailsResponse
      required:
        - metadata
      properties:
        metadata:
          type: array
          description: The index's metadata.
          items:
            $ref: '#/components/schemas/IndexInfo'
    AdminIndexSyncPayload:
      type: object
      description: The details of the index sync.
      x-schemaName: AdminIndexSyncPayload
      required:
        - strategy
      properties:
        strategy:
          type: string
          description: The syncing strategy. `full` indicates a full reindex, while `reset` truncates tables and performs a fresh sync.
          enum:
            - full
            - reset
    AdminInitiateReceiveReturn:
      type: object
      description: The return receival details.
      x-schemaName: AdminInitiateReceiveReturn
      properties:
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        description:
          type: string
          title: description
          description: The return's description.
        metadata:
          type: object
          description: The return's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminInitiateReturnRequest:
      type: object
      description: The return's details.
      x-schemaName: AdminInitiateReturnRequest
      required:
        - order_id
      properties:
        order_id:
          type: string
          title: order_id
          description: The ID of the order the return belongs to.
        location_id:
          type: string
          title: location_id
          description: The ID of the location the items are returned to.
        description:
          type: string
          title: description
          description: The return's description.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        no_notification:
          type: boolean
          title: no_notification
          description: Whether to send the customer a notification about the created return.
        metadata:
          type: object
          description: The return's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminInventoryItem:
      type: object
      description: The inventory item's details.
      x-schemaName: AdminInventoryItem
      required:
        - id
        - requires_shipping
      properties:
        id:
          type: string
          title: id
          description: The inventory item's ID.
        sku:
          type: string
          title: sku
          description: The inventory item's sku.
        origin_country:
          type: string
          title: origin_country
          description: The inventory item's origin country.
        hs_code:
          type: string
          title: hs_code
          description: The inventory item's HS code.
        requires_shipping:
          type: boolean
          title: requires_shipping
          description: Whether the inventory item requires shipping.
        mid_code:
          type: string
          title: mid_code
          description: The inventory item's MID code.
        material:
          type: string
          title: material
          description: The inventory item's material.
        weight:
          type: number
          title: weight
          description: The inventory item's weight.
        length:
          type: number
          title: length
          description: The inventory item's length.
        height:
          type: number
          title: height
          description: The inventory item's height.
        width:
          type: number
          title: width
          description: The inventory item's width.
        title:
          type: string
          title: title
          description: The inventory item's title.
        description:
          type: string
          title: description
          description: The inventory item's description.
        thumbnail:
          type: string
          title: thumbnail
          description: The thumbnail URL of the inventory item.
        metadata:
          type: object
          description: Custom key-value pairs, used to store additional information about the inventory item.
        location_levels:
          type: array
          description: The inventory item's location levels.
          items:
            $ref: '#/components/schemas/AdminInventoryLevel'
    AdminInventoryItemResponse:
      type: object
      description: The inventory item's details.
      x-schemaName: AdminInventoryItemResponse
      required:
        - inventory_item
      properties:
        inventory_item:
          $ref: '#/components/schemas/AdminInventoryItem'
    AdminInventoryLevel:
      type: object
      description: The location level's location levels.
      x-schemaName: AdminInventoryLevel
      required:
        - id
        - created_at
        - updated_at
        - deleted_at
        - inventory_item_id
        - location_id
        - stocked_quantity
        - reserved_quantity
        - incoming_quantity
        - metadata
        - available_quantity
      properties:
        id:
          type: string
          title: id
          description: The location level's ID.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The location level's created at.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The location level's updated at.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The location level's deleted at.
        inventory_item_id:
          type: string
          title: inventory_item_id
          description: The location level's inventory item id.
        location_id:
          type: string
          title: location_id
          description: The location level's location id.
        stocked_quantity:
          type: number
          title: stocked_quantity
          description: The location level's stocked quantity.
        reserved_quantity:
          type: number
          title: reserved_quantity
          description: The location level's reserved quantity.
        incoming_quantity:
          type: number
          title: incoming_quantity
          description: The location level's incoming quantity.
        metadata:
          type: object
          description: The location level's metadata.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        inventory_item:
          type: object
        available_quantity:
          type: number
          title: available_quantity
          description: The location level's available quantity.
    AdminInvite:
      type: object
      description: The invite's details.
      x-schemaName: AdminInvite
      required:
        - id
        - email
        - accepted
        - token
        - expires_at
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The invite's ID.
        email:
          type: string
          title: email
          description: The invite's email.
          format: email
        accepted:
          type: boolean
          title: accepted
          description: Whether the invite has been accepted.
        token:
          type: string
          title: token
          description: The invite's token.
        expires_at:
          type: string
          title: expires_at
          description: The invite's expiry date.
          format: date-time
        metadata:
          type: object
          description: The invite's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the invite was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the invite was updated.
    AdminInviteAccept:
      type: object
      description: The details of the user to be created.
      properties:
        email:
          type: string
          title: email
          description: The user's email.
          format: email
        first_name:
          type: string
          title: first_name
          description: The user's first name.
        last_name:
          type: string
          title: last_name
          description: The user's last name.
      x-schemaName: AdminInviteAccept
    AdminInviteResponse:
      type: object
      description: The invite's details.
      x-schemaName: AdminInviteResponse
      required:
        - invite
      properties:
        invite:
          $ref: '#/components/schemas/AdminInvite'
    AdminLinkPriceListProducts:
      type: object
      description: The products removal details.
      properties:
        remove:
          type: array
          description: The products to remove from the price list.
          items:
            type: string
            title: remove
            description: The ID of a product.
      x-schemaName: AdminLinkPriceListProducts
    AdminLocale:
      type: object
      description: The locale's details.
      x-schemaName: AdminLocale
      required:
        - code
        - name
        - created_at
        - updated_at
        - deleted_at
      properties:
        code:
          type: string
          title: code
          description: The locale's code in BCP 47 format.
          example: fr-FR
        name:
          type: string
          title: name
          description: The locale's display name.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date and time at which the locale was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date and time at which the locale was last updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date and time at which the locale was deleted.
    AdminLocaleListResponse:
      type: object
      description: The list of locales with pagination details.
      x-schemaName: AdminLocaleListResponse
      required:
        - limit
        - offset
        - count
        - locales
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of locales returned.
        offset:
          type: number
          title: offset
          description: The number of locales skipped before retrieving the returned locales.
        count:
          type: number
          title: count
          description: The total number of locales matching the query.
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
        locales:
          type: array
          description: The list of locales.
          items:
            $ref: '#/components/schemas/AdminLocale'
    AdminLocaleResponse:
      type: object
      description: The locale's details.
      x-schemaName: AdminLocaleResponse
      required:
        - locale
      properties:
        locale:
          $ref: '#/components/schemas/AdminLocale'
    AdminMarkPaymentCollectionAsPaid:
      type: object
      description: The payment details.
      required:
        - order_id
      properties:
        order_id:
          type: string
          title: order_id
          description: The ID of the order associated with the payment collection.
      x-schemaName: AdminMarkPaymentCollectionAsPaid
    AdminNotification:
      type: object
      description: The notification's details.
      x-schemaName: AdminNotification
      required:
        - id
        - to
        - channel
        - template
        - provider_id
        - created_at
      properties:
        id:
          type: string
          title: id
          description: The notification's ID.
        to:
          type: string
          title: to
          description: Where to send the notification to. For example, if `channel` is `email`, this can be an email number.
        channel:
          type: string
          title: channel
          description: Through which channel is the notification sent through.
          example: email
        template:
          type: string
          title: template
          description: The ID of the template in a third-party service used as the notification's shape.
        data:
          type: object
          description: Data payload to send with the notification.
        trigger_type:
          type: string
          title: trigger_type
          description: What triggered this notification.
          example: order.created
        resource_id:
          type: string
          title: resource_id
          description: The ID of the associated resource. For example, if the notification was triggered because an order was created, this would be the ID of the order.
        resource_type:
          type: string
          title: resource_type
          description: The type of the resource that triggered the notification.
          example: order
        receiver_id:
          type: string
          title: receiver_id
          description: The ID of the user or customer that's receiving this notification.
        original_notification_id:
          type: string
          title: original_notification_id
          description: The ID of the original notification, if this notification is resent.
        external_id:
          type: string
          title: external_id
          description: The ID of the notification in an external or third-party system.
        provider_id:
          type: string
          title: provider_id
          description: The ID of the provider used to send the notification.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the notification was created.
    AdminNotificationListResponse:
      type: object
      description: The paginated list of notifications.
      x-schemaName: AdminNotificationListResponse
      required:
        - limit
        - offset
        - count
        - notifications
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total count of items.
        notifications:
          type: array
          description: The list of notifications.
          items:
            $ref: '#/components/schemas/AdminNotification'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminNotificationResponse:
      type: object
      description: The notification's details.
      x-schemaName: AdminNotificationResponse
      required:
        - notification
      properties:
        notification:
          $ref: '#/components/schemas/AdminNotification'
    AdminOrder:
      type: object
      description: The order's details.
      x-schemaName: AdminOrder
      required:
        - payment_collections
        - items
        - shipping_methods
        - status
        - id
        - version
        - region_id
        - customer_id
        - sales_channel_id
        - email
        - currency_code
        - payment_status
        - fulfillment_status
        - summary
        - created_at
        - updated_at
        - original_item_total
        - original_item_subtotal
        - original_item_tax_total
        - item_total
        - item_subtotal
        - item_tax_total
        - item_discount_total
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - gift_card_total
        - gift_card_tax_total
        - shipping_total
        - shipping_subtotal
        - shipping_tax_total
        - shipping_discount_total
        - original_shipping_total
        - original_shipping_subtotal
        - original_shipping_tax_total
        - credit_line_total
      properties:
        payment_collections:
          type: array
          description: The order's payment collections.
          items:
            $ref: '#/components/schemas/AdminPaymentCollection'
        fulfillments:
          type: array
          description: The order's fulfillments.
          items:
            $ref: '#/components/schemas/AdminOrderFulfillment'
        sales_channel:
          $ref: '#/components/schemas/AdminSalesChannel'
        customer:
          $ref: '#/components/schemas/AdminCustomer'
        shipping_address:
          $ref: '#/components/schemas/AdminOrderAddress'
        billing_address:
          $ref: '#/components/schemas/AdminOrderAddress'
        id:
          type: string
          title: id
          description: The order's ID.
        version:
          type: number
          title: version
          description: The order's version.
        region_id:
          type: string
          title: region_id
          description: The ID of the region associated with the order.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that placed the order.
        sales_channel_id:
          type: string
          title: sales_channel_id
          description: The ID of the sales channel the order is placed in.
        email:
          type: string
          title: email
          description: The email of the customer that placed the order.
          format: email
        currency_code:
          type: string
          title: currency_code
          description: The order's currency code.
        display_id:
          type: number
          title: display_id
          description: The order's display ID.
        items:
          type: array
          description: The order's items.
          items:
            $ref: '#/components/schemas/AdminOrderLineItem'
        shipping_methods:
          type: array
          description: The order's shipping methods.
          items:
            $ref: '#/components/schemas/AdminOrderShippingMethod'
        payment_status:
          type: string
          description: The order's payment status.
          enum:
            - canceled
            - not_paid
            - awaiting
            - authorized
            - partially_authorized
            - captured
            - partially_captured
            - partially_refunded
            - refunded
            - requires_action
        fulfillment_status:
          type: string
          description: The order's fulfillment status.
          enum:
            - canceled
            - not_fulfilled
            - partially_fulfilled
            - fulfilled
            - partially_shipped
            - shipped
            - partially_delivered
            - delivered
        transactions:
          type: array
          description: The order's transactions.
          items:
            $ref: '#/components/schemas/BaseOrderTransaction'
        summary:
          $ref: '#/components/schemas/BaseOrderSummary'
        metadata:
          type: object
          description: The order's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the order was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the order was updated.
        original_item_total:
          type: number
          title: original_item_total
          description: The total of the order's items including taxes, excluding promotions.
        original_item_subtotal:
          type: number
          title: original_item_subtotal
          description: The total of the order's items excluding taxes, including promotions.
        original_item_tax_total:
          type: number
          title: original_item_tax_total
          description: The tax total of the order's items excluding promotions.
        item_total:
          type: number
          title: item_total
          description: The total of the order's items including taxes and promotions.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The total of the order's items excluding taxes, including promotions.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The tax total of the order's items including promotions.
        original_total:
          type: number
          title: original_total
          description: The order's total excluding promotions, including taxes.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The order's total excluding taxes, including promotions.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The order's tax total, excluding promotions.
        total:
          type: number
          title: total
          description: The order's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The order's total excluding taxes, including promotions.
        tax_total:
          type: number
          title: tax_total
          description: The order's tax total including promotions.
        discount_total:
          type: number
          title: discount_total
          description: The order's discount or promotions total.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The tax total of order's discount or promotion.
        gift_card_total:
          type: number
          title: gift_card_total
          description: The order's gift card total.
        gift_card_tax_total:
          type: number
          title: gift_card_tax_total
          description: The tax total of the order's gift card.
        shipping_total:
          type: number
          title: shipping_total
          description: The order's shipping total including taxes and promotions.
        shipping_subtotal:
          type: number
          title: shipping_subtotal
          description: The order's shipping total excluding taxes, including promotions.
        shipping_tax_total:
          type: number
          title: shipping_tax_total
          description: The tax total of the order's shipping.
        original_shipping_total:
          type: number
          title: original_shipping_total
          description: The order's shipping total including taxes, excluding promotions.
        original_shipping_subtotal:
          type: number
          title: original_shipping_subtotal
          description: The order's shipping total excluding taxes, including promotions.
        original_shipping_tax_total:
          type: number
          title: original_shipping_tax_total
          description: The tax total of the order's shipping excluding promotions.
        status:
          type: string
          title: status
          description: The order's status.
        region:
          $ref: '#/components/schemas/AdminRegion'
        credit_lines:
          type: array
          description: The order's credit lines.
          items:
            $ref: '#/components/schemas/OrderCreditLine'
        credit_line_total:
          type: number
          title: credit_line_total
          description: The order's credit line total.
        item_discount_total:
          type: number
          title: item_discount_total
          description: The total discount amount applied on the order's items.
        shipping_discount_total:
          type: number
          title: shipping_discount_total
          description: The total discount amount applied on the order's shipping.
        custom_display_id:
          type: string
          title: custom_display_id
          description: The custom display ID of the order.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/order/custom-display-id
    AdminOrderAddress:
      type: object
      description: An order address.
      x-schemaName: AdminOrderAddress
      required:
        - id
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The address's ID.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer this address belongs to.
        first_name:
          type: string
          title: first_name
          description: The address's first name.
        last_name:
          type: string
          title: last_name
          description: The address's last name.
        phone:
          type: string
          title: phone
          description: The address's phone.
        company:
          type: string
          title: company
          description: The address's company.
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        city:
          type: string
          title: city
          description: The address's city.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
          example: us
        country:
          $ref: '#/components/schemas/AdminRegionCountry'
        province:
          type: string
          title: province
          description: The address's lower-case ISO 3166-2 province code.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        metadata:
          type: object
          description: The address's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the address was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the address was updated.
    AdminOrderChange:
      type: object
      description: The order change's details.
      x-schemaName: AdminOrderChange
      required:
        - order
        - claim
        - return_order
        - exchange
        - actions
        - status
        - id
        - version
        - metadata
        - created_at
        - updated_at
        - order_id
        - return_id
        - exchange_id
        - claim_id
        - requested_by
        - requested_at
        - confirmed_by
        - confirmed_at
        - declined_by
        - declined_reason
        - declined_at
        - canceled_by
        - canceled_at
      properties:
        id:
          type: string
          title: id
          description: The order change's ID.
        version:
          type: number
          title: version
          description: The order change's version. This will be the order's version when the change is applied.
        change_type:
          type: string
          description: The order change's type.
          enum:
            - return
            - exchange
            - claim
            - edit
        order_id:
          type: string
          title: order_id
          description: The ID of the order this change applies on.
        return_id:
          type: string
          title: return_id
          description: The ID of the associated return.
        exchange_id:
          type: string
          title: exchange_id
          description: The ID of the associated exchange.
        claim_id:
          type: string
          title: claim_id
          description: The ID of the associated claim.
        order:
          $ref: '#/components/schemas/AdminOrder'
        return_order:
          $ref: '#/components/schemas/AdminReturn'
        exchange:
          $ref: '#/components/schemas/AdminExchange'
        claim:
          $ref: '#/components/schemas/AdminClaim'
        actions:
          type: array
          description: The order change's actions.
          items:
            $ref: '#/components/schemas/AdminOrderChangeAction'
        status:
          type: string
          description: The order change's status.
          enum:
            - canceled
            - requested
            - pending
            - confirmed
            - declined
        requested_by:
          type: string
          title: requested_by
          description: The ID of the user that requested the change.
        requested_at:
          type: string
          title: requested_at
          description: The date the order change was requested.
          format: date-time
        confirmed_by:
          type: string
          title: confirmed_by
          description: The ID of the user that confirmed the order change.
        confirmed_at:
          type: string
          title: confirmed_at
          description: The date the order change was confirmed.
          format: date-time
        declined_by:
          type: string
          title: declined_by
          description: The ID of the user that declined the order change.
        declined_reason:
          type: string
          title: declined_reason
          description: The reason the order change was declined.
        metadata:
          type: object
          description: The order change's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        declined_at:
          type: string
          title: declined_at
          description: The date the order change was declined.
          format: date-time
        canceled_by:
          type: string
          title: canceled_by
          description: The ID of the user that canceled the order change.
        canceled_at:
          type: string
          title: canceled_at
          description: The date the order change was canceled.
          format: date-time
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the order change was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the order change was updated.
        carry_over_promotions:
          type: boolean
          title: carry_over_promotions
          description: Whether promotions from the original order should be carried over to the order change (specifically, exchanges).
    AdminOrderChangeAction:
      type: object
      description: The order change action's details.
      x-schemaName: AdminOrderChangeAction
      required:
        - order_change
        - order
        - id
        - created_at
        - updated_at
        - order_id
        - internal_note
        - return_id
        - exchange_id
        - claim_id
        - ordering
        - order_change_id
        - reference
        - reference_id
        - action
        - details
      properties:
        id:
          type: string
          title: id
          description: The action's ID.
        order_change_id:
          type: string
          title: order_change_id
          description: The ID of the order change that the action belongs to.
        order_change:
          type: object
        order_id:
          type: string
          title: order_id
          description: The ID of the order the associated change is for.
        return_id:
          type: string
          title: return_id
          description: The ID of the associated return.
        claim_id:
          type: string
          title: claim_id
          description: The ID of the associated claim.
        exchange_id:
          type: string
          title: exchange_id
          description: The ID of the associated exchange.
        order:
          $ref: '#/components/schemas/AdminOrder'
        reference:
          type: string
          title: reference
          description: The name of the table this action applies on.
          enum:
            - claim
            - exchange
            - return
            - order_shipping_method
        reference_id:
          type: string
          title: reference_id
          description: The ID of the record in the referenced table.
        action:
          type: string
          description: The applied action.
          enum:
            - CANCEL_RETURN_ITEM
            - FULFILL_ITEM
            - DELIVER_ITEM
            - CANCEL_ITEM_FULFILLMENT
            - ITEM_ADD
            - ITEM_REMOVE
            - ITEM_UPDATE
            - RECEIVE_DAMAGED_RETURN_ITEM
            - RECEIVE_RETURN_ITEM
            - RETURN_ITEM
            - SHIPPING_ADD
            - SHIPPING_REMOVE
            - SHIP_ITEM
            - WRITE_OFF_ITEM
            - REINSTATE_ITEM
        details:
          type: object
          description: The action's details.
          example:
            reference_id: 123
            quantity: 1
        internal_note:
          type: string
          title: internal_note
          description: A note that's viewed only by admin users.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the action was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the action was updated.
        ordering:
          type: number
          title: ordering
          description: The action's order in the sequence of actions.
    AdminOrderChangeResponse:
      type: object
      description: The details of the order change.
      x-schemaName: AdminOrderChangeResponse
      required:
        - order_change
      properties:
        order_change:
          $ref: '#/components/schemas/AdminOrderChange'
    AdminOrderChangesResponse:
      type: object
      description: The details of an order's changes.
      x-schemaName: AdminOrderChangesResponse
      required:
        - order_changes
      properties:
        order_changes:
          type: array
          description: An order's changes.
          items:
            $ref: '#/components/schemas/AdminOrderChange'
    AdminOrderEditPreviewResponse:
      type: object
      description: The preview of an order edit.
      x-schemaName: AdminOrderEditPreviewResponse
      required:
        - order_preview
      properties:
        order_preview:
          $ref: '#/components/schemas/AdminOrderPreview'
    AdminOrderEditResponse:
      type: object
      description: An order edit's details.
      x-schemaName: AdminOrderEditResponse
      required:
        - order_change
      properties:
        order_change:
          $ref: '#/components/schemas/AdminOrderChange'
    AdminOrderFulfillment:
      type: object
      description: The fulfillment's details.
      x-schemaName: AdminOrderFulfillment
      required:
        - id
        - location_id
        - packed_at
        - shipped_at
        - delivered_at
        - canceled_at
        - requires_shipping
        - data
        - provider_id
        - shipping_option_id
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The fulfillment's ID.
        location_id:
          type: string
          title: location_id
          description: The ID of the location the items are fulfilled from.
        packed_at:
          type: string
          title: packed_at
          description: The date the items were packed.
          format: date-time
        shipped_at:
          type: string
          title: shipped_at
          description: The date the items were shipped.
          format: date-time
        delivered_at:
          type: string
          title: delivered_at
          description: The date the items were delivered.
          format: date-time
        canceled_at:
          type: string
          title: canceled_at
          description: The date the items were canceled.
          format: date-time
        data:
          type: object
          description: Data useful for the fulfillment provider handling it. This is taken from the associated shipping option.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#data-property
        provider_id:
          type: string
          title: provider_id
          description: The ID of the fulfillment provider used to handle the fulfillment.
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the associated shipping option.
        metadata:
          type: object
          description: The fulfillment's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the fulfillment was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the fulfillment was updated.
        requires_shipping:
          type: boolean
          title: requires_shipping
          description: Whether the fulfillment requires shipping.
    AdminOrderItem:
      type: object
      description: The order item's details.
      x-schemaName: AdminOrderItem
      required:
        - order_id
        - item_id
        - version
        - history
        - item
      properties:
        order_id:
          type: string
          title: order_id
          description: The ID of the order this item belongs to.
        item_id:
          type: string
          title: item_id
          description: The ID of the associated line item.
        version:
          type: number
          title: version
          description: The order item's version.
        history:
          type: object
          description: The order item's history.
          required:
            - version
          properties:
            version:
              type: object
              description: The version changes of the item.
              required:
                - from
                - to
              properties:
                from:
                  type: number
                  title: from
                  description: The original version.
                to:
                  type: number
                  title: to
                  description: The new version.
        item:
          $ref: '#/components/schemas/AdminOrderLineItem'
    AdminOrderLineItem:
      type: object
      description: The item's details.
      x-schemaName: AdminOrderLineItem
      required:
        - title
        - id
        - metadata
        - created_at
        - updated_at
        - item_total
        - item_subtotal
        - item_tax_total
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - subtitle
        - thumbnail
        - variant_id
        - product_id
        - product_title
        - product_description
        - product_subtitle
        - product_type_id
        - product_type
        - product_collection
        - product_handle
        - variant_sku
        - variant_barcode
        - variant_title
        - variant_option_values
        - requires_shipping
        - is_discountable
        - is_tax_inclusive
        - unit_price
        - quantity
        - detail
        - refundable_total
        - refundable_total_per_unit
      properties:
        id:
          type: string
          title: id
          description: The item's ID.
        title:
          type: string
          title: title
          description: The item's title.
        subtitle:
          type: string
          title: subtitle
          description: The item's subtitle.
        thumbnail:
          type: string
          title: thumbnail
          description: The URL of the item's thumbnail.
        variant:
          $ref: '#/components/schemas/AdminProductVariant'
        variant_id:
          type: string
          title: variant_id
          description: The ID of the associated variant.
        product:
          $ref: '#/components/schemas/AdminProduct'
        product_id:
          type: string
          title: product_id
          description: The ID of the associated product.
        product_title:
          type: string
          title: product_title
          description: The item's product title.
        product_description:
          type: string
          title: product_description
          description: The item's product description.
        product_subtitle:
          type: string
          title: product_subtitle
          description: The item's product subtitle.
        product_type:
          type: string
          title: product_type
          description: The item's product type.
        product_collection:
          type: string
          title: product_collection
          description: The ID of the collection the item's product belongs to.
        product_handle:
          type: string
          title: product_handle
          description: The item's product handle.
        variant_sku:
          type: string
          title: variant_sku
          description: The item's variant SKU.
        variant_barcode:
          type: string
          title: variant_barcode
          description: The item's variant barcode.
        variant_title:
          type: string
          title: variant_title
          description: The item's variant title.
        variant_option_values:
          type: object
          description: The values of the item variant's options.
          example:
            Color: Blue
        requires_shipping:
          type: boolean
          title: requires_shipping
          description: Whether the item requires shipping.
        is_discountable:
          type: boolean
          title: is_discountable
          description: Whether the item is discountable.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the item is tax inclusive.
        compare_at_unit_price:
          type: number
          title: compare_at_unit_price
          description: The original price of the item before a promotion or sale.
        unit_price:
          type: number
          title: unit_price
          description: The item's unit price.
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        tax_lines:
          type: array
          description: The item's tax lines.
          items:
            $ref: '#/components/schemas/BaseOrderLineItemTaxLine'
        adjustments:
          type: array
          description: The item's adjustments.
          items:
            $ref: '#/components/schemas/BaseOrderLineItemAdjustment'
        detail:
          type: object
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the item was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the item was updated.
        metadata:
          type: object
          description: The item's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        original_total:
          type: number
          title: original_total
          description: The item's total including taxes, excluding promotions.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The item's total excluding taxes, including promotions.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The total taxes of the item, excluding promotions.
        item_total:
          type: number
          title: item_total
          description: The total taxes of the item, including promotions.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The item's total excluding taxes, including promotions.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The total taxes of the item, including promotions.
        total:
          type: number
          title: total
          description: The item's total, including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The item's subtotal excluding taxes, including promotions.
        tax_total:
          type: number
          title: tax_total
          description: The tax total of the item including promotions.
        discount_total:
          type: number
          title: discount_total
          description: The total discount amount of the item.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The total taxes applied on the discounted amount.
        refundable_total:
          type: number
          title: refundable_total
          description: The total refundable amount of the item's total.
        refundable_total_per_unit:
          type: number
          title: refundable_total_per_unit
          description: The total refundable amount of the item's total for a single quantity.
        product_type_id:
          type: string
          title: product_type_id
          description: The ID of the associated product's type.
    AdminOrderPreview:
      type: object
      description: A preview of an order if a change, such as exchange, return, edit, or claim is applied on it.
      x-schemaName: AdminOrderPreview
      required:
        - return_requested_total
        - order_change
        - status
        - id
        - version
        - region_id
        - customer_id
        - sales_channel_id
        - email
        - currency_code
        - payment_collections
        - payment_status
        - fulfillment_status
        - summary
        - created_at
        - updated_at
        - original_item_total
        - original_item_subtotal
        - original_item_tax_total
        - item_total
        - item_subtotal
        - item_tax_total
        - item_discount_total
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - gift_card_total
        - gift_card_tax_total
        - shipping_total
        - shipping_subtotal
        - shipping_tax_total
        - shipping_discount_total
        - original_shipping_total
        - original_shipping_subtotal
        - original_shipping_tax_total
        - credit_line_total
      properties:
        return_requested_total:
          type: number
          title: return_requested_total
          description: The total of the requested return.
        order_change:
          $ref: '#/components/schemas/AdminOrderChange'
        items:
          type: array
          description: The order's items.
          items:
            allOf:
              - type: object
                description: An order's item.
                x-schemaName: BaseOrderLineItem
                required:
                  - id
                  - title
                  - subtitle
                  - thumbnail
                  - variant_id
                  - product_id
                  - product_title
                  - product_description
                  - product_subtitle
                  - product_type
                  - product_collection
                  - product_handle
                  - variant_sku
                  - variant_barcode
                  - variant_title
                  - variant_option_values
                  - requires_shipping
                  - is_discountable
                  - is_tax_inclusive
                  - unit_price
                  - quantity
                  - detail
                  - created_at
                  - updated_at
                  - metadata
                  - original_total
                  - original_subtotal
                  - original_tax_total
                  - item_total
                  - item_subtotal
                  - item_tax_total
                  - total
                  - subtotal
                  - tax_total
                  - discount_total
                  - discount_tax_total
                  - refundable_total
                  - refundable_total_per_unit
                properties:
                  id:
                    type: string
                    title: id
                    description: The item's ID.
                  title:
                    type: string
                    title: title
                    description: The item's title.
                  subtitle:
                    type: string
                    title: subtitle
                    description: The item's subtitle.
                  thumbnail:
                    type: string
                    title: thumbnail
                    description: The URL of the item's thumbnail.
                  variant:
                    $ref: '#/components/schemas/BaseProductVariant'
                  variant_id:
                    type: string
                    title: variant_id
                    description: The ID of the associated variant.
                  product:
                    $ref: '#/components/schemas/AdminProduct'
                  product_id:
                    type: string
                    title: product_id
                    description: The ID of the associated product.
                  product_title:
                    type: string
                    title: product_title
                    description: The title of the item's product.
                  product_description:
                    type: string
                    title: product_description
                    description: The description of the item's product.
                  product_subtitle:
                    type: string
                    title: product_subtitle
                    description: The subtitle of the item's product.
                  product_type:
                    type: string
                    title: product_type
                    description: The ID of type of the item's product.
                  product_collection:
                    type: string
                    title: product_collection
                    description: The ID of collection of the item's product.
                  product_handle:
                    type: string
                    title: product_handle
                    description: The handle of the item's product.
                  variant_sku:
                    type: string
                    title: variant_sku
                    description: The SKU of the item's variant.
                  variant_barcode:
                    type: string
                    title: variant_barcode
                    description: The barcode of the item's variant.
                  variant_title:
                    type: string
                    title: variant_title
                    description: The title of the item's variant.
                  variant_option_values:
                    type: object
                    description: The option values of the item's variant as key-value pairs. The key is the title of an option, and the value is the option's value.
                  requires_shipping:
                    type: boolean
                    title: requires_shipping
                    description: Whether the item requires shipping.
                  is_discountable:
                    type: boolean
                    title: is_discountable
                    description: Whether the item is discountable.
                  is_tax_inclusive:
                    type: boolean
                    title: is_tax_inclusive
                    description: Whether the item's price includes taxes.
                  compare_at_unit_price:
                    type: number
                    title: compare_at_unit_price
                    description: The original price of the item before a promotion or sale.
                  unit_price:
                    type: number
                    title: unit_price
                    description: The item's unit price.
                  quantity:
                    type: number
                    title: quantity
                    description: The item's quantity.
                  tax_lines:
                    type: array
                    description: The item's tax lines.
                    items:
                      $ref: '#/components/schemas/BaseOrderLineItemTaxLine'
                  adjustments:
                    type: array
                    description: The item's adjustments.
                    items:
                      $ref: '#/components/schemas/BaseOrderLineItemAdjustment'
                  detail:
                    $ref: '#/components/schemas/BaseOrderItemDetail'
                  created_at:
                    type: string
                    format: date-time
                    title: created_at
                    description: The date the item was created.
                  updated_at:
                    type: string
                    format: date-time
                    title: updated_at
                    description: The date the item was updated.
                  metadata:
                    type: object
                    description: The item's metadata, can hold custom key-value pairs.
                    externalDocs:
                      url: https://docs.medusajs.com/api/admin#manage-metadata
                      description: Learn how to manage metadata
                  original_total:
                    type: number
                    title: original_total
                    description: The item's total including taxes, excluding promotions.
                  original_subtotal:
                    type: number
                    title: original_subtotal
                    description: The item's total excluding taxes, including promotions.
                  original_tax_total:
                    type: number
                    title: original_tax_total
                    description: The tax total of the item excluding promotions.
                  item_total:
                    type: number
                    title: item_total
                    description: The item's total for a single unit including taxes and promotions.
                  item_subtotal:
                    type: number
                    title: item_subtotal
                    description: The item's total for a single unit excluding taxes, including promotions.
                  item_tax_total:
                    type: number
                    title: item_tax_total
                    description: The tax total for a single unit of the item including promotions.
                  total:
                    type: number
                    title: total
                    description: The item's total including taxes and promotions.
                  subtotal:
                    type: number
                    title: subtotal
                    description: The item's total excluding taxes, including promotions.
                  tax_total:
                    type: number
                    title: tax_total
                    description: The tax total of the item including promotions.
                  discount_total:
                    type: number
                    title: discount_total
                    description: The total of the item's discount / promotion.
                  discount_tax_total:
                    type: number
                    title: discount_tax_total
                    description: The tax total of the item's discount / promotion
                  refundable_total:
                    type: number
                    title: refundable_total
                    description: The total refundable amount of the item's total.
                  refundable_total_per_unit:
                    type: number
                    title: refundable_total_per_unit
                    description: The total refundable amount of the item's total for a single unit.
              - type: object
                description: An order's item.
                properties:
                  actions:
                    type: array
                    description: The actions applied on an item.
                    items:
                      type: object
                      description: The action's details.
                      x-schemaName: BaseOrderChangeAction
        shipping_methods:
          type: array
          description: The order's shipping methods.
          items:
            allOf:
              - type: object
                description: The shipping method's details.
                x-schemaName: BaseOrderShippingMethod
                required:
                  - id
                  - order_id
                  - name
                  - amount
                  - is_tax_inclusive
                  - shipping_option_id
                  - data
                  - metadata
                  - original_total
                  - original_subtotal
                  - original_tax_total
                  - total
                  - subtotal
                  - tax_total
                  - discount_total
                  - discount_tax_total
                  - created_at
                  - updated_at
                properties:
                  id:
                    type: string
                    title: id
                    description: The shipping method's ID.
                  order_id:
                    type: string
                    title: order_id
                    description: The ID of the order this shipping method belongs to.
                  name:
                    type: string
                    title: name
                    description: The shipping method's name.
                  description:
                    type: string
                    title: description
                    description: The shipping method's description.
                  amount:
                    type: number
                    title: amount
                    description: The shipping method's amount.
                  is_tax_inclusive:
                    type: boolean
                    title: is_tax_inclusive
                    description: Whether the shipping method's amount is tax inclusive.
                  shipping_option_id:
                    type: string
                    title: shipping_option_id
                    description: The ID of the shipping option this method was created from.
                  data:
                    type: object
                    description: The data relevant for the fulfillment provider to process this shipment.
                    externalDocs:
                      url: https://docs.medusajs.com/resources/commerce-modules/order/concepts#data-property
                  metadata:
                    type: object
                    description: The shipping method's metadata, can hold custom key-value pairs.
                    externalDocs:
                      url: https://docs.medusajs.com/api/admin#manage-metadata
                      description: Learn how to manage metadata
                  tax_lines:
                    type: array
                    description: The shipping method's tax lines.
                    items:
                      $ref: '#/components/schemas/BaseOrderShippingMethodTaxLine'
                  adjustments:
                    type: array
                    description: The shipping method's adjustments.
                    items:
                      $ref: '#/components/schemas/BaseOrderShippingMethodAdjustment'
                  original_total:
                    oneOf:
                      - type: string
                        title: original_total
                        description: The shipping method's total including taxes, excluding promotions.
                      - type: number
                        title: original_total
                        description: The shipping method's total including taxes, excluding promotions.
                  original_subtotal:
                    oneOf:
                      - type: string
                        title: original_subtotal
                        description: The shipping method's total excluding taxes, including promotions.
                      - type: number
                        title: original_subtotal
                        description: The shipping method's total excluding taxes, including promotions.
                  original_tax_total:
                    oneOf:
                      - type: string
                        title: original_tax_total
                        description: The tax total of the shipping method excluding promotions.
                      - type: number
                        title: original_tax_total
                        description: The tax total of the shipping method excluding promotions.
                  total:
                    oneOf:
                      - type: string
                        title: total
                        description: The shipping method's total including taxes and promotions.
                      - type: number
                        title: total
                        description: The shipping method's total including taxes and promotions.
                  subtotal:
                    oneOf:
                      - type: string
                        title: subtotal
                        description: The shipping method's total excluding taxes, including promotions.
                      - type: number
                        title: subtotal
                        description: The shipping method's total excluding taxes, including promotions.
                  tax_total:
                    oneOf:
                      - type: string
                        title: tax_total
                        description: The tax total of the shipping method including promotions.
                      - type: number
                        title: tax_total
                        description: The tax total of the shipping method including promotions.
                  discount_total:
                    oneOf:
                      - type: string
                        title: discount_total
                        description: The total of the shipping method's promotion.
                      - type: number
                        title: discount_total
                        description: The total of the shipping method's promotion.
                  discount_tax_total:
                    oneOf:
                      - type: string
                        title: discount_tax_total
                        description: The tax total of the shipping method's promotion.
                      - type: number
                        title: discount_tax_total
                        description: The shipping method's discount tax total.
                  created_at:
                    type: string
                    format: date-time
                    title: created_at
                    description: The date the shipping method was created.
                  updated_at:
                    type: string
                    format: date-time
                    title: updated_at
                    description: The date the shipping method was updated.
              - type: object
                description: The shipping method's details.
                properties:
                  actions:
                    type: array
                    description: The actions applied on the shipping method.
                    items:
                      type: object
                      description: The action's details.
                      x-schemaName: BaseOrderChangeAction
        currency_code:
          type: string
          title: currency_code
          description: The order's currency code.
        version:
          type: number
          title: version
          description: The order's version when this preview is applied.
        id:
          type: string
          title: id
          description: The order's ID.
        region_id:
          type: string
          title: region_id
          description: The ID of the order's associated region.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that placed the order.
        sales_channel_id:
          type: string
          title: sales_channel_id
          description: The ID of the sales channel that the order was placed in.
        email:
          type: string
          title: email
          description: The email of the customer that placed the order.
          format: email
        display_id:
          type: number
          title: display_id
          description: The order's display ID.
        shipping_address:
          $ref: '#/components/schemas/AdminOrderAddress'
        billing_address:
          $ref: '#/components/schemas/AdminOrderAddress'
        payment_collections:
          type: array
          description: The order's payment collections.
          items:
            $ref: '#/components/schemas/AdminPaymentCollection'
        payment_status:
          type: string
          description: The order's payment status.
          enum:
            - canceled
            - not_paid
            - awaiting
            - authorized
            - partially_authorized
            - captured
            - partially_captured
            - partially_refunded
            - refunded
            - requires_action
        fulfillments:
          type: array
          description: The order's fulfillments.
          items:
            $ref: '#/components/schemas/AdminOrderFulfillment'
        fulfillment_status:
          type: string
          description: The order's fulfillment status.
          enum:
            - canceled
            - not_fulfilled
            - partially_fulfilled
            - fulfilled
            - partially_shipped
            - shipped
            - partially_delivered
            - delivered
        transactions:
          type: array
          description: The order's transactions.
          items:
            $ref: '#/components/schemas/BaseOrderTransaction'
        summary:
          $ref: '#/components/schemas/BaseOrderSummary'
        metadata:
          type: object
          description: The order's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the order was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the order was updated.
        original_item_total:
          type: number
          title: original_item_total
          description: The total of the order's items including taxes, excluding promotions.
        original_item_subtotal:
          type: number
          title: original_item_subtotal
          description: The total of the order's items excluding taxes, including promotions.
        original_item_tax_total:
          type: number
          title: original_item_tax_total
          description: The tax total of the order's items excluding promotions.
        item_total:
          type: number
          title: item_total
          description: The total of the order's items including taxes and promotions.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The total of the order's items excluding taxes, including promotions.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The tax total of the order's items including promotions.
        original_total:
          type: number
          title: original_total
          description: The order's total excluding promotions, including taxes.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The order's total excluding taxes, including promotions.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The order's tax total, excluding promotions.
        total:
          type: number
          title: total
          description: The order's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The order's total excluding taxes, including promotions.
        tax_total:
          type: number
          title: tax_total
          description: The order's tax total including promotions.
        discount_total:
          type: number
          title: discount_total
          description: The order's discount or promotions total.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The tax total of order's discount or promotion.
        gift_card_total:
          type: number
          title: gift_card_total
          description: The order's gift card total.
        gift_card_tax_total:
          type: number
          title: gift_card_tax_total
          description: The tax total of the order's gift card.
        shipping_total:
          type: number
          title: shipping_total
          description: The order's shipping total including taxes and promotions.
        shipping_subtotal:
          type: number
          title: shipping_subtotal
          description: The order's shipping total excluding taxes, including promotions.
        shipping_tax_total:
          type: number
          title: shipping_tax_total
          description: The tax total of the order's shipping.
        original_shipping_total:
          type: number
          title: original_shipping_total
          description: The order's shipping total including taxes, excluding promotions.
        original_shipping_subtotal:
          type: number
          title: original_shipping_subtotal
          description: The order's shipping total excluding taxes, including promotions.
        original_shipping_tax_total:
          type: number
          title: original_shipping_tax_total
          description: The tax total of the order's shipping excluding promotions.
        customer:
          $ref: '#/components/schemas/AdminCustomer'
        sales_channel:
          $ref: '#/components/schemas/AdminSalesChannel'
        status:
          type: string
          title: status
          description: The order's status.
        region:
          $ref: '#/components/schemas/AdminRegion'
        credit_lines:
          type: array
          description: The order preview's credit lines.
          items:
            $ref: '#/components/schemas/OrderCreditLine'
        credit_line_total:
          type: number
          title: credit_line_total
          description: The order preview's credit line total.
        item_discount_total:
          type: number
          title: item_discount_total
          description: The total discount amount applied on the order's items.
        shipping_discount_total:
          type: number
          title: shipping_discount_total
          description: The total discount amount applied on the order's shipping.
        custom_display_id:
          type: string
          title: custom_display_id
          description: The custom display ID of the order.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/order/custom-display-id
    AdminOrderPreviewResponse:
      type: object
      description: The preview of an order.
      x-schemaName: AdminOrderPreviewResponse
      required:
        - order
      properties:
        order:
          $ref: '#/components/schemas/AdminOrderPreview'
    AdminOrderResponse:
      type: object
      description: An order's details.
      x-schemaName: AdminOrderResponse
      required:
        - order
      properties:
        order:
          $ref: '#/components/schemas/AdminOrder'
    AdminOrderReturnResponse:
      type: object
      description: The order return details.
      x-schemaName: AdminOrderReturnResponse
      required:
        - order
        - return
      properties:
        order:
          $ref: '#/components/schemas/Order'
        return:
          $ref: '#/components/schemas/AdminReturn'
    AdminOrderShippingMethod:
      type: object
      description: The shipping method's details.
      x-schemaName: AdminOrderShippingMethod
      required:
        - id
        - order_id
        - name
        - amount
        - is_tax_inclusive
        - shipping_option_id
        - data
        - metadata
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The shipping method's ID.
        order_id:
          type: string
          title: order_id
          description: The ID of the order the shipping method belongs to.
        name:
          type: string
          title: name
          description: The shipping method's name.
        description:
          type: string
          title: description
          description: The shipping method's description.
        amount:
          type: number
          title: amount
          description: The shipping method's amount.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the shipping method's amount includes applied taxes.
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the shipping option this method was created from.
        data:
          type: object
          description: The shipping method's data, useful for fulfillment provider handling its fulfillment.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#data-property
        metadata:
          type: object
          description: The shipping method's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        tax_lines:
          type: array
          description: The shipping method's tax lines.
          items:
            $ref: '#/components/schemas/BaseOrderShippingMethodTaxLine'
        adjustments:
          type: array
          description: The shipping method's adjustments.
          items:
            $ref: '#/components/schemas/BaseOrderShippingMethodAdjustment'
        original_total:
          type: number
          title: original_total
          description: The shipping method's total including taxes, excluding promotions.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The shipping method's total excluding taxes, including promotions.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The shipping method's total taxes excluding promotions.
        total:
          type: number
          title: total
          description: The shipping method's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The shipping method's total excluding taxes, including promotions.
        tax_total:
          type: number
          title: tax_total
          description: The shipping method's tax total including promotions.
        discount_total:
          type: number
          title: discount_total
          description: The total discounts applied on the shipping method.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The taxes applied on the discount amount.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the shipping method was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the shipping method was updated.
        detail:
          $ref: '#/components/schemas/BaseOrderShippingDetail'
    AdminPayment:
      type: object
      description: The payment's details.
      x-schemaName: AdminPayment
      required:
        - id
        - amount
        - currency_code
        - provider_id
      properties:
        id:
          type: string
          title: id
          description: The payment's ID.
        amount:
          type: number
          title: amount
          description: The payment's amount.
        authorized_amount:
          type: number
          title: authorized_amount
          description: The amount authorized of the payment.
        currency_code:
          type: string
          title: currency_code
          description: The payment's currency code.
        provider_id:
          type: string
          title: provider_id
          description: The ID of the payment provider used to process this payment.
        data:
          type: object
          description: The payment's data, useful for processing by the payment provider.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/payment/payment#whats-a-payment
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the payment was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the payment was updated.
        captured_at:
          type: string
          format: date-time
          title: captured_at
          description: The date the payment was captured.
        canceled_at:
          type: string
          format: date-time
          title: canceled_at
          description: The date the payment was canceled.
        captured_amount:
          type: number
          title: captured_amount
          description: The captured amount of the payment.
        refunded_amount:
          type: number
          title: captured_amount
          description: The refunded amount of the payment.
        captures:
          type: array
          description: The details of payment captures.
          items:
            $ref: '#/components/schemas/BaseCapture'
        refunds:
          type: array
          description: The details of payment refunds.
          items:
            $ref: '#/components/schemas/AdminRefund'
        payment_collection:
          type: object
        payment_session:
          $ref: '#/components/schemas/AdminPaymentSession'
    AdminPaymentCollection:
      type: object
      description: The payment collection's details.
      x-schemaName: AdminPaymentCollection
      required:
        - payment_providers
        - id
        - currency_code
        - amount
        - status
      properties:
        id:
          type: string
          title: id
          description: The payment collection's ID.
        currency_code:
          type: string
          title: currency_code
          description: The payment collection's currency code.
        amount:
          type: number
          title: amount
          description: The total amount to be paid.
        authorized_amount:
          type: number
          title: authorized_amount
          description: The total authorized amount of the collection's payments.
        captured_amount:
          type: number
          title: captured_amount
          description: The total captured amount of the collection's payments.
        refunded_amount:
          type: number
          title: refunded_amount
          description: The total refunded amount of the collection's payments.
        completed_at:
          type: string
          format: date-time
          title: completed_at
          description: The date the payment collection was completed.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the payment collection was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the payment collection was updated.
        metadata:
          type: object
          description: The payment collection's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        status:
          type: string
          description: The payment collection's status.
          enum:
            - canceled
            - not_paid
            - awaiting
            - authorized
            - partially_authorized
        payment_providers:
          type: array
          description: The payment provider used to process the collection's payments and sessions.
          items:
            $ref: '#/components/schemas/AdminPaymentProvider'
        payment_sessions:
          type: array
          description: The payment collection's payment sessions.
          items:
            $ref: '#/components/schemas/AdminPaymentSession'
        payments:
          type: array
          description: The payment collection's payments.
          items:
            $ref: '#/components/schemas/AdminPayment'
    AdminPaymentCollectionResponse:
      type: object
      description: The payment collection's details.
      x-schemaName: AdminPaymentCollectionResponse
      required:
        - payment_collection
      properties:
        payment_collection:
          $ref: '#/components/schemas/AdminPaymentCollection'
    AdminPaymentProvider:
      type: object
      description: The payment provider's details.
      x-schemaName: AdminPaymentProvider
      required:
        - is_enabled
        - id
      properties:
        id:
          type: string
          title: id
          description: The payment provider's ID.
        is_enabled:
          type: boolean
          title: is_enabled
          description: Whether the payment provider is enabled.
    AdminPaymentResponse:
      type: object
      description: The payment's details.
      x-schemaName: AdminPaymentResponse
      required:
        - payment
      properties:
        payment:
          $ref: '#/components/schemas/AdminPayment'
    AdminPaymentSession:
      type: object
      description: The payment session's details.
      x-schemaName: AdminPaymentSession
      properties:
        id:
          type: string
          title: id
          description: The payment session's ID.
        amount:
          type: number
          title: amount
          description: The payment session's amount.
        currency_code:
          type: string
          title: currency_code
          description: The payment session's currency code.
          example: usd
        provider_id:
          type: string
          title: provider_id
          description: The ID of the payment provider processing this session.
        data:
          type: object
          description: The payment session's data, useful for the payment provider processing the payment.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/payment/payment-session#data-property
        context:
          type: object
          description: The context around the payment, such as the customer's details.
          example:
            customer:
              id: cus_123
        status:
          type: string
          description: The payment session's status.
          enum:
            - authorized
            - captured
            - canceled
            - pending
            - requires_more
            - error
        authorized_at:
          type: string
          title: authorized_at
          description: The date the payment session was authorized.
          format: date-time
        payment_collection:
          type: object
        payment:
          $ref: '#/components/schemas/BasePayment'
      required:
        - id
        - amount
        - currency_code
        - provider_id
        - data
        - status
    AdminPlugin:
      type: object
      description: The plugin's details.
      x-schemaName: AdminPlugin
      required:
        - name
      properties:
        name:
          type: string
          title: name
          description: The plugin's name.
    AdminPluginsListResponse:
      type: object
      description: The list of plugins.
      x-schemaName: AdminPluginsListResponse
      required:
        - plugins
      properties:
        plugins:
          type: array
          description: The list of plugins.
          items:
            $ref: '#/components/schemas/AdminPlugin'
    AdminPostCancelClaimReqSchema:
      type: object
      description: The details of canceling a claim.
      x-schemaName: AdminPostCancelClaimReqSchema
      properties:
        no_notification:
          type: boolean
          title: no_notification
          description: Whether to send the customer a notification about the claim's cancelation.
    AdminPostCancelExchangeReqSchema:
      type: object
      description: The details of canceling an exchange.
      x-schemaName: AdminPostCancelExchangeReqSchema
      properties:
        no_notification:
          type: boolean
          title: no_notification
          description: Whether to send a notification to the customer about the exchange's cancelation.
    AdminPostCancelReturnReqSchema:
      type: object
      description: The details of canceling a return.
      x-schemaName: AdminPostCancelReturnReqSchema
      properties:
        no_notification:
          type: boolean
          title: no_notification
          description: Whether to send the customer a notification about the return's cancelation.
    AdminPostExchangesRequestItemsReturnActionReqSchema:
      type: object
      description: The details to update in an inbound (returned) item.
      x-schemaName: AdminPostExchangesRequestItemsReturnActionReqSchema
      properties:
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        reason_id:
          type: string
          title: reason_id
          description: The ID of the associated return reason.
        metadata:
          type: object
          description: The exchange's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminPostOrderEditsAddItemsReqSchema:
      type: object
      description: The details of items to be edited.
      x-schemaName: AdminPostOrderEditsAddItemsReqSchema
      properties:
        items:
          type: array
          description: The details of items to be edited.
          items:
            type: object
            description: An item's details.
            required:
              - variant_id
              - quantity
            properties:
              variant_id:
                type: string
                title: variant_id
                description: The ID of the associated product variant.
              quantity:
                type: number
                title: quantity
                description: The item's quantity.
              unit_price:
                type: number
                title: unit_price
                description: The item's unit price.
              internal_note:
                type: string
                title: internal_note
                description: A note viewed only by admin users.
              allow_backorder:
                type: boolean
                title: allow_backorder
                description: Whether the item can be added even if there's no available invenotory quantity of the variant.
              metadata:
                type: object
                description: The item's metadata, can hold custom key-value pairs.
                externalDocs:
                  url: https://docs.medusajs.com/api/admin#manage-metadata
                  description: Learn how to manage metadata
              compare_at_unit_price:
                type: number
                title: compare_at_unit_price
                description: The original price of the item before a promotion or sale.
    AdminPostOrderEditsItemsActionReqSchema:
      type: object
      description: The details to update in the item.
      x-schemaName: AdminPostOrderEditsItemsActionReqSchema
      properties:
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        unit_price:
          type: number
          title: unit_price
          description: The item's unit price.
        compare_at_unit_price:
          type: number
          title: compare_at_unit_price
          description: The original price of the item before a promotion or sale.
    AdminPostOrderEditsReqSchema:
      type: object
      description: The order edit's details.
      x-schemaName: AdminPostOrderEditsReqSchema
      required:
        - order_id
      properties:
        order_id:
          type: string
          title: order_id
          description: The ID of the order this edit is for.
        description:
          type: string
          title: description
          description: The order edit's description.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        metadata:
          type: object
          description: The order edit's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminPostOrderEditsShippingActionReqSchema:
      type: object
      description: The shipping method's details.
      x-schemaName: AdminPostOrderEditsShippingActionReqSchema
      properties:
        custom_amount:
          type: number
          title: custom_amount
          description: Set a custom price for the shipping method.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        metadata:
          type: object
          description: The order edit's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminPostOrderEditsShippingReqSchema:
      type: object
      description: The shipping method's details.
      x-schemaName: AdminPostOrderEditsShippingReqSchema
      required:
        - shipping_option_id
      properties:
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the associated shipping option.
        custom_amount:
          type: number
          title: custom_amount
          description: Set a custom price for the shipping method.
        description:
          type: string
          title: description
          description: The shipping method's description.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        metadata:
          type: object
          description: The shipping method's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminPostOrderEditsUpdateItemQuantityReqSchema:
      type: object
      description: The order item's details to update.
      x-schemaName: AdminPostOrderEditsUpdateItemQuantityReqSchema
      required:
        - quantity
      properties:
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        unit_price:
          type: number
          title: unit_price
          description: The item's unit price.
        compare_at_unit_price:
          type: number
          title: compare_at_unit_price
          description: The original price of the item before a promotion or sale.
    AdminPostReturnsDismissItemsActionReqSchema:
      type: object
      description: The details to update of the damaged item.
      x-schemaName: AdminPostReturnsDismissItemsActionReqSchema
      properties:
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
    AdminPostReturnsReceiveItemsActionReqSchema:
      type: object
      description: The details of the received item.
      x-schemaName: AdminPostReturnsReceiveItemsActionReqSchema
      properties:
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
    AdminPostReturnsRequestItemsActionReqSchema:
      type: object
      description: The details to update in the item.
      x-schemaName: AdminPostReturnsRequestItemsActionReqSchema
      properties:
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        reason_id:
          type: string
          title: reason_id
          description: The ID of the associated return reason.
        metadata:
          type: object
          description: The claim's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminPostReturnsRequestItemsReqSchema:
      type: object
      description: The items' details.
      x-schemaName: AdminPostReturnsRequestItemsReqSchema
      properties:
        items:
          type: array
          description: The items' details.
          items:
            type: object
            description: An item's details.
            required:
              - id
              - quantity
            properties:
              id:
                type: string
                title: id
                description: The item's ID.
              quantity:
                type: number
                title: quantity
                description: The item's quantity.
              description:
                type: string
                title: description
                description: The item's description.
              internal_note:
                type: string
                title: internal_note
                description: A note viewed only by admin users.
              reason_id:
                type: string
                title: reason_id
                description: The ID of the associated return reason.
              metadata:
                type: object
                description: The item's metadata, can hold custom key-value pairs.
                externalDocs:
                  url: https://docs.medusajs.com/api/admin#manage-metadata
                  description: Learn how to manage metadata
    AdminPostReturnsShippingReqSchema:
      type: object
      description: The shipping method's details.
      x-schemaName: AdminPostReturnsShippingReqSchema
      required:
        - shipping_option_id
      properties:
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the associated shipping option.
        custom_amount:
          type: number
          title: custom_amount
          description: Set the price of the shipping method.
        description:
          type: string
          title: description
          description: The shipping method's description.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        metadata:
          type: object
          description: The exchange's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminPrice:
      type: object
      description: The price's details.
      x-schemaName: AdminPrice
      required:
        - id
        - title
        - currency_code
        - amount
        - raw_amount
        - min_quantity
        - max_quantity
        - price_set_id
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The price's ID.
        title:
          type: string
          title: title
          description: The price's title.
        currency_code:
          type: string
          title: currency_code
          description: The price's currency code.
          example: usd
        amount:
          type: number
          title: amount
          description: The price's amount.
        raw_amount:
          type: object
          description: The price's raw amount.
        min_quantity:
          type: number
          title: min_quantity
          description: The minimum quantity that must be available in the cart for the price to be applied.
        max_quantity:
          type: number
          title: max_quantity
          description: The maximum quantity allowed to be available in the cart for the price to be applied.
        price_set_id:
          type: string
          title: price_set_id
          description: The ID of the associated price set.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the price was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the price was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the price was deleted.
    AdminPriceList:
      type: object
      description: The price list's details.
      x-schemaName: AdminPriceList
      required:
        - id
        - title
        - description
        - rules
        - starts_at
        - ends_at
        - status
        - type
        - prices
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The price list's ID.
        title:
          type: string
          title: title
          description: The price list's title.
        description:
          type: string
          title: description
          description: The price list's description.
        rules:
          type: object
          description: The price list's rules.
        starts_at:
          type: string
          title: starts_at
          description: The date the price list starts.
        ends_at:
          type: string
          title: ends_at
          description: The date the price list ends.
        status:
          type: string
          description: The price list's status.
          enum:
            - draft
            - active
        type:
          type: string
          description: The price list's type.
          enum:
            - sale
            - override
        prices:
          type: array
          description: The price list's prices.
          items:
            $ref: '#/components/schemas/AdminPriceListPrice'
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the price list was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the price list was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the price list was deleted.
    AdminPriceListBatchResponse:
      type: object
      description: The details of the created, updated, and deleted prices in a price list.
      x-schemaName: AdminPriceListBatchResponse
      required:
        - created
        - updated
        - deleted
      properties:
        created:
          type: array
          description: The created prices.
          items:
            $ref: '#/components/schemas/AdminPrice'
        updated:
          type: array
          description: The updated prices.
          items:
            $ref: '#/components/schemas/AdminPrice'
        deleted:
          type: object
          description: The details of the deleted prices.
          required:
            - ids
            - object
            - deleted
          properties:
            ids:
              type: array
              description: The IDs of the deleted prices.
              items:
                type: string
                title: ids
                description: A price's ID.
            object:
              type: string
              title: object
              description: The name of the deleted object.
              default: price
            deleted:
              type: boolean
              title: deleted
              description: Whether the prices were deleted.
    AdminPriceListDeleteResponse:
      type: object
      description: The details of the deleted price list.
      x-schemaName: AdminPriceListDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The price list's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: price_list
        deleted:
          type: boolean
          title: deleted
          description: Whether the price list was deleted.
    AdminPriceListListResponse:
      type: object
      description: The paginated list of price lists.
      x-schemaName: AdminPriceListListResponse
      required:
        - limit
        - offset
        - count
        - price_lists
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        price_lists:
          type: array
          description: The list of price lists.
          items:
            $ref: '#/components/schemas/AdminPriceList'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminPriceListPrice:
      type: object
      description: The details of a price list's price.
      x-schemaName: AdminPriceListPrice
      required:
        - variant_id
        - rules
        - id
        - title
        - currency_code
        - amount
        - raw_amount
        - min_quantity
        - max_quantity
        - price_set_id
        - created_at
        - updated_at
        - deleted_at
      properties:
        variant_id:
          type: string
          title: variant_id
          description: The ID of the product variant this price list is for.
        rules:
          type: object
          description: The price's rules.
        id:
          type: string
          title: id
          description: The price's ID.
        title:
          type: string
          title: title
          description: The price's title.
        currency_code:
          type: string
          title: currency_code
          description: The price's currency code.
          example: usd
        amount:
          type: number
          title: amount
          description: The price's amount.
        raw_amount:
          type: object
          description: The price's raw amount.
        min_quantity:
          type: number
          title: min_quantity
          description: The minimum quantity that must be available in the cart for the price to be applied.
        max_quantity:
          type: number
          title: max_quantity
          description: The maximum quantity allowed to be available in the cart for the price to be applied.
        price_set_id:
          type: string
          title: price_set_id
          description: The ID of the price set this price belongs to.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the price was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the price was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the price was deleted.
    AdminPriceListPriceListResponse:
      type: object
      description: The list of prices.
      x-schemaName: AdminPriceListPriceListResponse
      required:
        - limit
        - offset
        - count
        - prices
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of prices returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the prices.
        count:
          type: number
          title: count
          description: The total number of prices.
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
        prices:
          type: array
          description: The list of prices.
          items:
            $ref: '#/components/schemas/AdminPrice'
    AdminPriceListResponse:
      type: object
      description: The price list's details.
      x-schemaName: AdminPriceListResponse
      required:
        - price_list
      properties:
        price_list:
          $ref: '#/components/schemas/AdminPriceList'
    AdminPricePreference:
      type: object
      description: The price preference's details.
      x-schemaName: AdminPricePreference
      required:
        - id
        - attribute
        - value
        - is_tax_inclusive
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The price preference's ID.
        attribute:
          type: string
          title: attribute
          description: The price preference's attribute.
          example: region_id
        value:
          type: string
          title: value
          description: The price preference's value.
          example: reg_123
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether prices matching this preference include taxes.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the price preference was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the price preference was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the price preference was deleted.
    AdminPricePreferenceDeleteResponse:
      type: object
      description: The details of the deleted price preference.
      x-schemaName: AdminPricePreferenceDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The price preference's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: price_preference
        deleted:
          type: boolean
          title: deleted
          description: Whether the price preference was deleted.
    AdminPricePreferenceListResponse:
      type: object
      description: The paginated list of price preferences.
      x-schemaName: AdminPricePreferenceListResponse
      required:
        - limit
        - offset
        - count
        - price_preferences
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total count of items.
        price_preferences:
          type: array
          description: The list of price preferences.
          items:
            $ref: '#/components/schemas/AdminPricePreference'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminPricePreferenceResponse:
      type: object
      description: The price preference's details.
      x-schemaName: AdminPricePreferenceResponse
      required:
        - price_preference
      properties:
        price_preference:
          $ref: '#/components/schemas/AdminPricePreference'
    AdminProduct:
      type: object
      description: The product's details.
      x-schemaName: AdminProduct
      required:
        - variants
        - type
        - options
        - images
        - title
        - status
        - length
        - id
        - created_at
        - updated_at
        - subtitle
        - thumbnail
        - handle
        - description
        - is_giftcard
        - width
        - weight
        - height
        - origin_country
        - hs_code
        - mid_code
        - material
        - collection_id
        - type_id
        - discountable
        - external_id
        - deleted_at
      properties:
        collection:
          $ref: '#/components/schemas/AdminCollection'
        categories:
          type: array
          description: The product's categories.
          items:
            $ref: '#/components/schemas/AdminProductCategory'
        sales_channels:
          type: array
          description: The sales channels that the product is available in.
          items:
            $ref: '#/components/schemas/AdminSalesChannel'
        variants:
          type: array
          description: The product's variants.
          items:
            $ref: '#/components/schemas/AdminProductVariant'
        type:
          $ref: '#/components/schemas/AdminProductType'
        tags:
          type: array
          description: The product's tags.
          items:
            $ref: '#/components/schemas/AdminProductTag'
        length:
          type: number
          title: length
          description: The product's length.
        title:
          type: string
          title: title
          description: The product's title.
        status:
          type: string
          description: The product's status.
          enum:
            - draft
            - proposed
            - published
            - rejected
        options:
          type: array
          description: The product's options.
          items:
            $ref: '#/components/schemas/AdminProductOption'
        description:
          type: string
          title: description
          description: The product's description.
        id:
          type: string
          title: id
          description: The product's ID.
        metadata:
          type: object
          description: The product's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the product was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the product was updated.
        handle:
          type: string
          title: handle
          description: The product's unique handle.
        subtitle:
          type: string
          title: subtitle
          description: The product's subtitle.
        is_giftcard:
          type: boolean
          title: is_giftcard
          description: Whether the product is a gift card.
        thumbnail:
          type: string
          title: thumbnail
          description: The product's thumbnail.
        width:
          type: number
          title: width
          description: The product's width.
        weight:
          type: number
          title: weight
          description: The product's weight.
        height:
          type: number
          title: height
          description: The product's height.
        origin_country:
          type: string
          title: origin_country
          description: The product's origin country.
        hs_code:
          type: string
          title: hs_code
          description: The product's HS code.
        mid_code:
          type: string
          title: mid_code
          description: The product's MID code.
        material:
          type: string
          title: material
          description: The product's material.
        collection_id:
          type: string
          title: collection_id
          description: The ID of the collection that the product belongs to.
        type_id:
          type: string
          title: type_id
          description: The ID of the product's type.
        images:
          type: array
          description: The product's images.
          items:
            $ref: '#/components/schemas/AdminProductImage'
        discountable:
          type: boolean
          title: discountable
          description: Whether discounts can be applied on the product.
        external_id:
          type: string
          title: external_id
          description: The ID of a product in an external system, such as an ERP or CMS.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the product was deleted.
        shipping_profile:
          $ref: '#/components/schemas/AdminShippingProfile'
        translations:
          type: array
          description: The product's translations.
          items:
            $ref: '#/components/schemas/AdminTranslation'
    AdminProductCategory:
      type: object
      description: The product category's details.
      x-schemaName: AdminProductCategory
      required:
        - category_children
        - parent_category
        - name
        - description
        - id
        - created_at
        - updated_at
        - handle
        - deleted_at
        - is_active
        - is_internal
        - rank
        - parent_category_id
      properties:
        category_children:
          type: array
          description: The category's children.
          items:
            type: object
        parent_category:
          type: object
        products:
          type: array
          description: The category's products.
          items:
            type: object
        name:
          type: string
          title: name
          description: The category's name.
        description:
          type: string
          title: description
          description: The category's description.
        id:
          type: string
          title: id
          description: The category's ID.
        metadata:
          type: object
          description: The category's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the category was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the category was updated.
        handle:
          type: string
          title: handle
          description: The category's unique handle.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the category was deleted.
        is_active:
          type: boolean
          title: is_active
          description: Whether the category is active. If disabled, the category isn't shown in the storefront.
        is_internal:
          type: boolean
          title: is_internal
          description: Whether the category is internal. If enabled, the category is only seen by admin users.
        rank:
          type: number
          title: rank
          description: The category's rank among sibling categories.
        parent_category_id:
          type: string
          title: parent_category_id
          description: The ID of the category's parent.
    AdminProductCategoryDeleteResponse:
      type: object
      description: The details of deleting the category.
      x-schemaName: AdminProductCategoryDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The product category's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: product_category
        deleted:
          type: boolean
          title: deleted
          description: Whether the product category was deleted.
    AdminProductCategoryListResponse:
      type: object
      description: The paginated list of product categories.
      x-schemaName: AdminProductCategoryListResponse
      required:
        - limit
        - offset
        - count
        - product_categories
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        product_categories:
          type: array
          description: The list of product categories.
          items:
            $ref: '#/components/schemas/AdminProductCategory'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminProductCategoryResponse:
      type: object
      description: The product category's details.
      x-schemaName: AdminProductCategoryResponse
      required:
        - product_category
      properties:
        product_category:
          $ref: '#/components/schemas/AdminProductCategory'
    AdminProductDeleteResponse:
      type: object
      description: The details of the product deletion.
      x-schemaName: AdminProductDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The product's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: product
        deleted:
          type: boolean
          title: deleted
          description: Whether the product was deleted.
    AdminProductImage:
      type: object
      description: The image's details.
      x-schemaName: AdminProductImage
      properties:
        id:
          type: string
          title: id
          description: The image's ID.
        url:
          type: string
          title: url
          description: The image's URL.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the image was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the image was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the image was deleted.
        metadata:
          type: object
          description: The image's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        rank:
          type: number
          title: rank
          description: The image's rank among sibling images.
        product:
          type: object
        variants:
          type: array
          description: The variants associated with the image.
          items:
            type: object
      required:
        - id
        - url
        - rank
    AdminProductOption:
      type: object
      description: The product option's details.
      x-schemaName: AdminProductOption
      required:
        - id
        - title
      properties:
        id:
          type: string
          title: id
          description: The product option's ID.
        title:
          type: string
          title: title
          description: The product option's title.
        product:
          type: object
        product_id:
          type: string
          title: product_id
          description: The ID of the product this option belongs to.
        values:
          type: array
          description: The product option's values.
          items:
            type: object
        metadata:
          type: object
          description: The product option's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the product option was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the product option was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the product option was deleted.
    AdminProductOptionDeleteResponse:
      type: object
      description: The details of the product option deletion.
      x-schemaName: AdminProductOptionDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The product option's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: product_option
        deleted:
          type: boolean
          title: deleted
          description: Whether the product option was deleted.
        parent:
          $ref: '#/components/schemas/AdminProduct'
    AdminProductOptionResponse:
      type: object
      description: The product option's details.
      x-schemaName: AdminProductOptionResponse
      required:
        - product_option
      properties:
        product_option:
          $ref: '#/components/schemas/AdminProductOption'
    AdminProductOptionValue:
      type: object
      description: The product option value's details.
      x-schemaName: AdminProductOptionValue
      required:
        - id
        - value
      properties:
        id:
          type: string
          title: id
          description: The value's ID.
        value:
          type: string
          title: value
          description: The value.
        option:
          $ref: '#/components/schemas/AdminProductOption'
        option_id:
          type: string
          title: option_id
          description: The ID of the option this value belongs to.
        metadata:
          type: object
          description: The value's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the value was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the value was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the value was deleted.
    AdminProductResponse:
      type: object
      description: The product's details.
      x-schemaName: AdminProductResponse
      required:
        - product
      properties:
        product:
          $ref: '#/components/schemas/AdminProduct'
    AdminProductTag:
      type: object
      description: The product tag's details.
      x-schemaName: AdminProductTag
      required:
        - id
        - value
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The tag's ID.
        value:
          type: string
          title: value
          description: The tag's value.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the tag was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the tag was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the tag was deleted.
        metadata:
          type: object
          description: The tag's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        translations:
          type: array
          description: The tag's translations.
          items:
            $ref: '#/components/schemas/AdminTranslation'
    AdminProductTagDeleteResponse:
      type: object
      description: The details of the product tag deletion.
      x-schemaName: AdminProductTagDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The product tag's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: product_tag
        deleted:
          type: boolean
          title: deleted
          description: Whether the product tag was deleted.
    AdminProductTagListResponse:
      type: object
      description: The paginated list of product tags.
      x-schemaName: AdminProductTagListResponse
      required:
        - limit
        - offset
        - count
        - product_tags
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        product_tags:
          type: array
          description: The list of product tags.
          items:
            $ref: '#/components/schemas/AdminProductTag'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminProductTagResponse:
      type: object
      description: The product tag's details.
      x-schemaName: AdminProductTagResponse
      required:
        - product_tag
      properties:
        product_tag:
          $ref: '#/components/schemas/AdminProductTag'
    AdminProductType:
      type: object
      description: The product type's details.
      x-schemaName: AdminProductType
      required:
        - id
        - value
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The type's ID.
        value:
          type: string
          title: value
          description: The type's value.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the type was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the type was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the type was deleted.
        metadata:
          type: object
          description: The type's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        translations:
          type: array
          description: The type's translations.
          items:
            $ref: '#/components/schemas/AdminTranslation'
    AdminProductTypeDeleteResponse:
      type: object
      description: The details of the product type deletion.
      x-schemaName: AdminProductTypeDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The product type's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: product_type
        deleted:
          type: boolean
          title: deleted
          description: Whether the product type was deleted.
    AdminProductTypeListResponse:
      type: object
      description: The paginated list of product types.
      x-schemaName: AdminProductTypeListResponse
      required:
        - limit
        - offset
        - count
        - product_types
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        product_types:
          type: array
          description: The list of product types.
          items:
            $ref: '#/components/schemas/AdminProductType'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminProductTypeResponse:
      type: object
      description: The product type's details.
      x-schemaName: AdminProductTypeResponse
      required:
        - product_type
      properties:
        product_type:
          $ref: '#/components/schemas/AdminProductType'
    AdminProductVariant:
      type: object
      description: The product variant's details.
      x-schemaName: AdminProductVariant
      required:
        - prices
        - options
        - id
        - title
        - sku
        - barcode
        - ean
        - upc
        - thumbnail
        - images
        - allow_backorder
        - manage_inventory
        - hs_code
        - origin_country
        - mid_code
        - material
        - weight
        - length
        - height
        - width
        - created_at
        - updated_at
        - deleted_at
      properties:
        prices:
          type: array
          description: The variant's prices.
          items:
            $ref: '#/components/schemas/AdminPrice'
        id:
          type: string
          title: id
          description: The variant's ID.
        title:
          type: string
          title: title
          description: The variant's title.
        sku:
          type: string
          title: sku
          description: The variant's SKU.
        barcode:
          type: string
          title: barcode
          description: The variant's barcode.
        ean:
          type: string
          title: ean
          description: The variant's EAN code.
        upc:
          type: string
          title: upc
          description: The variant's UPC.
        allow_backorder:
          type: boolean
          title: allow_backorder
          description: Whether the variant can be ordered even if it's out of stock.
        manage_inventory:
          type: boolean
          title: manage_inventory
          description: Whether the Medusa application manages the variant's inventory quantity and availablility. If disabled, the variant is always considered in stock.
        inventory_quantity:
          type: number
          title: inventory_quantity
          description: The variant's inventory quantity. This is only included if you pass in the `fields` query parameter a `+variants.inventory_quantity` parameter.
        hs_code:
          type: string
          title: hs_code
          description: The variant's HS code.
        origin_country:
          type: string
          title: origin_country
          description: The variant's origin country.
        mid_code:
          type: string
          title: mid_code
          description: The variant's MID code.
        material:
          type: string
          title: material
          description: The variant's material.
        weight:
          type: number
          title: weight
          description: The variant's weight.
        length:
          type: number
          title: length
          description: The variant's length.
        height:
          type: number
          title: height
          description: The variant's height.
        width:
          type: number
          title: width
          description: The variant's width.
        variant_rank:
          type: number
          title: variant_rank
          description: The variant's rank among its sibling variants.
        options:
          type: array
          description: The variant's option values.
          items:
            $ref: '#/components/schemas/AdminProductOptionValue'
        product:
          type: object
        product_id:
          type: string
          title: product_id
          description: The ID of the product that the variant belongs to.
        calculated_price:
          $ref: '#/components/schemas/BaseCalculatedPriceSet'
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the variant was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the variant was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the variant was deleted.
        metadata:
          type: object
          description: The variant's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        inventory_items:
          type: array
          description: The variant's inventory items.
          items:
            $ref: '#/components/schemas/AdminProductVariantInventoryItemLink'
        images:
          type: array
          description: The variant's images.
          items:
            $ref: '#/components/schemas/BaseProductImage'
        thumbnail:
          type: string
          title: thumbnail
          description: The variant's thumbnail.
        translations:
          type: array
          description: The variant's translations.
          items:
            $ref: '#/components/schemas/AdminTranslation'
    AdminProductVariantDeleteResponse:
      type: object
      description: The details of the product variant's deletion.
      x-schemaName: AdminProductVariantDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The product variant's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
        deleted:
          type: boolean
          title: deleted
          description: Whether the product variant was deleted.
          default: variant
        parent:
          $ref: '#/components/schemas/AdminProduct'
    AdminProductVariantInventoryBatchResponse:
      type: object
      description: The created, updated, and deleted associations between variants and inventory items.
      x-schemaName: AdminProductVariantInventoryBatchResponse
      required:
        - created
        - updated
        - deleted
      properties:
        created:
          oneOf:
            - $ref: '#/components/schemas/AdminProductVariantInventoryLink'
            - type: array
              description: The created associations between product variants and inventory items.
              items:
                type: object
                description: A created association between a product variant and an inventory item.
                x-schemaName: AdminProductVariantInventoryLink
                required:
                  - productService
                  - inventoryService
                properties:
                  productService:
                    type: object
                    description: The product variant's details.
                    required:
                      - variant_id
                    properties:
                      variant_id:
                        type: string
                        title: variant_id
                        description: The ID of the product variant.
                  inventoryService:
                    type: object
                    description: The inventory item's details.
                    required:
                      - inventory_item_id
                    properties:
                      inventory_item_id:
                        type: string
                        title: inventory_item_id
                        description: The ID of the inventory item.
        updated:
          oneOf:
            - $ref: '#/components/schemas/AdminProductVariantInventoryLink'
            - type: array
              description: The updated associations between product variants and inventory items.
              items:
                type: object
                description: An updated association between a product variant and an inventory item.
                x-schemaName: AdminProductVariantInventoryLink
                required:
                  - productService
                  - inventoryService
                properties:
                  productService:
                    type: object
                    description: The product variant's details.
                    required:
                      - variant_id
                    properties:
                      variant_id:
                        type: string
                        title: variant_id
                        description: The ID of the product variant.
                  inventoryService:
                    type: object
                    description: The inventory item's details.
                    required:
                      - inventory_item_id
                    properties:
                      inventory_item_id:
                        type: string
                        title: inventory_item_id
                        description: The ID of the inventory item.
        deleted:
          oneOf:
            - $ref: '#/components/schemas/AdminProductVariantInventoryLink'
            - type: array
              description: The deleted associations between product variants and inventory items.
              items:
                type: object
                description: An deleted association between a product variant and an inventory item.
                x-schemaName: AdminProductVariantInventoryLink
                required:
                  - productService
                  - inventoryService
                properties:
                  productService:
                    type: object
                    description: The product variant's details.
                    required:
                      - variant_id
                    properties:
                      variant_id:
                        type: string
                        title: variant_id
                        description: The ID of the product variant.
                  inventoryService:
                    type: object
                    description: The inventory item's details.
                    required:
                      - inventory_item_id
                    properties:
                      inventory_item_id:
                        type: string
                        title: inventory_item_id
                        description: The ID of the inventory item.
    AdminProductVariantInventoryItemLink:
      type: object
      description: An association between a product variant and an inventory item.
      x-schemaName: AdminProductVariantInventoryItemLink
      required:
        - id
        - variant_id
        - inventory_item_id
      properties:
        id:
          type: string
          title: id
          description: The ID of the association.
        variant_id:
          type: string
          title: variant_id
          description: The associated product variant's ID.
        variant:
          type: object
        inventory_item_id:
          type: string
          title: inventory_item_id
          description: The associated inventory item's ID.
        inventory:
          $ref: '#/components/schemas/AdminInventoryItem'
        required_quantity:
          type: number
          title: required_quantity
          description: The inventory item's required quantity.
    AdminProductVariantInventoryLink:
      type: object
      description: The details of an association between a product variant and an inventory item.
      x-schemaName: AdminProductVariantInventoryLink
      required:
        - Product
        - Inventory
      properties:
        Product:
          type: object
          description: The product variant's details.
          required:
            - variant_id
          properties:
            variant_id:
              type: string
              title: variant_id
              description: The ID of the product variant.
        Inventory:
          type: object
          description: The inventory item's details.
          required:
            - inventory_item_id
          properties:
            inventory_item_id:
              type: string
              title: inventory_item_id
              description: The ID of the inventory item.
    AdminProductVariantInventoryLinkDeleteResponse:
      type: object
      description: The details of the deleted associated between a product variant and an inventory item.
      x-schemaName: AdminProductVariantInventoryLinkDeleteResponse
      required:
        - id
        - object
        - deleted
        - parent
      properties:
        id:
          $ref: '#/components/schemas/AdminProductVariantInventoryLink'
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: variant-inventory-item-link
        deleted:
          type: boolean
          title: deleted
          description: Whether the association was deleted.
        parent:
          $ref: '#/components/schemas/AdminProductVariant'
    AdminProductVariantResponse:
      type: object
      description: The product variant's details.
      x-schemaName: AdminProductVariantResponse
      required:
        - variant
      properties:
        variant:
          $ref: '#/components/schemas/AdminProductVariant'
    AdminPromotion:
      type: object
      description: The promotion's details.
      x-schemaName: AdminPromotion
      required:
        - id
        - created_at
        - updated_at
        - deleted_at
      properties:
        application_method:
          $ref: '#/components/schemas/AdminApplicationMethod'
        rules:
          type: array
          description: The promotion's rules.
          items:
            $ref: '#/components/schemas/AdminPromotionRule'
        id:
          type: string
          title: id
          description: The promotion's ID.
        code:
          type: string
          title: code
          description: The promotion's code.
          example: OFF50
        type:
          type: string
          description: The promotion's type.
          enum:
            - standard
            - buyget
        is_automatic:
          type: boolean
          title: is_automatic
          description: Whether the promotion is applied on a cart automatically if it matches the promotion's rules.
        campaign_id:
          type: string
          title: campaign_id
          description: The ID of the campaign this promotion belongs to.
        campaign:
          $ref: '#/components/schemas/AdminCampaign'
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the promotion was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the promotion was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the promotion was deleted.
        status:
          type: string
          description: The promotion's status.
          enum:
            - draft
            - active
            - inactive
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the promotion is tax inclusive. If enabled, the promotion is applied after tax is calculated.
        limit:
          type: number
          title: limit
          description: The limit of times the promotion can be used.
        used:
          type: number
          title: used
          description: The number of times the promotion has been used.
    AdminPromotionResponse:
      type: object
      description: The promotion's details.
      x-schemaName: AdminPromotionResponse
      required:
        - promotion
      properties:
        promotion:
          $ref: '#/components/schemas/AdminPromotion'
    AdminPromotionRule:
      type: object
      description: The promotion rule's details.
      x-schemaName: AdminPromotionRule
      required:
        - id
        - values
      properties:
        id:
          type: string
          title: id
          description: The promotion rule's ID.
        description:
          type: string
          title: description
          description: The promotion rule's description.
        attribute:
          type: string
          title: attribute
          description: The promotion rule's attribute.
          example: customer_group_id
        operator:
          type: string
          description: The rule's operator.
          enum:
            - gt
            - lt
            - eq
            - ne
            - in
            - lte
            - gte
        values:
          type: array
          description: The rule's values.
          example:
            - cusgroup_123
          items:
            $ref: '#/components/schemas/BasePromotionRuleValue'
    AdminReceiveItems:
      type: object
      description: The items details.
      x-schemaName: AdminReceiveItems
      properties:
        items:
          type: array
          description: The items details.
          items:
            type: object
            description: An item's details.
            required:
              - id
              - quantity
            properties:
              id:
                type: string
                title: id
                description: The ID of the item in the order.
              quantity:
                type: number
                title: quantity
                description: The item's quantity.
              description:
                type: string
                title: description
                description: The item's description.
              internal_note:
                type: string
                title: internal_note
                description: A note viewed only by admin users.
    AdminRefund:
      type: object
      description: The refund's details.
      x-schemaName: AdminRefund
      required:
        - id
        - amount
        - created_at
        - payment
      properties:
        id:
          type: string
          title: id
          description: The refund's ID.
        amount:
          type: number
          title: amount
          description: The refund's amount.
        refund_reason_id:
          type: string
          title: refund_reason_id
          description: The ID of the refund reason.
        note:
          type: string
          title: note
          description: More details about the refund.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the refund was created.
        created_by:
          type: string
          title: created_by
          description: The ID of the user that created the refund.
        payment:
          $ref: '#/components/schemas/BasePayment'
        refund_reason:
          $ref: '#/components/schemas/BaseRefundReason'
    AdminRefundPayment:
      type: object
      description: The refund's details.
      properties:
        amount:
          type: number
          title: amount
          description: The amount to refund.
        refund_reason_id:
          type: string
          title: refund_reason_id
          description: The ID of a refund reason.
        note:
          type: string
          title: note
          description: A note to attach to the refund.
      x-schemaName: AdminRefundPayment
    AdminRefundReason:
      type: object
      description: The refund reason's details.
      x-schemaName: AdminRefundReason
      required:
        - id
        - label
        - code
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The refund reason's ID.
        label:
          type: string
          title: label
          description: The refund reason's label.
        description:
          type: string
          title: description
          description: The refund reason's description.
        metadata:
          type: object
          description: The refund reason's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the refund reason was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the refund reason was updated.
        code:
          type: string
          title: code
          description: The refund reason's code.
    AdminRefundReasonDeleteResponse:
      type: object
      description: The deletion's details.
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The refund reason's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: refund_reason
        deleted:
          type: boolean
          title: deleted
          description: Whether the refund reason was deleted.
      x-schemaName: AdminRefundReasonDeleteResponse
    AdminRegion:
      type: object
      description: The region's details.
      x-schemaName: AdminRegion
      required:
        - id
        - currency_code
        - name
      properties:
        id:
          type: string
          title: id
          description: The region's ID.
        name:
          type: string
          title: name
          description: The region's name.
        currency_code:
          type: string
          title: currency_code
          description: The region's currency code.
          example: usd
        automatic_taxes:
          type: boolean
          title: automatic_taxes
          description: Whether taxes are applied automatically during checkout.
        countries:
          type: array
          description: The region's countries.
          items:
            $ref: '#/components/schemas/AdminRegionCountry'
        payment_providers:
          type: array
          description: The region's payment providers.
          items:
            $ref: '#/components/schemas/AdminPaymentProvider'
        metadata:
          type: object
          description: The region's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the region was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the region was updated.
    AdminRegionCountry:
      type: object
      description: The country's details.
      x-schemaName: AdminRegionCountry
      required:
        - id
      properties:
        id:
          type: string
          title: id
          description: The country's ID.
        iso_2:
          type: string
          title: iso_2
          description: The country's iso 2.
          example: us
        iso_3:
          type: string
          title: iso_3
          description: The country's iso 3.
          example: usa
        num_code:
          type: string
          title: num_code
          description: The country's num code.
          example: 840
        name:
          type: string
          title: name
          description: The country's name.
        display_name:
          type: string
          title: display_name
          description: The country's display name.
    AdminRegionResponse:
      type: object
      description: The region's details.
      x-schemaName: AdminRegionResponse
      required:
        - region
      properties:
        region:
          $ref: '#/components/schemas/AdminRegion'
    AdminRemoveDraftOrderPromotions:
      type: object
      description: The promotion codes to remove from the draft order.
      x-schemaName: AdminRemoveDraftOrderPromotions
      required:
        - promo_codes
      properties:
        promo_codes:
          type: array
          description: The promotion codes to remove from the draft order.
          items:
            type: string
            title: promo_codes
            description: A promotion code to remove from the draft order.
    AdminRequestOrderTransfer:
      type: object
      description: The details of the request to transfer the order.
      x-schemaName: AdminRequestOrderTransfer
      required:
        - customer_id
      properties:
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer to transfer the order to.
        description:
          type: string
          title: description
          description: The description of the order transfer, which can be shown to the customer receiving the order transfer request.
        internal_note:
          type: string
          title: internal_note
          description: An internal note viewable only by admin users.
    AdminReservation:
      type: object
      description: The reservation's details.
      x-schemaName: AdminReservation
      required:
        - id
        - line_item_id
        - location_id
        - quantity
        - external_id
        - description
        - inventory_item_id
      properties:
        id:
          type: string
          title: id
          description: The reservation's ID.
        line_item_id:
          type: string
          title: line_item_id
          description: The ID of the line item this reservation is for.
        location_id:
          type: string
          title: location_id
          description: The ID of the location the quantity is reserved from.
        quantity:
          type: number
          title: quantity
          description: The reservation's quantity.
        external_id:
          type: string
          title: external_id
          description: An ID in an external system
        description:
          type: string
          title: description
          description: The reservation's description.
        inventory_item_id:
          type: string
          title: inventory_item_id
          description: The ID of the inventory item this reservation is associated with.
        inventory_item:
          $ref: '#/components/schemas/AdminInventoryItem'
        metadata:
          type: object
          description: The reservation's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_by:
          type: string
          title: created_by
          description: The ID of the user that created this reservation.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date this reservation was deleted.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date this reservation was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date this reservation was updated.
    AdminReservationResponse:
      type: object
      description: The reservation's details.
      x-schemaName: AdminReservationResponse
      required:
        - reservation
      properties:
        reservation:
          $ref: '#/components/schemas/AdminReservation'
    AdminReturn:
      type: object
      description: The return's details.
      x-schemaName: AdminReturn
      required:
        - items
        - id
        - order_id
        - order_version
        - display_id
        - received_at
        - created_at
        - canceled_at
      properties:
        id:
          type: string
          title: id
          description: The return's ID.
        status:
          type: string
          description: The return's status.
          enum:
            - canceled
            - requested
            - received
            - partially_received
        refund_amount:
          type: number
          title: refund_amount
          description: The amount refunded by this return.
        order_id:
          type: string
          title: order_id
          description: The ID of the associated order.
        items:
          type: array
          description: The return's items.
          items:
            $ref: '#/components/schemas/AdminReturnItem'
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the return was created.
        canceled_at:
          type: string
          title: canceled_at
          description: The date the return was canceled.
          format: date-time
        exchange_id:
          type: string
          title: exchange_id
          description: The return's exchange id.
        location_id:
          type: string
          title: location_id
          description: The return's location id.
        claim_id:
          type: string
          title: claim_id
          description: The return's claim id.
        order_version:
          type: number
          title: order_version
          description: The return's order version.
        display_id:
          type: number
          title: display_id
          description: The return's display id.
        no_notification:
          type: boolean
          title: no_notification
          description: Whether the customer should receive notifications about the return's updates.
        received_at:
          type: string
          title: received_at
          description: The date the return was received.
    AdminReturnItem:
      type: object
      description: The return item's details.
      x-schemaName: AdminReturnItem
      required:
        - id
        - quantity
        - received_quantity
        - damaged_quantity
        - item_id
        - return_id
      properties:
        id:
          type: string
          title: id
          description: The return item's ID.
        quantity:
          type: number
          title: quantity
          description: The return item's quantity.
        received_quantity:
          type: number
          title: received_quantity
          description: The received quantity of the item. This quantity is added to the stocked inventory quantity of the item.
        damaged_quantity:
          type: number
          title: damaged_quantity
          description: The received damaged quantity of the item, which isn't added to the stocked inventory quantity of the item.
        reason_id:
          type: string
          title: reason_id
          description: The ID of the return reason associated with the item.
        note:
          type: string
          title: note
          description: A note about why the item was returned.
        item_id:
          type: string
          title: item_id
          description: The ID of the associated order item.
        return_id:
          type: string
          title: return_id
          description: The ID of the return this return item belongs to.
        metadata:
          type: object
          description: The return item's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminReturnPreviewResponse:
      type: object
      description: The details of a return and a preview of the order once the return is applied.
      x-schemaName: AdminReturnPreviewResponse
      required:
        - order_preview
        - return
      properties:
        order_preview:
          $ref: '#/components/schemas/AdminOrderPreview'
        return:
          $ref: '#/components/schemas/AdminReturn'
    AdminReturnReason:
      type: object
      description: The return reason's details.
      x-schemaName: AdminReturnReason
      required:
        - id
        - value
        - label
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The return reason's ID.
        value:
          type: string
          title: value
          description: The return reason's value.
        label:
          type: string
          title: label
          description: The return reason's label.
        description:
          type: string
          title: description
          description: The return reason's description.
        metadata:
          type: object
          description: The return reason's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the return reason was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the return reason was updated.
    AdminReturnReasonDeleteResponse:
      type: object
      description: The details of the return reason deletion.
      x-schemaName: AdminReturnReasonDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The return reason's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: return_reason
        deleted:
          type: boolean
          title: deleted
          description: Whether the return reason was deleted.
    AdminReturnReasonListResponse:
      type: object
      description: The paginated list of return reasons.
      x-schemaName: AdminReturnReasonListResponse
      required:
        - limit
        - offset
        - count
        - return_reasons
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        return_reasons:
          type: array
          description: The list of return reasons.
          items:
            $ref: '#/components/schemas/AdminReturnReason'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminReturnReasonResponse:
      type: object
      description: The return reason's details.
      x-schemaName: AdminReturnReasonResponse
      required:
        - return_reason
      properties:
        return_reason:
          $ref: '#/components/schemas/AdminReturnReason'
    AdminReturnResponse:
      type: object
      description: The return's details.
      x-schemaName: AdminReturnResponse
      required:
        - return
      properties:
        return:
          $ref: '#/components/schemas/AdminReturn'
    AdminRevokeApiKey:
      type: object
      description: The details of revoking the API key.
      x-schemaName: AdminRevokeApiKey
      properties:
        revoke_in:
          type: number
          title: revoke_in
          description: The time in seconds to revoke the API key after. If not set, the API key is revoked immediately.
    AdminRuleAttributeOption:
      type: object
      description: The details of a potential rule attribute.
      x-schemaName: AdminRuleAttributeOption
      required:
        - id
        - value
        - label
        - operators
      properties:
        id:
          type: string
          title: id
          description: The rule attribute's ID, which is a rule's `attribute` it refers to.
          example: customer_group
        value:
          type: string
          title: value
          description: The rule attribute's value.
          example: customer.groups.id
        label:
          type: string
          title: label
          description: The rule attribute option's label.
          example: Customer Group
        operators:
          type: array
          description: The attribute's operators.
          items:
            $ref: '#/components/schemas/BaseRuleOperatorOptions'
    AdminRuleValueOption:
      type: object
      description: The details of a potential rule value.
      x-schemaName: AdminRuleValueOption
      required:
        - value
        - label
      properties:
        value:
          type: string
          title: value
          description: The rule value's value.
          example: reg_123
        label:
          type: string
          title: label
          description: The rule value's label.
          example: Europe Region
    AdminSalesChannel:
      type: object
      description: The sales channel's details.
      x-schemaName: AdminSalesChannel
      required:
        - id
        - name
        - description
        - is_disabled
        - metadata
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The sales channel's ID.
        name:
          type: string
          title: name
          description: The sales channel's name.
        description:
          type: string
          title: description
          description: The sales channel's description.
        is_disabled:
          type: boolean
          title: is_disabled
          description: Whether the sales channel is disabled.
        metadata:
          type: object
          description: The sales channel's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the sales channel was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the sales channel was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the sales channel was deleted.
    AdminSalesChannelDeleteResponse:
      type: object
      description: The details of deleting a sales channel.
      x-schemaName: AdminSalesChannelDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The sales channel's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: sales-channel
        deleted:
          type: boolean
          title: deleted
          description: Whether the sales channel was deleted.
    AdminSalesChannelResponse:
      type: object
      description: The sales channel's details.
      x-schemaName: AdminSalesChannelResponse
      required:
        - sales_channel
      properties:
        sales_channel:
          $ref: '#/components/schemas/AdminSalesChannel'
    AdminServiceZone:
      type: object
      description: The shipping option's service zone.
      x-schemaName: AdminServiceZone
      required:
        - id
        - name
        - fulfillment_set_id
        - fulfillment_set
        - geo_zones
        - shipping_options
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The service zone's ID.
        name:
          type: string
          title: name
          description: The service zone's name.
        fulfillment_set_id:
          type: string
          title: fulfillment_set_id
          description: The service zone's fulfillment set id.
        fulfillment_set:
          type: object
        geo_zones:
          type: array
          description: The service zone's geo zones.
          items:
            $ref: '#/components/schemas/AdminGeoZone'
        shipping_options:
          type: array
          description: The service zone's shipping options.
          items:
            $ref: '#/components/schemas/AdminShippingOption'
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The service zone's created at.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The service zone's updated at.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The service zone's deleted at.
    AdminServiceZoneDeleteResponse:
      type: object
      description: The details of the service zone deletion.
      x-schemaName: AdminServiceZoneDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The service zone's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: service_zone
        deleted:
          type: boolean
          title: deleted
          description: Whether the service zone was deleted.
        parent:
          $ref: '#/components/schemas/AdminFulfillmentSet'
    AdminServiceZoneResponse:
      type: object
      description: The service zone's details.
      x-schemaName: AdminServiceZoneResponse
      required:
        - service_zone
      properties:
        service_zone:
          $ref: '#/components/schemas/AdminServiceZone'
    AdminSetActiveViewConfiguration:
      type: object
      description: The details of a view configuration to set as active for the given entity.
      x-schemaName: AdminSetActiveViewConfiguration
      required:
        - view_configuration_id
      properties:
        view_configuration_id:
          type: string
          title: view_configuration_id
          description: The ID of the view configuration to set as active. If `null`, the active view configuration will be cleared, and the `code` or system default view configuration will be used as the active view.
    AdminShippingOption:
      type: object
      description: The shipping option's details.
      x-schemaName: AdminShippingOption
      required:
        - id
        - name
        - price_type
        - service_zone_id
        - service_zone
        - provider_id
        - provider
        - shipping_option_type_id
        - type
        - shipping_profile_id
        - shipping_profile
        - rules
        - prices
        - data
        - metadata
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The shipping option's ID.
        name:
          type: string
          title: name
          description: The shipping option's name.
        price_type:
          type: string
          description: The shipping option's price type. If it's `flat`, the price is fixed and is set in the `prices` property. If it's `calculated`, the price is calculated on checkout by the associated fulfillment provider.
          enum:
            - calculated
            - flat
        service_zone_id:
          type: string
          title: service_zone_id
          description: The ID of the service zone this option belongs to.
        service_zone:
          type: object
        provider_id:
          type: string
          title: provider_id
          description: The ID of the provider handling fulfillments created from this shipping option.
        provider:
          $ref: '#/components/schemas/AdminFulfillmentProvider'
        shipping_option_type_id:
          type: string
          title: shipping_option_type_id
          description: The ID of the associated shipping option type.
        type:
          $ref: '#/components/schemas/AdminShippingOptionType'
        shipping_profile_id:
          type: string
          title: shipping_profile_id
          description: The ID of the associated shipping profile.
        shipping_profile:
          $ref: '#/components/schemas/AdminShippingProfile'
        rules:
          type: array
          description: The shipping option's rules.
          items:
            $ref: '#/components/schemas/AdminShippingOptionRule'
        prices:
          type: array
          description: The shipping option's prices. If the `price_type` is `calculated`, this array will be empty since the price is calculated by the fulfillment provider during checkout.
          items:
            $ref: '#/components/schemas/AdminShippingOptionPrice'
        data:
          type: object
          description: The shipping option's data, useful for the fulfillment provider handling fulfillments created from this option.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#data-property
        metadata:
          type: object
          description: The shipping option's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the shipping option was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the shipping option was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the shipping option was deleted.
    AdminShippingOptionDeleteResponse:
      type: object
      description: The details of the shipping option's deletion.
      x-schemaName: AdminShippingOptionDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The shipping option's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: shipping_option
        deleted:
          type: boolean
          title: deleted
          description: Whether the shipping option was deleted.
    AdminShippingOptionPrice:
      type: object
      description: The details of the shipping option's price.
      x-schemaName: AdminShippingOptionPrice
      required:
        - price_rules
        - rules_count
        - id
        - title
        - currency_code
        - amount
        - raw_amount
        - min_quantity
        - max_quantity
        - price_set_id
        - created_at
        - updated_at
        - deleted_at
      properties:
        price_rules:
          type: array
          description: The price's rules.
          items:
            $ref: '#/components/schemas/AdminShippingOptionPriceRule'
        rules_count:
          type: number
          title: rules_count
          description: The number of rules the price has.
        id:
          type: string
          title: id
          description: The price's ID.
        title:
          type: string
          title: title
          description: The price's title.
        currency_code:
          type: string
          title: currency_code
          description: The price's currency code.
          example: usd
        amount:
          type: number
          title: amount
          description: The price's amount.
        raw_amount:
          type: object
          description: The price's raw amount.
        min_quantity:
          type: number
          title: min_quantity
          description: The minimum quantity required in the cart for this price to apply.
        max_quantity:
          type: number
          title: max_quantity
          description: The maximum quantity that the cart's items must not surpass for this price to apply.
        price_set_id:
          type: string
          title: price_set_id
          description: The ID of the price set this price belongs to.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the price was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the price was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the price was deleted.
    AdminShippingOptionPriceRule:
      type: object
      description: The details of a shipping option price's rule.
      x-schemaName: AdminShippingOptionPriceRule
      required:
        - id
        - value
        - operator
        - attribute
        - price_id
        - priority
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The price rule's ID.
        value:
          oneOf:
            - type: string
              title: value
              description: The price rule's value.
            - type: number
              title: value
              description: The price rule's value.
          description: The price rule's value.
        operator:
          type: string
          description: The price rule's operator.
          enum:
            - gt
            - lt
            - eq
            - ne
            - in
            - lte
            - gte
            - nin
        attribute:
          type: string
          title: attribute
          description: The price rule's attribute.
        price_id:
          type: string
          title: price_id
          description: The ID of the price this rule applies to.
        priority:
          type: number
          title: priority
          description: The price rule's priority.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the price rule was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the price rule was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the price rule was deleted.
    AdminShippingOptionResponse:
      type: object
      description: The shipping option's details.
      x-schemaName: AdminShippingOptionResponse
      required:
        - shipping_option
      properties:
        shipping_option:
          $ref: '#/components/schemas/AdminShippingOption'
    AdminShippingOptionRule:
      type: object
      description: The shipping option rule's details.
      x-schemaName: AdminShippingOptionRule
      required:
        - id
        - attribute
        - operator
        - value
        - shipping_option_id
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The shipping option rule's ID.
        attribute:
          type: string
          title: attribute
          description: The shipping option rule's attribute.
          example: is_return
        operator:
          type: string
          description: The rule's operator.
          enum:
            - gt
            - lt
            - eq
            - ne
            - in
            - lte
            - gte
            - nin
        value:
          oneOf:
            - type: string
              title: value
              description: The shipping option rule's value.
              example: 'true'
            - type: array
              description: The shipping option rule's values.
              items:
                type: string
                title: value
                description: A value of the shipping option rule.
                example: 'true'
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the shipping option this rule is for.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the shipping option rule was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the shipping option rule was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the shipping option rule was deleted.
    AdminShippingOptionType:
      type: object
      description: The shipping option's details.
      x-schemaName: AdminShippingOptionType
      required:
        - id
        - label
        - description
        - code
        - shipping_option_id
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The shipping option's ID.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the shipping option was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the shipping option was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the shipping option was deleted.
        label:
          type: string
          title: label
          description: The type's label.
        description:
          type: string
          title: description
          description: The type's description.
        code:
          type: string
          title: code
          description: The type's code.
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The type's shipping option id.
    AdminShippingOptionTypeDeleteResponse:
      type: object
      description: The response returned after deleting a shipping option type.
      x-schemaName: AdminShippingOptionTypeDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The shipping option type's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: shipping_option_type
        deleted:
          type: boolean
          title: deleted
          description: Whether the Shipping Option Type was deleted.
    AdminShippingOptionTypeListResponse:
      type: object
      description: The paginated list of shipping option types.
      x-schemaName: AdminShippingOptionTypeListResponse
      required:
        - limit
        - offset
        - count
        - shipping_option_types
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before returning the results.
        count:
          type: number
          title: count
          description: The total number of items.
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
        shipping_option_types:
          type: array
          description: The list of shipping option types.
          items:
            $ref: '#/components/schemas/AdminShippingOptionType'
    AdminShippingOptionTypeResponse:
      type: object
      description: The shipping option type's details.
      x-schemaName: AdminShippingOptionTypeResponse
      required:
        - shipping_option_type
      properties:
        shipping_option_type:
          $ref: '#/components/schemas/AdminShippingOptionType'
    AdminShippingProfile:
      type: object
      description: The shipping profile's details..
      x-schemaName: AdminShippingProfile
      properties:
        id:
          type: string
          title: id
          description: The shipping profile's ID.
        name:
          type: string
          title: name
          description: The shipping profile's name.
        type:
          type: string
          title: type
          description: The shipping profile's type.
        metadata:
          type: object
          description: The shipping profile's metadata, holds custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the shipping profile was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the shipping profile was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the shipping profile was deleted.
      required:
        - id
        - name
        - type
        - metadata
        - created_at
        - updated_at
        - deleted_at
    AdminShippingProfileDeleteResponse:
      type: object
      description: The details of the shipping profile's deletion.
      x-schemaName: AdminShippingProfileDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The shipping profile's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: shipping_profile
        deleted:
          type: boolean
          title: deleted
          description: Whether the shipping profile was deleted.
    AdminShippingProfileResponse:
      type: object
      description: The shipping profile's details.
      x-schemaName: AdminShippingProfileResponse
      required:
        - shipping_profile
      properties:
        shipping_profile:
          $ref: '#/components/schemas/AdminShippingProfile'
    AdminStockLocation:
      type: object
      description: The stock location's details.
      x-schemaName: AdminStockLocation
      required:
        - id
        - name
        - address_id
      properties:
        id:
          type: string
          title: id
          description: The location's ID.
        name:
          type: string
          title: name
          description: The location's name.
        address_id:
          type: string
          title: address_id
          description: The ID of the associated address.
        address:
          $ref: '#/components/schemas/AdminStockLocationAddress'
        sales_channels:
          type: array
          description: The sales channels associated with the location.
          items:
            $ref: '#/components/schemas/AdminSalesChannel'
        fulfillment_providers:
          type: array
          description: The fulfillment providers associated with the location.
          items:
            $ref: '#/components/schemas/AdminFulfillmentProvider'
        fulfillment_sets:
          type: array
          description: The fulfillment sets associated with the location.
          items:
            type: object
    AdminStockLocationAddress:
      type: object
      description: The details of the stock location address.
      x-schemaName: AdminStockLocationAddress
      properties:
        id:
          type: string
          title: id
          description: The address's ID.
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        company:
          type: string
          title: company
          description: The address's company.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
          example: us
        city:
          type: string
          title: city
          description: The address's city.
        phone:
          type: string
          title: phone
          description: The address's phone.
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        province:
          type: string
          title: province
          description: The address's lower-case ISO 3166-2 province code.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
      required:
        - id
        - address_1
        - address_2
        - company
        - country_code
        - city
        - phone
        - postal_code
        - province
    AdminStockLocationDeleteResponse:
      type: object
      description: The details of the stock location's deletion.
      x-schemaName: AdminStockLocationDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The stock location's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: stock_location
        deleted:
          type: boolean
          title: deleted
          description: Whether the stock location was deleted.
    AdminStockLocationListResponse:
      type: object
      description: The paginated list of stock locations.
      x-schemaName: AdminStockLocationListResponse
      required:
        - limit
        - offset
        - count
        - stock_locations
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        stock_locations:
          type: array
          description: The list of stock locations.
          items:
            $ref: '#/components/schemas/AdminStockLocation'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminStockLocationResponse:
      type: object
      description: The stock location's details.
      x-schemaName: AdminStockLocationResponse
      required:
        - stock_location
      properties:
        stock_location:
          $ref: '#/components/schemas/AdminStockLocation'
    AdminStore:
      type: object
      description: The store's details.
      x-schemaName: AdminStore
      required:
        - id
        - name
        - supported_currencies
        - supported_locales
        - default_sales_channel_id
        - default_region_id
        - default_location_id
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The store's ID.
        name:
          type: string
          title: name
          description: The store's name.
        supported_currencies:
          type: array
          description: The store's supported currencies.
          items:
            $ref: '#/components/schemas/AdminStoreCurrency'
        default_sales_channel_id:
          type: string
          title: default_sales_channel_id
          description: The ID of the sales channel used by default in the store.
        default_region_id:
          type: string
          title: default_region_id
          description: The ID of the region used by default in the store.
        default_location_id:
          type: string
          title: default_location_id
          description: The ID of the stock location used by default in the store.
        metadata:
          type: object
          description: The store's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the store was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the store was updated.
        supported_locales:
          type: array
          description: The store's supported locales.
          items:
            $ref: '#/components/schemas/AdminStoreLocale'
    AdminStoreCreditAccount:
      type: object
      description: The store credit account's details.
      x-schemaName: AdminStoreCreditAccount
      required:
        - customer
        - id
        - currency_code
        - credits
        - debits
        - balance
        - metadata
        - created_at
        - updated_at
      properties:
        customer:
          $ref: '#/components/schemas/AdminCustomer'
        id:
          type: string
          title: id
          description: The store credit account's ID.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that the store credit account belongs to.
        currency_code:
          type: string
          title: currency_code
          description: The store credit account's currency code.
          example: usd
        credits:
          type: number
          title: credits
          description: The account's credits.
        debits:
          type: number
          title: debits
          description: The account's debits.
        balance:
          type: number
          title: balance
          description: The account's balance.
        metadata:
          type: object
          description: The store credit account's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the store credit account was created at.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the store credit account was updated at.
        code:
          type: string
          title: code
          description: The store credit account's code.
    AdminStoreCreditAccountResponse:
      type: object
      description: The store credit account's details.
      x-schemaName: AdminStoreCreditAccountResponse
      required:
        - store_credit_account
      properties:
        store_credit_account:
          $ref: '#/components/schemas/AdminStoreCreditAccount'
    AdminStoreCreditAccountsResponse:
      type: object
      description: The paginated list of store credit accounts.
      x-schemaName: AdminStoreCreditAccountsResponse
      required:
        - limit
        - offset
        - count
        - store_credit_accounts
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of store credit accounts to return.
        offset:
          type: number
          title: offset
          description: The number of store credit accounts to skip before retrieving the results.
        count:
          type: number
          title: count
          description: The total number of store credit accounts available.
        store_credit_accounts:
          type: array
          description: The list of store credit accounts.
          items:
            $ref: '#/components/schemas/AdminStoreCreditAccount'
        estimate_count:
          type: number
          title: estimate_count
          description: The store credit account's estimate count.
          x-featureFlag: index_engine
    AdminStoreCurrency:
      type: object
      description: The details of a store's currency.
      x-schemaName: AdminStoreCurrency
      required:
        - id
        - currency_code
        - store_id
        - is_default
        - currency
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The currency's ID.
        currency_code:
          type: string
          title: currency_code
          description: The currency's code.
          example: usd
        store_id:
          type: string
          title: store_id
          description: The ID of the store this currency belongs to.
        is_default:
          type: boolean
          title: is_default
          description: Whether this currency is the default in the store.
        currency:
          $ref: '#/components/schemas/AdminCurrency'
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the currency was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the currency was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the currency was deleted.
    AdminStoreListResponse:
      type: object
      description: The paginated list of stores.
      x-schemaName: AdminStoreListResponse
      required:
        - limit
        - offset
        - count
        - stores
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        stores:
          type: array
          description: The list of stores.
          items:
            $ref: '#/components/schemas/AdminStore'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminStoreLocale:
      type: object
      description: The details of a store's locale.
      x-schemaName: AdminStoreLocale
      required:
        - id
        - locale_code
        - store_id
        - locale
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The locale's ID.
        locale_code:
          type: string
          title: locale_code
          description: The locale's code in BCP 47 format.
        store_id:
          type: string
          title: store_id
          description: The ID of the store to which the locale belongs.
        locale:
          $ref: '#/components/schemas/AdminLocale'
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the locale was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the locale was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the locale was deleted.
    AdminStoreResponse:
      type: object
      description: The store's details.
      x-schemaName: AdminStoreResponse
      required:
        - store
      properties:
        store:
          $ref: '#/components/schemas/AdminStore'
    AdminTaxProvider:
      type: object
      description: The tax provider's details.
      x-schemaName: AdminTaxProvider
      required:
        - id
        - is_enabled
      properties:
        id:
          type: string
          title: id
          description: The tax provider's ID.
          example: tp_taxjar_taxjar
        is_enabled:
          type: boolean
          title: is_enabled
          description: Whether the tax provider is enabled in the Medusa application.
    AdminTaxRate:
      type: object
      description: The tax rate's details.
      x-schemaName: AdminTaxRate
      required:
        - id
        - rate
        - code
        - name
        - metadata
        - tax_region_id
        - is_combinable
        - is_default
        - created_at
        - updated_at
        - deleted_at
        - created_by
        - tax_region
        - rules
      properties:
        id:
          type: string
          title: id
          description: The tax rate's ID.
        rate:
          type: number
          title: rate
          description: The rate to charge.
          example: 10
        code:
          type: string
          title: code
          description: The code the tax rate is identified by.
        name:
          type: string
          title: name
          description: The tax rate's name.
        metadata:
          type: object
          description: The tax rate's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        tax_region_id:
          type: string
          title: tax_region_id
          description: The ID of the tax region this rate belongs to.
        is_combinable:
          type: boolean
          title: is_combinable
          description: Whether the tax rate should be combined with parent rates.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/tax/tax-rates-and-rules#combinable-tax-rates
        is_default:
          type: boolean
          title: is_default
          description: Whether this tax rate is the default in the tax region.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the tax rate was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the tax rate was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the tax rate was deleted.
        created_by:
          type: string
          title: created_by
          description: The ID of the user that created the tax rate.
        tax_region:
          $ref: '#/components/schemas/AdminTaxRegion'
        rules:
          type: array
          description: The tax rate's rules.
          items:
            $ref: '#/components/schemas/AdminTaxRateRule'
    AdminTaxRateDeleteResponse:
      type: object
      description: The details of the tax rate deletion.
      x-schemaName: AdminTaxRateDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The tax rate's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: tax_rate
        deleted:
          type: boolean
          title: deleted
          description: Whether the tax rate was deleted.
    AdminTaxRateResponse:
      type: object
      description: The tax rate's details.
      x-schemaName: AdminTaxRateResponse
      required:
        - tax_rate
      properties:
        tax_rate:
          $ref: '#/components/schemas/AdminTaxRate'
    AdminTaxRateRule:
      type: object
      description: The tax rate rule's details.
      x-schemaName: AdminTaxRateRule
      required:
        - reference
        - reference_id
      properties:
        reference:
          type: string
          title: reference
          description: The name of the table this rule references.
          example: product_type
        reference_id:
          type: string
          title: reference_id
          description: The ID of a record in the table that this rule references.
          example: ptyp_1
    AdminTaxRegion:
      type: object
      description: The tax region's details.
      x-schemaName: AdminTaxRegion
      required:
        - id
        - country_code
        - province_code
        - metadata
        - parent_id
        - created_at
        - updated_at
        - deleted_at
        - created_by
        - tax_rates
        - parent
        - children
      properties:
        id:
          type: string
          title: id
          description: The tax region's ID.
        country_code:
          type: string
          title: country_code
          description: The tax region's country code.
          example: us
        province_code:
          type: string
          title: province_code
          description: The tax region's lower-case ISO 3166-2 province code.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        metadata:
          type: object
          description: The tax region's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        parent_id:
          type: string
          title: parent_id
          description: The ID of the parent tax region.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the tax region was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the tax region was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the tax region was deleted.
        created_by:
          type: string
          title: created_by
          description: The ID of the user that created the tax region.
        tax_rates:
          type: array
          description: The tax region's rates.
          items:
            type: object
        parent:
          type: object
        children:
          type: array
          description: The tax region's children.
          items:
            type: object
    AdminTaxRegionDeleteResponse:
      type: object
      description: The details of the tax region deletion.
      x-schemaName: AdminTaxRegionDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The tax region's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: tax_region
        deleted:
          type: boolean
          title: deleted
          description: Whether the tax region was deleted.
    AdminTaxRegionResponse:
      type: object
      description: The tax region's details.
      x-schemaName: AdminTaxRegionResponse
      required:
        - tax_region
      properties:
        tax_region:
          $ref: '#/components/schemas/AdminTaxRegion'
    AdminTransaction:
      type: object
      description: The transaction's details.
      x-schemaName: AdminTransaction
      required:
        - account
        - id
        - account_id
        - type
        - amount
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The transaction's ID.
        account_id:
          type: string
          title: account_id
          description: The ID of the store credit account that the transaction belongs to.
        type:
          type: string
          description: The transaction's type.
          enum:
            - credit
            - debit
        amount:
          type: number
          title: amount
          description: The transaction's amount.
        account:
          $ref: '#/components/schemas/AdminStoreCreditAccount'
        note:
          type: string
          title: note
          description: The transaction's note.
        reference:
          type: string
          title: reference
          description: The transaction's reference.
        reference_id:
          type: string
          title: reference_id
          description: The transaction's reference ID.
        metadata:
          type: object
          description: The transaction's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the transaction was created at.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the transaction was updated at.
    AdminTransactionGroup:
      type: object
      description: The transaction group's details.
      x-schemaName: AdminTransactionGroup
      required:
        - account
        - id
        - code
        - credits
        - debits
        - balance
        - metadata
      properties:
        id:
          type: string
          title: id
          description: The transaction group's ID.
        code:
          type: string
          title: code
          description: The transaction group's code.
        credits:
          type: number
          title: credits
          description: The transaction group's credits.
        debits:
          type: number
          title: debits
          description: The transaction group's debits.
        balance:
          type: number
          title: balance
          description: The transaction group's balance.
        account:
          type: object
        metadata:
          type: object
          description: The transaction group's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminTransactionsResponse:
      type: object
      description: The paginated list of transactions.
      x-schemaName: AdminTransactionsResponse
      required:
        - limit
        - offset
        - count
        - transactions
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of transactions to return.
        offset:
          type: number
          title: offset
          description: The number of transactions to skip before retrieving the results.
        count:
          type: number
          title: count
          description: The total number of transactions available.
        transactions:
          type: array
          description: The list of transactions.
          items:
            $ref: '#/components/schemas/AdminTransaction'
        estimate_count:
          type: number
          title: estimate_count
          description: The store credit account's estimate count.
          x-featureFlag: index_engine
    AdminTranslation:
      type: object
      description: The translation's details.
      x-schemaName: AdminTranslation
      required:
        - id
        - reference_id
        - reference
        - locale_code
        - translations
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The translation's ID.
        reference_id:
          type: string
          title: reference_id
          description: The ID of the resource that the translation belongs to. For example, the ID of a product.
          example: prod_123
        reference:
          type: string
          title: reference
          description: The resource that the translation belongs to.
          example: product
        locale_code:
          type: string
          title: locale_code
          description: The translation's locale code in BCP 47 format.
          example: fr-FR
        translations:
          type: object
          description: The translation key-value pairs. Each key is a field in the resource, and the value is the translated text.
          example:
            title: Chaussures
            description: Des chaussures élégantes.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date that the translation was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date that the translation was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date that the translation was deleted.
    AdminTranslationEntitiesResponse:
      type: object
      description: The list of translatable entities.
      x-schemaName: AdminTranslationEntitiesResponse
      required:
        - data
        - count
        - offset
        - limit
      properties:
        data:
          type: array
          description: The list of translatable entities.
          items:
            allOf:
              - type: object
                description: The entity's data.
                required:
                  - id
                  - translations
                properties:
                  id:
                    type: string
                    title: id
                    description: The entity's ID.
                  translations:
                    type: array
                    description: The entity's translations.
                    items:
                      $ref: '#/components/schemas/AdminTranslation'
        count:
          type: number
          title: count
          description: The total number of translatable entities.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        limit:
          type: number
          title: limit
          description: The maximum number of items returned in the response.
    AdminTranslationSettings:
      type: object
      description: The translation settings details.
      x-schemaName: AdminTranslationSettings
      required:
        - id
        - created_at
        - updated_at
        - deleted_at
        - entity_type
        - fields
        - is_active
      properties:
        id:
          type: string
          title: id
          description: The ID of the translation settings.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the translation settings was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the translation settings was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the translation settings was deleted.
        entity_type:
          type: string
          title: entity_type
          description: The entity type the translation settings are for.
          example: product
        fields:
          type: array
          description: The fields supported for translations.
          items:
            type: string
            title: fields
            description: A field supported for translations.
        is_active:
          type: boolean
          title: is_active
          description: Whether translations are active for the given entity type.
    AdminTranslationSettingsResponse:
      type: object
      description: The translation settings' details.
      x-schemaName: AdminTranslationSettingsResponse
      required:
        - translation_settings
      properties:
        translation_settings:
          type: object
          description: The translation settings details.
    AdminTranslationStatisticsResponse:
      type: object
      description: The translation statistics details.
      x-schemaName: AdminTranslationStatisticsResponse
      required:
        - statistics
      properties:
        statistics:
          type: object
          description: The translation statistics for different entity types. The key is the entity type, and the value is an object containing the statistics for that entity type.
          example:
            product:
              expected: 150
              translated: 120
              missing: 30
              by_locale:
                fr-FR:
                  expected: 150
                  translated: 120
                  missing: 30
          required:
            - by_locale
            - expected
            - translated
            - missing
          additionalProperties:
            type: object
            properties:
              by_locale:
                type: object
                description: The translation statistics of an entity type broken down by locale. The key is the locale code in BCP 47 format, and the value is an object containing the statistics for that locale.
                example:
                  fr-FR:
                    expected: 150
                    translated: 120
                    missing: 30
                required:
                  - expected
                  - translated
                  - missing
                additionalProperties:
                  type: object
                  properties:
                    expected:
                      type: number
                      title: expected
                      description: The total number of translatable fields.
                    translated:
                      type: number
                      title: translated
                      description: The number of translated fields.
                    missing:
                      type: number
                      title: missing
                      description: The number of fields that are yet to be translated.
              expected:
                type: number
                title: expected
                description: The total number of translatable fields across specified locales.
              translated:
                type: number
                title: translated
                description: The number of translated fields across specified locales.
              missing:
                type: number
                title: missing
                description: The number of fields that are yet to be translated across specified locales.
    AdminTranslationsBatchResponse:
      type: object
      description: The batch response for managing translations.
      x-schemaName: AdminTranslationsBatchResponse
      required:
        - created
        - updated
        - deleted
      properties:
        created:
          type: array
          description: The created translations.
          items:
            $ref: '#/components/schemas/AdminTranslation'
        updated:
          type: array
          description: The updated translations.
          items:
            $ref: '#/components/schemas/AdminTranslation'
        deleted:
          type: object
          description: Summary of the deleted translations.
          required:
            - ids
            - object
            - deleted
          properties:
            ids:
              type: array
              description: The IDs of the deleted translations.
              items:
                type: string
                title: ids
                description: A translation ID.
            object:
              type: string
              title: object
              description: The type of object deleted.
              default: translation
            deleted:
              type: boolean
              title: deleted
              description: Whether the translations were successfully deleted.
    AdminUpdateApiKey:
      type: object
      description: The details to update in an API key.
      x-schemaName: AdminUpdateApiKey
      required:
        - title
      properties:
        title:
          type: string
          title: title
          description: The API key's title.
    AdminUpdateClaimItem:
      type: object
      description: The details to update in the item.
      x-schemaName: AdminUpdateClaimItem
      properties:
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        reason_id:
          type: string
          title: reason_id
          description: The ID of the return reason associated with the item.
        internal_note:
          type: string
          title: internal_note
          description: A note that's only viewed by admin users.
    AdminUpdateClaimOutboundItem:
      type: object
      description: The details to update in the item.
      x-schemaName: AdminUpdateClaimOutboundItem
      properties:
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        reason_id:
          type: string
          title: reason_id
          description: The ID of the return reason associated with the item.
        internal_note:
          type: string
          title: internal_note
          description: A note that's only viewed by admin users.
    AdminUpdateCustomerGroup:
      type: object
      description: The details to update in a customer group.
      x-schemaName: AdminUpdateCustomerGroup
      properties:
        name:
          type: string
          title: name
          description: The customer group's name.
        metadata:
          type: object
          description: The customer group's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminUpdateDraftOrder:
      type: object
      description: The data to update in the draft order.
      x-schemaName: AdminUpdateDraftOrder
      properties:
        email:
          type: string
          title: email
          description: The customer email associated with the draft order.
          format: email
        shipping_address:
          $ref: '#/components/schemas/OrderAddress'
        billing_address:
          $ref: '#/components/schemas/OrderAddress'
        metadata:
          type: object
          description: The draft order's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer associated with the draft order.
        sales_channel_id:
          type: string
          title: sales_channel_id
          description: The ID of the sales channel associated with the draft order.
    AdminUpdateDraftOrderActionShippingMethod:
      type: object
      description: The updates to make on a changed shipping method.
      x-schemaName: AdminUpdateDraftOrderActionShippingMethod
      required:
        - shipping_option_id
      properties:
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the associated shipping option.
        custom_amount:
          type: number
          title: custom_amount
          description: The custom amount of the shipping method. If not provided, the shipping option's amount will be used.
        description:
          type: string
          title: description
          description: The shipping method's description.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users about the shipping method.
        metadata:
          type: object
          description: The shipping method's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminUpdateDraftOrderItem:
      type: object
      description: The updates to make on a draft order's item.
      x-schemaName: AdminUpdateDraftOrderItem
      required:
        - quantity
      properties:
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        unit_price:
          type: number
          title: unit_price
          description: The item's unit price.
        compare_at_unit_price:
          type: number
          title: compare_at_unit_price
          description: The original price of the item before a promotion or sale.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users about the item.
    AdminUpdateDraftOrderShippingMethod:
      type: object
      description: The updates to make on a draft order's shipping method.
      x-schemaName: AdminUpdateDraftOrderShippingMethod
      properties:
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the associated shipping option.
        custom_amount:
          type: number
          title: custom_amount
          description: The custom amount of the shipping method. If not provided, the shipping option's amount will be used.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users about the shipping method.
    AdminUpdateExchangeOutboundItem:
      type: object
      description: The details to update in an outbound item.
      x-schemaName: AdminUpdateExchangeOutboundItem
      properties:
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        internal_note:
          type: string
          title: internal_note
          description: A note only viewed by admin users.
    AdminUpdateFulfillmentSetServiceZone:
      type: object
      description: The service zone's details.
      properties:
        name:
          type: string
          title: name
          description: The service zone's name.
        geo_zones:
          type: array
          description: The service zone's associated geo zones.
          items:
            oneOf:
              - type: object
                description: A country geo zone.
                required:
                  - type
                  - metadata
                  - country_code
                properties:
                  type:
                    type: string
                    title: type
                    description: The geo zone's type.
                    default: country
                  metadata:
                    type: object
                    description: The geo zone's metadata.
                    externalDocs:
                      url: https://docs.medusajs.com/api/admin#manage-metadata
                      description: Learn how to manage metadata
                  country_code:
                    type: string
                    title: country_code
                    description: The geo zone's country code.
                  id:
                    type: string
                    title: id
                    description: The ID of an existing geo zone.
              - type: object
                description: A province geo zone.
                required:
                  - type
                  - metadata
                  - country_code
                  - province_code
                properties:
                  type:
                    type: string
                    title: type
                    description: The geo zone's type.
                    default: province
                  metadata:
                    type: object
                    description: The geo zone's metadata.
                    externalDocs:
                      url: https://docs.medusajs.com/api/admin#manage-metadata
                      description: Learn how to manage metadata
                  country_code:
                    type: string
                    title: country_code
                    description: The geo zone's country code.
                  province_code:
                    type: string
                    title: province_code
                    description: The geo zone's ISO 3166-2 province code. Must be lower-case.
                    example: us-ca
                    externalDocs:
                      url: https://en.wikipedia.org/wiki/ISO_3166-2
                      description: Learn more about ISO 3166-2
                  id:
                    type: string
                    title: id
                    description: The ID of an existing geo zone.
              - type: object
                description: A city geo zone
                required:
                  - type
                  - metadata
                  - city
                  - country_code
                  - province_code
                properties:
                  type:
                    type: string
                    title: type
                    description: The geo zone's type.
                    default: city
                  metadata:
                    type: object
                    description: The geo zone's metadata.
                    externalDocs:
                      url: https://docs.medusajs.com/api/admin#manage-metadata
                      description: Learn how to manage metadata
                  city:
                    type: string
                    title: city
                    description: The geo zone's city.
                  country_code:
                    type: string
                    title: country_code
                    description: The geo zone's country code.
                  province_code:
                    type: string
                    title: province_code
                    description: The geo zone's ISO 3166-2 province code. Must be lower-case.
                    example: us-ca
                    externalDocs:
                      url: https://en.wikipedia.org/wiki/ISO_3166-2
                      description: Learn more about ISO 3166-2
                  id:
                    type: string
                    title: id
                    description: The ID of an existing geo zone.
              - type: object
                description: A ZIP geo zone.
                required:
                  - type
                  - metadata
                  - city
                  - country_code
                  - province_code
                  - postal_expression
                properties:
                  type:
                    type: string
                    title: type
                    description: The geo zone's type.
                    default: zip
                  metadata:
                    type: object
                    description: The geo zone's metadata.
                    externalDocs:
                      url: https://docs.medusajs.com/api/admin#manage-metadata
                      description: Learn how to manage metadata
                  city:
                    type: string
                    title: city
                    description: The geo zone's city.
                  country_code:
                    type: string
                    title: country_code
                    description: The geo zone's country code.
                  province_code:
                    type: string
                    title: province_code
                    description: The geo zone's ISO 3166-2 province code. Must be lower-case.
                    example: us-ca
                    externalDocs:
                      url: https://en.wikipedia.org/wiki/ISO_3166-2
                      description: Learn more about ISO 3166-2
                  postal_expression:
                    type: object
                    description: The geo zone's postal expression or ZIP code.
                  id:
                    type: string
                    title: id
                    description: The ID of an existing geo zone.
      x-schemaName: AdminUpdateFulfillmentSetServiceZone
    AdminUpdateGiftCardParams:
      type: object
      description: The details to update in the gift card.
      x-schemaName: AdminUpdateGiftCardParams
      properties:
        status:
          type: string
          description: The gift card's status.
          enum:
            - pending
            - redeemed
        value:
          type: number
          title: value
          description: The gift card's amount.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that the gift card belongs to.
        currency_code:
          type: string
          title: currency_code
          description: The gift card's currency code.
          example: usd
        note:
          type: string
          title: note
          description: The gift card's note.
        expires_at:
          type: string
          title: expires_at
          description: The date the gift card expires at.
        metadata:
          type: object
          description: The gift card's metadata.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminUpdateInventoryItem:
      type: object
      description: The properties to update in the inventory item.
      properties:
        sku:
          type: string
          title: sku
          description: The inventory item's SKU.
        hs_code:
          type: string
          title: hs_code
          description: The inventory item's HS code.
        weight:
          type: number
          title: weight
          description: The inventory item's weight.
        length:
          type: number
          title: length
          description: The inventory item's length.
        height:
          type: number
          title: height
          description: The inventory item's height.
        width:
          type: number
          title: width
          description: The inventory item's width.
        origin_country:
          type: string
          title: origin_country
          description: The inventory item's origin country.
        mid_code:
          type: string
          title: mid_code
          description: The inventory item's MID code.
        material:
          type: string
          title: material
          description: The inventory item's material.
        title:
          type: string
          title: title
          description: The inventory item's title.
        description:
          type: string
          title: description
          description: The inventory item's description.
        requires_shipping:
          type: boolean
          title: requires_shipping
          description: Whether the inventory item requires shipping.
        thumbnail:
          type: string
          title: thumbnail
          description: The URL of an image to be used as the inventory item's thumbnail. You can use the Upload API routes to upload an image and get its URL.
        metadata:
          type: object
          description: The inventory item's metadata. Can be custom data in key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
      x-schemaName: AdminUpdateInventoryItem
    AdminUpdateInventoryLevel:
      type: object
      description: The properties to update in the inventory level.
      properties:
        stocked_quantity:
          type: number
          title: stocked_quantity
          description: The inventory level's stocked quantity.
        incoming_quantity:
          type: number
          title: incoming_quantity
          description: The inventory level's incoming quantity.
      x-schemaName: AdminUpdateInventoryLevel
    AdminUpdateOrder:
      type: object
      description: The details to update in the order.
      x-schemaName: AdminUpdateOrder
      properties:
        email:
          type: string
          title: email
          description: The order's email.
          format: email
        shipping_address:
          $ref: '#/components/schemas/OrderAddress'
        billing_address:
          $ref: '#/components/schemas/OrderAddress'
        metadata:
          type: object
          description: The order's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        locale:
          type: string
          title: locale
          description: The order's locale in [BCP 47](https://gist.github.com/typpo/b2b828a35e683b9bf8db91b5404f1bd1) format.
          example: en-US
    AdminUpdateOrderChange:
      type: object
      description: The data to update in the order change.
      x-schemaName: AdminUpdateOrderChange
      properties:
        carry_over_promotions:
          type: boolean
          title: carry_over_promotions
          description: Whether promotions from the original order should be carried over to the order change (specifically, exchanges).
    AdminUpdatePriceList:
      type: object
      description: the details to update in a price list.
      x-schemaName: AdminUpdatePriceList
      properties:
        title:
          type: string
          title: title
          description: The price list's title.
        description:
          type: string
          title: description
          description: The price list's description.
        starts_at:
          type: string
          title: starts_at
          description: The date the price list starts.
        ends_at:
          type: string
          title: ends_at
          description: The date the price list ends.
        status:
          type: string
          description: The price list's status.
          enum:
            - active
            - draft
        type:
          type: string
          description: The price list's type.
          enum:
            - sale
            - override
        rules:
          type: object
          description: The price list's rules.
          example:
            customer_group_id:
              - cusgrp_123
    AdminUpdatePricePreference:
      type: object
      description: The details to update in the price preference.
      x-schemaName: AdminUpdatePricePreference
      properties:
        attribute:
          type: string
          title: attribute
          description: The price preference's attribute.
          example: region_id
        value:
          type: string
          title: value
          description: The price preference's value.
          example: reg_123
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether prices are tax inclusive for this price preference.
    AdminUpdateProduct:
      type: object
      description: The product's details.
      x-schemaName: AdminUpdateProduct
      properties:
        title:
          type: string
          title: title
          description: The product's title.
        subtitle:
          type: string
          title: subtitle
          description: The product's subtitle.
        description:
          type: string
          title: description
          description: The product's description.
        is_giftcard:
          type: boolean
          title: is_giftcard
          description: Whether the product is a gift card.
        discountable:
          type: boolean
          title: discountable
          description: Whether discounts can be applied on the product.
        images:
          type: array
          description: The product's images.
          items:
            type: object
            description: The image's details.
            required:
              - url
            properties:
              url:
                type: string
                title: url
                description: The image's URL.
        thumbnail:
          type: string
          title: thumbnail
          description: The product's thumbnail URL.
        handle:
          type: string
          title: handle
          description: The product's unique handle.
        status:
          type: string
          description: The product's status.
          enum:
            - draft
            - proposed
            - published
            - rejected
        type_id:
          type: string
          title: type_id
          description: The ID of the product's type.
        collection_id:
          type: string
          title: collection_id
          description: The ID of the product's collection.
        categories:
          type: array
          description: The product's categories.
          items:
            type: object
            description: The product's category.
            required:
              - id
            properties:
              id:
                type: string
                title: id
                description: The category's ID.
        tags:
          type: array
          description: The product's tags.
          items:
            type: object
            description: The product's tag.
            required:
              - id
            properties:
              id:
                type: string
                title: id
                description: The tag's ID.
        options:
          type: array
          description: The product's options.
          items:
            $ref: '#/components/schemas/AdminUpdateProductOption'
        variants:
          type: array
          description: The product's variants. You can add new variants or update existing ones, passing their IDs in the object.
          items:
            oneOf:
              - $ref: '#/components/schemas/AdminCreateProductVariant'
              - $ref: '#/components/schemas/AdminUpdateProductVariant'
        sales_channels:
          type: array
          description: The sales channels that the product is available in.
          items:
            type: object
            description: The sales channel's details.
            required:
              - id
            properties:
              id:
                type: string
                title: id
                description: The sales channel's ID.
        weight:
          type: number
          title: weight
          description: The product's weight.
        length:
          type: number
          title: length
          description: The product's length.
        height:
          type: number
          title: height
          description: The product's height.
        width:
          type: number
          title: width
          description: The product's width.
        hs_code:
          type: string
          title: hs_code
          description: The product's HS code.
        mid_code:
          type: string
          title: mid_code
          description: The product's MID code.
        origin_country:
          type: string
          title: origin_country
          description: The product's origin country.
        material:
          type: string
          title: material
          description: The product's material.
        metadata:
          type: object
          description: The product's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        external_id:
          type: string
          title: external_id
          description: The ID of the product in an external or third-party system.
    AdminUpdateProductCategory:
      type: object
      description: The properties to update in the product category.
      properties:
        name:
          type: string
          title: name
          description: The product category's name.
        description:
          type: string
          title: description
          description: The product category's description.
        handle:
          type: string
          title: handle
          description: The product category's handle. Must be a unique value.
        is_internal:
          type: boolean
          title: is_internal
          description: Whether the product category is only used for internal purposes and shouldn't be shown the customer.
        is_active:
          type: boolean
          title: is_active
          description: Whether the product category is active.
        parent_category_id:
          type: string
          title: parent_category_id
          description: The ID of a parent category.
        metadata:
          type: object
          description: The product category's metadata. Can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        rank:
          type: number
          title: rank
          description: The product category's rank among other categories.
      x-schemaName: AdminUpdateProductCategory
    AdminUpdateProductOption:
      type: object
      description: The details to update in a product option.
      x-schemaName: AdminUpdateProductOption
      properties:
        title:
          type: string
          title: title
          description: The option's title.
        values:
          type: array
          description: The option's values.
          items:
            type: string
            title: values
            description: An option value.
    AdminUpdateProductTag:
      type: object
      description: The properties to update in the product tag.
      properties:
        value:
          type: string
          title: value
          description: The product tag's value.
        metadata:
          type: object
          description: The product tag's metadata. Can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
      x-schemaName: AdminUpdateProductTag
    AdminUpdateProductType:
      type: object
      description: The properties to update in the product type.
      properties:
        value:
          type: string
          title: value
          description: The product type's value.
        metadata:
          type: object
          description: The product type's metadata. Can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
      x-schemaName: AdminUpdateProductType
    AdminUpdateProductVariant:
      type: object
      description: The properties to update of a product variant.
      x-schemaName: AdminUpdateProductVariant
      properties:
        title:
          type: string
          title: title
          description: The product variant's title.
        sku:
          type: string
          title: sku
          description: The product variant's SKU.
        ean:
          type: string
          title: ean
          description: The product variant's EAN.
        upc:
          type: string
          title: upc
          description: The product variant's UPC.
        barcode:
          type: string
          title: barcode
          description: The product variant's barcode.
        hs_code:
          type: string
          title: hs_code
          description: The product variant's HS code.
        mid_code:
          type: string
          title: mid_code
          description: The product variant's MID code.
        allow_backorder:
          type: boolean
          title: allow_backorder
          description: Whether customers can order the variant even if it's not in stock.
        manage_inventory:
          type: boolean
          title: manage_inventory
          description: Whether the Medusa application manages the variant's inventory. If disabled, the product variant is always considered in stock.
        variant_rank:
          type: number
          title: variant_rank
          description: The product variant's rank among its siblings.
        weight:
          type: number
          title: weight
          description: The product variant's weight.
        length:
          type: number
          title: length
          description: The product variant's length.
        height:
          type: number
          title: height
          description: The product variant's height.
        width:
          type: number
          title: width
          description: The product variant's width.
        origin_country:
          type: string
          title: origin_country
          description: The product variant's origin country.
        material:
          type: string
          title: material
          description: The product variant's material.
        metadata:
          type: object
          description: The product variant's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        prices:
          type: array
          description: The product variant's prices.
          items:
            $ref: '#/components/schemas/AdminCreateProductVariantPrice'
        options:
          type: object
          description: The product variant's options.
    AdminUpdatePromotionRule:
      type: object
      description: The properties to update in a buy rule.
      required:
        - id
        - values
      properties:
        id:
          type: string
          title: id
          description: The buy rule's ID.
        operator:
          type: string
          description: The operator used to check whether the buy rule applies on a cart. For example, `eq` means that the cart's value for the specified attribute must match the specified value.
          enum:
            - gte
            - lte
            - gt
            - lt
            - eq
            - ne
            - in
        description:
          type: string
          title: description
          description: The buy rule's description.
        attribute:
          type: string
          title: attribute
          description: The attribute to compare against when checking whether a promotion can be applied on a cart.
          example: items.product.id
        values:
          oneOf:
            - type: string
              title: values
              description: The attribute's value.
              example: prod_123
            - type: array
              description: The allowed attribute values.
              items:
                type: string
                title: values
                description: An attribute value.
                example: prod_123
      x-schemaName: AdminUpdatePromotionRule
    AdminUpdateRefundReason:
      type: object
      description: The properties to update in the refund reason.
      properties:
        label:
          type: string
          title: label
          description: The refund reason's label.
        description:
          type: string
          title: description
          description: The refund reason's description.
        code:
          type: string
          title: code
          description: The refund reason's code.
        metadata:
          type: object
          description: The refund reason's metadata.
      x-schemaName: AdminUpdateRefundReason
      required:
        - label
        - code
    AdminUpdateRegion:
      type: object
      description: The propeties to update in the region.
      properties:
        name:
          type: string
          title: name
          description: The region's name.
        currency_code:
          type: string
          title: currency_code
          description: The region's currency code.
        countries:
          type: array
          description: The region's countries.
          items:
            type: string
            title: countries
            description: A country code.
        automatic_taxes:
          type: boolean
          title: automatic_taxes
          description: Whether taxes are calculated automatically for carts in the region.
        payment_providers:
          type: array
          description: The payment providers enabled in the region.
          items:
            type: string
            title: payment_providers
            description: A payment provider's ID.
        metadata:
          type: object
          description: The region's metadata. Can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the prices in the region are tax inclusive.
      x-schemaName: AdminUpdateRegion
    AdminUpdateReservation:
      type: object
      description: The properties to update in the reservation.
      properties:
        location_id:
          type: string
          title: location_id
          description: The ID of the associated location.
        quantity:
          type: number
          title: quantity
          description: The reserved quantity.
        description:
          type: string
          title: description
          description: The reservation's description.
        metadata:
          type: object
          description: The reservation's metadata. Can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
      x-schemaName: AdminUpdateReservation
    AdminUpdateReturnItems:
      type: object
      description: The details to update in the item.
      x-schemaName: AdminUpdateReturnItems
      properties:
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        reason_id:
          type: string
          title: reason_id
          description: The ID of the associated return reason.
        metadata:
          type: object
          description: The claim's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminUpdateReturnReason:
      type: object
      description: The details to update in a return reason.
      x-schemaName: AdminUpdateReturnReason
      properties:
        label:
          type: string
          title: label
          description: The return reason's label.
        value:
          type: string
          title: value
          description: The return reason's value.
        description:
          type: string
          title: description
          description: The return reason's description.
        metadata:
          type: object
          description: The return reason's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
      required:
        - value
        - label
    AdminUpdateReturnRequest:
      type: object
      description: The return's details.
      x-schemaName: AdminUpdateReturnRequest
      properties:
        location_id:
          type: string
          title: location_id
          description: The ID of the location to return items to.
        no_notification:
          type: boolean
          title: no_notification
          description: Whether the customer should receive notifications about updates to the return.
        metadata:
          type: object
          description: The return's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminUpdateReturnShipping:
      type: object
      description: The shipping method's details.
      x-schemaName: AdminUpdateReturnShipping
      properties:
        custom_amount:
          type: number
          title: custom_amount
          description: Set a custom price for the shipping method.
        internal_note:
          type: string
          title: internal_note
          description: A note viewed only by admin users.
        metadata:
          type: object
          description: The return's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminUpdateSalesChannel:
      type: object
      description: The properties to update in the sales channel.
      x-schemaName: AdminUpdateSalesChannel
      properties:
        name:
          type: string
          title: name
          description: The sales channel's name.
        description:
          type: string
          title: description
          description: The sales channel's description.
        is_disabled:
          type: boolean
          title: is_disabled
          description: Whether the sales channel is disabled.
        metadata:
          type: object
          description: The sales channel's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminUpdateShippingOption:
      type: object
      description: The properties to update in the shipping option type.
      properties:
        name:
          type: string
          title: name
          description: The shipping option's name.
        data:
          type: object
          description: The shipping option's data.
        price_type:
          type: string
          description: The shipping option's price type.
          enum:
            - flat
            - calculated
        provider_id:
          type: string
          title: provider_id
          description: The shipping option's provider id.
        shipping_profile_id:
          type: string
          title: shipping_profile_id
          description: The shipping option's shipping profile id.
        type:
          $ref: '#/components/schemas/AdminCreateShippingOptionType'
        type_id:
          type: string
          title: type_id
          description: The shipping option's type id.
        prices:
          type: array
          description: The shipping option's prices.
          items:
            oneOf:
              - type: object
                description: The price's prices.
                x-schemaName: AdminUpdateShippingOptionPriceWithCurrency
                properties:
                  id:
                    type: string
                    title: id
                    description: The price's ID.
                  currency_code:
                    type: string
                    title: currency_code
                    description: The price's currency code.
                  amount:
                    type: number
                    title: amount
                    description: The price's amount.
                  rules:
                    type: array
                    description: The price's rules.
                    items:
                      type: object
                      description: The rule's rules.
                      x-schemaName: PriceRule
                      required:
                        - attribute
                        - operator
                        - value
                      properties:
                        attribute:
                          type: string
                          title: attribute
                          description: The rule's attribute.
                        operator:
                          type: string
                          description: The rule's operator.
                          enum:
                            - gt
                            - lt
                            - eq
                            - lte
                            - gte
                        value:
                          type: number
                          title: value
                          description: The rule's value.
              - type: object
                description: The price's prices.
                x-schemaName: AdminUpdateShippingOptionPriceWithRegion
                properties:
                  id:
                    type: string
                    title: id
                    description: The price's ID.
                  region_id:
                    type: string
                    title: region_id
                    description: The price's region id.
                  amount:
                    type: number
                    title: amount
                    description: The price's amount.
                  rules:
                    type: array
                    description: The price's rules.
                    items:
                      type: object
                      description: The rule's rules.
                      x-schemaName: PriceRule
                      required:
                        - attribute
                        - operator
                        - value
                      properties:
                        attribute:
                          type: string
                          title: attribute
                          description: The rule's attribute.
                        operator:
                          type: string
                          description: The rule's operator.
                          enum:
                            - gt
                            - lt
                            - eq
                            - lte
                            - gte
                        value:
                          type: number
                          title: value
                          description: The rule's value.
        rules:
          type: array
          description: The shipping option's rules.
          items:
            oneOf:
              - type: object
                description: The rule's rules.
                x-schemaName: AdminCreateShippingOptionRule
                required:
                  - operator
                  - attribute
                  - value
                properties:
                  operator:
                    type: string
                    description: The rule's operator.
                    enum:
                      - gt
                      - lt
                      - eq
                      - ne
                      - in
                      - lte
                      - gte
                      - nin
                  attribute:
                    type: string
                    title: attribute
                    description: The rule's attribute.
                  value:
                    oneOf:
                      - type: string
                        title: value
                        description: The rule's value.
                      - type: array
                        description: The rule's value.
                        items:
                          type: string
                          title: value
                          description: The value's details.
              - type: object
                description: The rule's rules.
                x-schemaName: AdminUpdateShippingOptionRule
                required:
                  - id
                  - operator
                  - attribute
                  - value
                properties:
                  id:
                    type: string
                    title: id
                    description: The rule's ID.
                  operator:
                    type: string
                    description: The rule's operator.
                    enum:
                      - gt
                      - lt
                      - eq
                      - ne
                      - in
                      - lte
                      - gte
                      - nin
                  attribute:
                    type: string
                    title: attribute
                    description: The rule's attribute.
                  value:
                    oneOf:
                      - type: string
                        title: value
                        description: The rule's value.
                      - type: array
                        description: The rule's value.
                        items:
                          type: string
                          title: value
                          description: The value's details.
        metadata:
          type: object
          description: The shipping option's metadata.
      x-schemaName: AdminUpdateShippingOption
    AdminUpdateShippingOptionRule:
      type: object
      description: The properties to update in the shipping option rule.
      required:
        - id
        - operator
        - attribute
        - value
      properties:
        id:
          type: string
          title: id
          description: The rule's ID.
        operator:
          type: string
          description: The operator used to check whether a rule applies.
          enum:
            - in
            - eq
            - ne
            - gt
            - gte
            - lt
            - lte
            - nin
        attribute:
          type: string
          title: attribute
          description: The name of a property or table that the rule applies to.
          example: customer_group
        value:
          oneOf:
            - type: string
              title: value
              description: A value of the attribute that enables this rule.
              example: cusgroup_123
            - type: array
              description: Values of the attribute that enable this rule.
              items:
                type: string
                title: value
                description: A value of the attribute that enables this rule.
                example: cusgroup_123
      x-schemaName: AdminUpdateShippingOptionRule
    AdminUpdateShippingOptionType:
      type: object
      description: The properties to update in the shipping option type.
      properties:
        code:
          type: string
          title: code
          description: The shipping option type's code.
        description:
          type: string
          title: description
          description: The shipping option type's description.
        label:
          type: string
          title: label
          description: The shipping option type's label.
      x-schemaName: AdminUpdateShippingOptionType
    AdminUpdateShippingProfile:
      type: object
      description: The properties to update in the shipping profile.
      properties:
        name:
          type: string
          title: name
          description: The shipping profile's name.
        type:
          type: string
          title: type
          description: The shipping profile's type.
        metadata:
          type: object
          description: The shipping profile's metadata.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
      x-schemaName: AdminUpdateShippingProfile
    AdminUpdateStockLocation:
      type: object
      description: The properties to update in a stock location.
      x-schemaName: AdminUpdateStockLocation
      properties:
        name:
          type: string
          title: name
          description: The stock location's name.
        address:
          $ref: '#/components/schemas/AdminUpsertStockLocationAddress'
        address_id:
          type: string
          title: address_id
          description: The ID of an existing stock location address to associate the stock location with.
        metadata:
          type: object
          description: The stock location's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminUpdateStore:
      type: object
      description: The properties to update in a store.
      x-schemaName: AdminUpdateStore
      properties:
        name:
          type: string
          title: name
          description: The store's name.
        supported_currencies:
          type: array
          description: The store's supported currencies.
          items:
            $ref: '#/components/schemas/AdminUpdateStoreSupportedCurrency'
        default_sales_channel_id:
          type: string
          title: default_sales_channel_id
          description: The ID of the default sales channel in the store.
        default_region_id:
          type: string
          title: default_region_id
          description: The ID of the default region in the store.
        default_location_id:
          type: string
          title: default_location_id
          description: The ID of the default stock location in the store.
        metadata:
          type: object
          description: The store's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        supported_locales:
          type: array
          description: The store's supported locales.
          items:
            $ref: '#/components/schemas/AdminUpdateStoreSupportedLocale'
    AdminUpdateStoreSupportedCurrency:
      type: object
      description: The details to update in a supported currency of the store.
      required:
        - currency_code
      properties:
        currency_code:
          type: string
          title: currency_code
          description: The currency's code.
          example: usd
        is_default:
          type: boolean
          title: is_default
          description: Whether the currency is the default in the store.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether prices using this currency are tax inclusive.
      x-schemaName: AdminUpdateStoreSupportedCurrency
    AdminUpdateStoreSupportedLocale:
      type: object
      description: The payload to update a store's supported locale.
      x-schemaName: AdminUpdateStoreSupportedLocale
      required:
        - locale_code
      properties:
        locale_code:
          type: string
          title: locale_code
          description: The locale's code in [BCP 47 format](https://gist.github.com/typpo/b2b828a35e683b9bf8db91b5404f1bd1).
          example: fr-FR
    AdminUpdateTaxRate:
      type: object
      description: The properties to update in the tax rate.
      x-schemaName: AdminUpdateTaxRate
      properties:
        rate:
          type: number
          title: rate
          description: The rate to charge.
        code:
          type: string
          title: code
          description: The code that the tax rate is identified by.
        rules:
          type: array
          description: The tax rate's rules.
          items:
            $ref: '#/components/schemas/AdminCreateTaxRateRule'
        name:
          type: string
          title: name
          description: The tax rate's name.
        is_default:
          type: boolean
          title: is_default
          description: Whether the tax rate is the default in the store.
        is_combinable:
          type: boolean
          title: is_combinable
          description: Whether the tax rate should be combined with parent rates.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/tax/tax-rates-and-rules#combinable-tax-rates
        metadata:
          type: object
          description: The tax rate's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
      required:
        - code
    AdminUpdateTaxRegion:
      type: object
      description: The details to update in a tax region.
      x-schemaName: AdminUpdateTaxRegion
      properties:
        province_code:
          type: string
          title: province_code
          description: The tax region's ISO 3166-2 province code. Must be lower-case.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        metadata:
          type: object
          description: The tax region's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        provider_id:
          type: string
          title: provider_id
          description: The ID of the tax provider to use when calculating taxes for this tax region.
    AdminUpdateTranslationSettings:
      type: object
      description: The translation settings to update.
      x-schemaName: AdminUpdateTranslationSettings
      required:
        - id
      properties:
        id:
          type: string
          title: id
          description: The ID of the translation settings to update.
        entity_type:
          type: string
          title: entity_type
          description: The entity type to update the translation settings for.
        fields:
          type: array
          description: The fields to update translations for.
          items:
            type: string
            title: fields
            description: A field to update translations for.
        is_active:
          type: boolean
          title: is_active
          description: Whether translations are active for the given entity type.
    AdminUpdateUser:
      type: object
      description: The properties to update in a user.
      x-schemaName: AdminUpdateUser
      properties:
        first_name:
          type: string
          title: first_name
          description: The user's first name.
        last_name:
          type: string
          title: last_name
          description: The user's last name.
        avatar_url:
          type: string
          title: avatar_url
          description: The URL of the user's avatar.
        metadata:
          type: object
          description: The user's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
    AdminUpdateVariantInventoryItem:
      type: object
      description: The properties to update of the variant's inventory item association.
      x-schemaName: AdminUpdateVariantInventoryItem
      required:
        - required_quantity
      properties:
        required_quantity:
          type: number
          title: required_quantity
          description: The number of units a single quantity is equivalent to. For example, if a customer orders one quantity of the variant, Medusa checks the availability of the quantity multiplied by the value set for `required_quantity`. When the customer orders the quantity, Medusa reserves the ordered quantity multiplied by the value set for `required_quantity`.
    AdminUpdateViewConfiguration:
      type: object
      description: The details to update in a view configuration.
      x-schemaName: AdminUpdateViewConfiguration
      properties:
        set_active:
          type: boolean
          title: set_active
          description: Whether the view is set as active.
        name:
          type: string
          title: name
          description: The view's name.
        is_system_default:
          type: boolean
          title: is_system_default
          description: Whether the view is the system default.
        configuration:
          type: object
          description: The view's configuration.
          properties:
            search:
              type: string
              title: search
              description: The search query used in the view.
            visible_columns:
              type: array
              description: The configuration's visible columns.
              items:
                type: string
                title: visible_columns
                description: The visible column's name.
            column_order:
              type: array
              description: The columns in the order they should be displayed.
              items:
                type: string
                title: column_order
                description: The column's name.
            column_widths:
              type: object
              description: The column widths in the view.
            filters:
              type: object
              description: The filters applied to the view.
            sorting:
              type: object
              description: The sorting applied to the view.
              required:
                - id
                - desc
              properties:
                id:
                  type: string
                  title: id
                  description: The ID of the sorting column.
                desc:
                  type: boolean
                  title: desc
                  description: Whether the sorting is descending.
    AdminUploadPreSignedUrl:
      type: object
      description: The details of the file to upload.
      x-schemaName: AdminUploadPreSignedUrl
      required:
        - originalname
        - size
        - mime_type
      properties:
        originalname:
          type: string
          title: originalname
          description: The file's original name.
        size:
          type: number
          title: size
          description: The file's size in bytes.
        mime_type:
          type: string
          title: mime_type
          description: The file's mime type.
          example: text/csv
        access:
          type: string
          description: The access level of the file. If `private`, the file will not be publicly accessible. The default value depends on the configured File Module Provider.
          enum:
            - public
            - private
    AdminUploadPreSignedUrlResponse:
      type: object
      description: The result of the pre-signed URL upload request.
      x-schemaName: AdminUploadPreSignedUrlResponse
      required:
        - url
        - filename
        - originalname
        - mime_type
        - extension
        - size
      properties:
        url:
          type: string
          title: url
          description: The file's pre-signed upload URL.
        filename:
          type: string
          title: filename
          description: The file's filename.
        originalname:
          type: string
          title: originalname
          description: The file's orignal name.
        mime_type:
          type: string
          title: mime_type
          description: The file's mime type.
          example: text/csv
        extension:
          type: string
          title: extension
          description: The file's extension.
          example: csv
        size:
          type: number
          title: size
          description: The file's size in bytes.
    AdminUpsertStockLocationAddress:
      type: object
      description: The details of the stock location address to create.
      x-schemaName: AdminUpsertStockLocationAddress
      required:
        - address_1
        - country_code
      properties:
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        company:
          type: string
          title: company
          description: The address's company.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
          example: usd
        city:
          type: string
          title: city
          description: The address's city.
        phone:
          type: string
          title: phone
          description: The address's phone.
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        province:
          type: string
          title: province
          description: The address's ISO 3166-2 province code. Must be lower-case.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
    AdminUser:
      type: object
      description: The user's details.
      x-schemaName: AdminUser
      required:
        - id
        - email
        - first_name
        - last_name
        - avatar_url
        - metadata
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The user's ID.
        email:
          type: string
          title: email
          description: The user's email.
          format: email
        first_name:
          type: string
          title: first_name
          description: The user's first name.
        last_name:
          type: string
          title: last_name
          description: The user's last name.
        avatar_url:
          type: string
          title: avatar_url
          description: The URL of the user's avatar.
        metadata:
          type: object
          description: The user's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the user was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the user was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the user was deleted.
    AdminUserDeleteResponse:
      type: object
      description: The details of the deleted user.
      x-schemaName: AdminUserDeleteResponse
      required:
        - id
        - object
        - deleted
      properties:
        id:
          type: string
          title: id
          description: The user's ID.
        object:
          type: string
          title: object
          description: The name of the deleted object.
          default: user
        deleted:
          type: boolean
          title: deleted
          description: Whether the user was deleted.
    AdminUserListResponse:
      type: object
      description: The paginated list of users.
      x-schemaName: AdminUserListResponse
      required:
        - limit
        - offset
        - count
        - users
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        users:
          type: array
          description: The list of users.
          items:
            $ref: '#/components/schemas/AdminUser'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    AdminUserResponse:
      type: object
      description: The user's details.
      x-schemaName: AdminUserResponse
      required:
        - user
      properties:
        user:
          $ref: '#/components/schemas/AdminUser'
    AdminViewConfiguration:
      type: object
      description: The details of a view configuration.
      x-schemaName: AdminViewConfiguration
      required:
        - id
        - entity
        - name
        - user_id
        - is_system_default
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The view configuration's ID.
        entity:
          type: string
          title: entity
          description: The entity the view configuration belongs to.
        name:
          type: string
          title: name
          description: The view configuration's name.
        user_id:
          type: string
          title: user_id
          description: The ID of the user the view configuration belongs to. If `null`, the view configuration is a system default.
        is_system_default:
          type: boolean
          title: is_system_default
          description: Whether the view configuration is the system default.
        configuration:
          type: object
          description: The view's configuration.
          required:
            - visible_columns
            - column_order
          properties:
            visible_columns:
              type: array
              description: The configuration's visible columns.
              items:
                type: string
                title: visible_columns
                description: The visible column's name.
            column_order:
              type: array
              description: The columns in the order they should be displayed.
              items:
                type: string
                title: column_order
                description: The column's name.
            column_widths:
              type: object
              description: The column widths in the view.
            filters:
              type: object
              description: The filters applied to the view.
            sorting:
              type: object
              description: The sorting applied to the view.
              required:
                - id
                - desc
              properties:
                id:
                  type: string
                  title: id
                  description: The ID of the sorting column.
                desc:
                  type: boolean
                  title: desc
                  description: Whether the sorting is descending.
            search:
              type: string
              title: search
              description: The configuration's search.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the view configuration was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the view configuration was updated.
    AdminViewConfigurationResponse:
      type: object
      description: The details of a view configuration.
      x-schemaName: AdminViewConfigurationResponse
      required:
        - view_configuration
      properties:
        view_configuration:
          $ref: '#/components/schemas/AdminViewConfiguration'
    AdminViewsEntityColumnsResponse:
      type: object
      description: The view's columns.
      x-schemaName: AdminViewsEntityColumnsResponse
      required:
        - columns
      properties:
        columns:
          type: array
          description: The view's columns.
          items:
            $ref: '#/components/schemas/AdminColumn'
    AdminWorkflowExecution:
      type: object
      description: The workflows execution's details.
      x-schemaName: AdminWorkflowExecution
      required:
        - id
        - workflow_id
        - transaction_id
        - execution
        - context
        - state
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The workflow execution's ID.
        workflow_id:
          type: string
          title: workflow_id
          description: The ID of the workflow.
        transaction_id:
          type: string
          title: transaction_id
          description: The workflow execution's transaction ID.
        execution:
          $ref: '#/components/schemas/AdminWorkflowExecutionExecution'
        context:
          $ref: '#/components/schemas/WorkflowExecutionContext'
        state:
          type: string
          description: The workflow execution's state.
          enum:
            - not_started
            - invoking
            - waiting_to_compensate
            - compensating
            - done
            - reverted
            - failed
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the workflow execution was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the workflow execution was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the workflow execution was deleted.
    AdminWorkflowExecutionExecution:
      type: object
      description: The workflow execution's steps details.
      x-schemaName: AdminWorkflowExecutionExecution
      required:
        - steps
      properties:
        steps:
          type: object
          description: The execution's steps. Each object key is a step ID, and the value is the object whose properties are shown below.
          required:
            - id
            - invoke
            - definition
            - compensate
            - depth
            - startedAt
          additionalProperties:
            type: object
            properties:
              id:
                type: string
                title: id
                description: The step's ID.
              invoke:
                type: object
                description: The state of the step's invokation function.
                x-schemaName: WorkflowExecutionFn
                required:
                  - state
                  - status
                properties:
                  state:
                    type: string
                    description: The invokation step's state.
                    enum:
                      - failed
                      - not_started
                      - invoking
                      - compensating
                      - done
                      - reverted
                      - dormant
                      - skipped
                      - skipped_failure
                      - timeout
                  status:
                    type: string
                    description: The invokation step's state.
                    enum:
                      - idle
                      - ok
                      - waiting_response
                      - temp_failure
                      - permanent_failure
              definition:
                type: object
                description: The step's definition details.
                x-schemaName: WorkflowExecutionDefinition
                properties:
                  async:
                    type: boolean
                    title: async
                    description: Whether the step is async.
                  compensateAsync:
                    type: boolean
                    title: compensateAsync
                    description: Whether the compensation function of the step is async.
                  noCompensation:
                    type: boolean
                    title: noCompensation
                    description: Whether the step doesn't have a compensation function.
                  continueOnPermanentFailure:
                    type: boolean
                    title: continueOnPermanentFailure
                    description: Whether the workflow should continue executing even if its status is changed to failed.
                  skipOnPermanentFailure:
                    oneOf:
                      - type: string
                        title: skipOnPermanentFailure
                        description: The ID of the step to skip to in case of a permanent failure.
                      - type: boolean
                        title: skipOnPermanentFailure
                        description: Whether the workflow should skip subsequent steps in case of a permanent failure.
                  maxRetries:
                    type: number
                    title: maxRetries
                    description: The maximum number of times to retry the step.
                  noWait:
                    type: boolean
                    title: noWait
                    description: Whether the workflow shouldn't wait for the step to finish before moving to the next step.
                    default: false
                  retryInterval:
                    type: number
                    title: retryInterval
                    description: The interval in seconds between retry attempts when the step fails.
                  retryIntervalAwaiting:
                    type: number
                    title: retryIntervalAwaiting
                    description: The interval in seconds to retry a step even if its status is `waiting_response`.
                  saveResponse:
                    type: boolean
                    title: saveResponse
                    description: Whether the step's response is stored.
                  timeout:
                    type: number
                    title: timeout
                    description: The maximum time in seconds to wait for this step to complete. If the step exceeds this time, the step's state is changed to `timeout`, but the step continues executing.
                  autoRetry:
                    type: boolean
                    title: autoRetry
                    description: Whether the step should be automatically retried if it fails.
                  maxAwaitingRetries:
                    type: number
                    title: maxAwaitingRetries
                    description: The maximum number of times to retry the step while it's in the `waiting_response` state.
              compensate:
                type: object
                description: The state of the step's compensation function.
                x-schemaName: WorkflowExecutionFn
                required:
                  - state
                  - status
                properties:
                  state:
                    type: string
                    description: The compensation function's state.
                    enum:
                      - failed
                      - not_started
                      - invoking
                      - compensating
                      - done
                      - reverted
                      - dormant
                      - skipped
                      - skipped_failure
                      - timeout
                  status:
                    type: string
                    description: The compensation function's status.
                    enum:
                      - idle
                      - ok
                      - waiting_response
                      - temp_failure
                      - permanent_failure
              depth:
                type: number
                title: depth
                description: The step's depth in the workflow's execution.
              startedAt:
                type: number
                title: startedAt
                description: The timestamp the step started executing.
    AdminWorkflowExecutionResponse:
      type: object
      description: The workflow execution's details.
      x-schemaName: AdminWorkflowExecutionResponse
      required:
        - workflow_execution
      properties:
        workflow_execution:
          $ref: '#/components/schemas/AdminWorkflowExecution'
    ApiKeyResponse:
      type: object
      description: The API key's details.
      x-schemaName: ApiKeyResponse
      required:
        - id
        - token
        - redacted
        - title
        - type
        - last_used_at
        - created_by
        - created_at
        - revoked_by
        - revoked_at
      properties:
        id:
          type: string
          title: id
          description: The API key's ID.
        token:
          type: string
          title: token
          description: The API key's token.
        redacted:
          type: string
          title: redacted
          description: The redacted form of the API key's token. This is useful when showing portion of the token. For example `sk_...123`.
        title:
          type: string
          title: title
          description: The API key's title.
        type:
          type: string
          description: The API key's type. `secret` API keys are used for authenticating admin users, and `publishable` API key are used for storefronts and similar clients to scope requests to sales channels.
          enum:
            - secret
            - publishable
        last_used_at:
          type: string
          title: last_used_at
          description: The date the API key was last used.
          format: date-time
        created_by:
          type: string
          title: created_by
          description: The ID of the user that created the API key.
        created_at:
          type: string
          title: created_at
          description: The date the API key was created.
          format: date-time
        revoked_by:
          type: string
          title: revoked_by
          description: The ID of the user that revoked the API key.
        revoked_at:
          type: string
          title: revoked_at
          description: The date the API key was revoked.
          format: date-time
    AuthAdminSessionResponse:
      type: object
      description: The authenticated user's details.
      x-schemaName: AuthAdminSessionResponse
      required:
        - user
      properties:
        user:
          title: user
          description: The logged-in user.
          $ref: '#/components/schemas/AdminUser'
    AuthCallbackResponse:
      type: object
      description: The authentication's details.
      x-schemaName: AuthCallbackResponse
      required:
        - location
      properties:
        location:
          type: string
          title: location
          description: The location to redirect the user to for further authentication with the third-party provider.
    AuthResponse:
      type: object
      description: The authentication's details.
      x-schemaName: AuthResponse
      required:
        - token
      properties:
        token:
          type: string
          title: token
          description: The JWT token used for registration or authentication.
    AuthStoreSessionResponse:
      type: object
      description: The authenticated customer's details.
      x-schemaName: AuthStoreSessionResponse
      required:
        - user
      properties:
        user:
          title: user
          description: The logged-in customer.
          $ref: '#/components/schemas/StoreCustomer'
    BaseCalculatedPriceSet:
      type: object
      description: The calculated price's details.
      x-schemaName: BaseCalculatedPriceSet
      required:
        - id
        - calculated_amount
        - original_amount
        - original_amount_with_tax
        - original_amount_without_tax
        - currency_code
      properties:
        id:
          type: string
          title: id
          description: The calculated price's ID.
        is_calculated_price_price_list:
          type: boolean
          title: is_calculated_price_price_list
          description: Whether the calculated price belongs to a price list.
        is_calculated_price_tax_inclusive:
          type: boolean
          title: is_calculated_price_tax_inclusive
          description: Whether the calculated price is tax inclusive.
        calculated_amount:
          type: number
          title: calculated_amount
          description: The amount of the calculated price, or `null` if there isn't a calculated price. This is the amount shown to the customer.
        calculated_amount_with_tax:
          type: number
          title: calculated_amount_with_tax
          description: The calculated price's amount with taxes applied.
        calculated_amount_without_tax:
          type: number
          title: calculated_amount_without_tax
          description: The calculated price's amount without taxes applied.
        is_original_price_price_list:
          type: boolean
          title: is_original_price_price_list
          description: Whether the original price belongs to a price list.
        is_original_price_tax_inclusive:
          type: boolean
          title: is_original_price_tax_inclusive
          description: Whether the original price is tax inclusive.
        original_amount:
          type: number
          title: original_amount
          description: The amount of the original price, or `null` if there isn't an original price. This amount is useful to compare with the `calculated_amount`, such as to check for discounted value.
        currency_code:
          type: string
          title: currency_code
          description: The calculated price's currency code.
          example: usd
        calculated_price:
          type: object
          description: The calculated price's details.
        original_price:
          type: object
          description: The original price's details.
        original_amount_with_tax:
          type: number
          title: original_amount_with_tax
          description: The amount of the original price with taxes applied.
        original_amount_without_tax:
          type: number
          title: original_amount_without_tax
          description: The amount of the original price without taxes.
    BaseCapture:
      type: object
      description: The details of a captured payment.
      x-schemaName: BaseCapture
      required:
        - id
        - amount
        - created_at
        - payment
      properties:
        id:
          type: string
          title: id
          description: The payment capture's ID.
        amount:
          type: number
          title: amount
          description: The captured amount.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the capture was created.
        created_by:
          type: string
          title: created_by
          description: The ID of the user that captured the payment.
        payment:
          type: object
    BaseCart:
      type: object
      description: The item's cart.
      x-schemaName: BaseCart
      required:
        - id
        - currency_code
        - original_item_total
        - original_item_subtotal
        - original_item_tax_total
        - item_total
        - item_subtotal
        - item_tax_total
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - gift_card_total
        - gift_card_tax_total
        - shipping_total
        - shipping_subtotal
        - shipping_tax_total
        - original_shipping_total
        - original_shipping_subtotal
        - original_shipping_tax_total
      properties:
        id:
          type: string
          title: id
          description: The cart's ID.
        region:
          $ref: '#/components/schemas/BaseRegion'
        region_id:
          type: string
          title: region_id
          description: The cart's region id.
        customer_id:
          type: string
          title: customer_id
          description: The cart's customer id.
        sales_channel_id:
          type: string
          title: sales_channel_id
          description: The cart's sales channel id.
        email:
          type: string
          title: email
          description: The cart's email.
          format: email
        currency_code:
          type: string
          title: currency_code
          description: The cart's currency code.
        shipping_address:
          $ref: '#/components/schemas/BaseCartAddress'
        billing_address:
          $ref: '#/components/schemas/BaseCartAddress'
        items:
          type: array
          description: The cart's items.
          items:
            type: object
        shipping_methods:
          type: array
          description: The cart's shipping methods.
          items:
            $ref: '#/components/schemas/BaseCartShippingMethod'
        payment_collection:
          $ref: '#/components/schemas/BasePaymentCollection'
        metadata:
          type: object
          description: The cart's metadata.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The cart's created at.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The cart's updated at.
        original_item_total:
          type: number
          title: original_item_total
          description: The sum of all line items' original totals before discounts, including taxes.
        original_item_subtotal:
          type: number
          title: original_item_subtotal
          description: The sum of all line items' original subtotals before discounts, excluding taxes.
        original_item_tax_total:
          type: number
          title: original_item_tax_total
          description: The sum of all line items' original tax totals before discounts.
        item_total:
          type: number
          title: item_total
          description: The sum of all line items' totals after discounts, including taxes.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The sum of all line items' subtotals before discounts, excluding taxes.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The sum of all line items' tax totals after discounts.
        original_total:
          type: number
          title: original_total
          description: The cart's total before discounts, including taxes. Calculated as the sum of `original_item_total` and `original_shipping_total`.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The cart's subtotal before discounts, excluding taxes. Calculated as the sum of `original_item_subtotal` and `original_shipping_subtotal`.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The cart's tax total before discounts. Calculated as the sum of `original_item_tax_total` and `original_shipping_tax_total`.
        total:
          type: number
          title: total
          description: The cart's final total after discounts and credit lines, including taxes.
        subtotal:
          type: number
          title: subtotal
          description: The cart's subtotal before discounts, excluding taxes. Calculated as the sum of `item_subtotal` and `shipping_subtotal`.
        tax_total:
          type: number
          title: tax_total
          description: The cart's tax total after discounts. Calculated as the sum of `item_tax_total` and `shipping_tax_total`.
        discount_total:
          type: number
          title: discount_total
          description: The total amount of discounts applied to the cart, including the tax portion of discounts.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The total amount of discounts applied to the cart's tax. Represents the tax portion of discounts.
        gift_card_total:
          type: number
          title: gift_card_total
          description: The cart's gift card total.
        gift_card_tax_total:
          type: number
          title: gift_card_tax_total
          description: The cart's gift card tax total.
        shipping_total:
          type: number
          title: shipping_total
          description: The sum of all shipping methods' totals after discounts, including taxes.
        shipping_subtotal:
          type: number
          title: shipping_subtotal
          description: The sum of all shipping methods' subtotals before discounts, excluding taxes.
        shipping_tax_total:
          type: number
          title: shipping_tax_total
          description: The sum of all shipping methods' tax totals after discounts.
        original_shipping_total:
          type: number
          title: original_shipping_total
          description: The sum of all shipping methods' original totals before discounts, including taxes.
        original_shipping_subtotal:
          type: number
          title: original_shipping_subtotal
          description: The sum of all shipping methods' original subtotals before discounts, excluding taxes.
        original_shipping_tax_total:
          type: number
          title: original_shipping_tax_total
          description: The sum of all shipping methods' original tax totals before discounts.
    BaseCartAddress:
      type: object
      description: The cart's shipping address.
      x-schemaName: BaseCartAddress
    BaseCartLineItem:
      type: object
      description: The tax line's item.
      x-schemaName: BaseCartLineItem
      required:
        - id
        - title
        - quantity
        - requires_shipping
        - is_discountable
        - is_tax_inclusive
        - unit_price
        - cart
        - cart_id
      properties:
        id:
          type: string
          title: id
          description: The item's ID.
        title:
          type: string
          title: title
          description: The item's title.
        subtitle:
          type: string
          title: subtitle
          description: The item's subtitle.
        thumbnail:
          type: string
          title: thumbnail
          description: The item's thumbnail.
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        product:
          $ref: '#/components/schemas/BaseProduct'
        product_id:
          type: string
          title: product_id
          description: The item's product id.
        product_title:
          type: string
          title: product_title
          description: The item's product title.
        product_description:
          type: string
          title: product_description
          description: The item's product description.
        product_subtitle:
          type: string
          title: product_subtitle
          description: The item's product subtitle.
        product_type:
          type: string
          title: product_type
          description: The item's product type.
        product_collection:
          type: string
          title: product_collection
          description: The item's product collection.
        product_handle:
          type: string
          title: product_handle
          description: The item's product handle.
        variant:
          $ref: '#/components/schemas/BaseProductVariant'
        variant_id:
          type: string
          title: variant_id
          description: The item's variant id.
        variant_sku:
          type: string
          title: variant_sku
          description: The item's variant sku.
        variant_barcode:
          type: string
          title: variant_barcode
          description: The item's variant barcode.
        variant_title:
          type: string
          title: variant_title
          description: The item's variant title.
        variant_option_values:
          type: object
          description: The item's variant option values.
        requires_shipping:
          type: boolean
          title: requires_shipping
          description: The item's requires shipping.
        is_discountable:
          type: boolean
          title: is_discountable
          description: The item's is discountable.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: The item's is tax inclusive.
        compare_at_unit_price:
          type: number
          title: compare_at_unit_price
          description: The item's compare at unit price.
        unit_price:
          type: number
          title: unit_price
          description: The item's unit price.
        tax_lines:
          type: array
          description: The item's tax lines.
          items:
            type: object
        adjustments:
          type: array
          description: The item's adjustments.
          items:
            $ref: '#/components/schemas/BaseLineItemAdjustment'
        cart:
          $ref: '#/components/schemas/BaseCart'
        cart_id:
          type: string
          title: cart_id
          description: The item's cart id.
        metadata:
          type: object
          description: The item's metadata.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The item's created at.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The item's updated at.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The item's deleted at.
        original_total:
          type: number
          title: original_total
          description: The line item's original total before discounts, including taxes.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The line item's original subtotal before discounts, excluding taxes.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The line item's original tax total before discounts.
        item_total:
          type: number
          title: item_total
          description: The line item's total after discounts, including taxes.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The line item's subtotal before discounts, excluding taxes.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The line item's tax total after discounts.
        total:
          type: number
          title: total
          description: The line item's total after discounts, including taxes.
        subtotal:
          type: number
          title: subtotal
          description: The line item's subtotal before discounts, excluding taxes.
        tax_total:
          type: number
          title: tax_total
          description: The line item's tax total after discounts.
        discount_total:
          type: number
          title: discount_total
          description: The total amount of discounts applied to the line item, including the tax portion of discounts.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The total amount of discounts applied to the line item's tax. Represents the tax portion of discounts.
    BaseCartShippingMethod:
      type: object
      description: A cart's shipping method.
      x-schemaName: BaseCartShippingMethod
      required:
        - id
        - cart_id
        - name
        - amount
        - is_tax_inclusive
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The shipping method's ID.
        cart_id:
          type: string
          title: cart_id
          description: The ID of the cart this shipping method belongs to.
        name:
          type: string
          title: name
          description: The shipping method's name.
        description:
          type: string
          title: description
          description: The shipping method's description.
        amount:
          type: number
          title: amount
          description: The shipping method's amount.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the shipping method's amount is tax inclusive.
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the shipping option this method was created from.
        data:
          type: object
          description: The shipping method's data, useful for fulfillment handling by third-party services.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/cart/concepts#data-property
        metadata:
          type: object
          description: The shipping method's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        tax_lines:
          type: array
          description: The shipping method's tax lines.
          items:
            $ref: '#/components/schemas/BaseShippingMethodTaxLine'
        adjustments:
          type: array
          description: The shipping method's adjustments, such as applied promotions.
          items:
            $ref: '#/components/schemas/BaseShippingMethodAdjustment'
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the shipping method was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the shipping method was updated.
        original_total:
          type: number
          title: original_total
          description: The shipping method's original total before discounts, including taxes.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The shipping method's original subtotal before discounts, excluding taxes.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The shipping method's original tax total before discounts.
        total:
          type: number
          title: total
          description: The shipping method's total after discounts, including taxes.
        subtotal:
          type: number
          title: subtotal
          description: The shipping method's subtotal before discounts, excluding taxes.
        tax_total:
          type: number
          title: tax_total
          description: The shipping method's tax total after discounts.
        discount_total:
          type: number
          title: discount_total
          description: The total amount of discounts applied to the shipping method, including the tax portion of discounts.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The total amount of discounts applied to the shipping method's tax. Represents the tax portion of discounts.
    BaseClaimItem:
      type: object
      description: The claim item's details.
      x-schemaName: BaseClaimItem
      required:
        - id
        - claim_id
        - order_id
        - item_id
        - quantity
        - reason
        - raw_quantity
      properties:
        id:
          type: string
          title: id
          description: The claim item's ID.
        claim_id:
          type: string
          title: claim_id
          description: The ID of the claim this item belongs to.
        order_id:
          type: string
          title: order_id
          description: The ID of the order this item belongs to.
        item_id:
          type: string
          title: item_id
          description: The ID of the item in the order.
        quantity:
          type: number
          title: quantity
          description: The quantity claimed.
        reason:
          type: string
          description: The claim's reason.
          enum:
            - missing_item
            - wrong_item
            - production_failure
            - other
        raw_quantity:
          type: object
          description: The quantity claimed.
          properties:
            value:
              oneOf:
                - type: string
                  title: value
                  description: The raw quantity's value.
                - type: number
                  title: value
                  description: The raw quantity's value.
          required:
            - value
        metadata:
          type: object
          description: The item's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the claim was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the claim was updated.
    BaseCollection:
      type: object
      description: The product collection's details.
      x-schemaName: BaseCollection
      required:
        - id
        - title
        - handle
        - created_at
        - updated_at
        - deleted_at
        - metadata
      properties:
        id:
          type: string
          title: id
          description: The collection's ID.
        title:
          type: string
          title: title
          description: The collection's title.
        handle:
          type: string
          title: handle
          description: The collection's handle.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The collection's creation date.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The collection's update date.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The collection's deletion date.
        products:
          type: array
          description: The collection's products.
          items:
            type: object
        metadata:
          type: object
          description: The collection's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
    BaseExchangeItem:
      type: object
      description: The item's details.
      x-schemaName: BaseExchangeItem
      required:
        - id
        - exchange_id
        - order_id
        - item_id
        - quantity
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The item's ID.
        exchange_id:
          type: string
          title: exchange_id
          description: The ID of the exchange this item belongs to.
        order_id:
          type: string
          title: order_id
          description: The ID of the order this item belongs to.
        item_id:
          type: string
          title: item_id
          description: The ID of the item in the order.
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        metadata:
          type: object
          description: The item's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the item was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the item was updated.
    BaseFulfillmentProvider:
      type: object
      description: The fulfillment provider's details.
      x-schemaName: BaseFulfillmentProvider
      required:
        - id
        - is_enabled
      properties:
        id:
          type: string
          title: id
          description: The provider's ID.
        is_enabled:
          type: boolean
          title: is_enabled
          description: Whether the provider is enabled.
    BaseLineItemAdjustment:
      type: object
      description: The adjustment's details.
      x-schemaName: BaseLineItemAdjustment
      required:
        - item
        - item_id
        - id
        - amount
        - cart_id
        - created_at
        - updated_at
      properties:
        item:
          type: object
        item_id:
          type: string
          title: item_id
          description: The ID of the item this adjustment applies on.
        id:
          type: string
          title: id
          description: The adjustment's ID.
        code:
          type: string
          title: code
          description: The adjustment's code.
        amount:
          type: number
          title: amount
          description: The adjustment's amount.
        cart_id:
          type: string
          title: cart_id
          description: The ID of the cart this adjustment belongs to.
        description:
          type: string
          title: description
          description: The adjustment's description.
        promotion_id:
          type: string
          title: promotion_id
          description: The ID of the promotion applied by this adjustment.
        provider_id:
          type: string
          title: provider_id
          description: The adjustment's provider ID.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the adjustment was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the adjustment was updated.
    BaseLineItemTaxLine:
      type: object
      description: The tax line's details
      x-schemaName: BaseLineItemTaxLine
      required:
        - item
        - item_id
        - total
        - subtotal
        - id
        - code
        - rate
        - created_at
        - updated_at
      properties:
        item:
          $ref: '#/components/schemas/BaseCartLineItem'
        item_id:
          type: string
          title: item_id
          description: The ID of the item the tax line applies on.
        total:
          type: number
          title: total
          description: The item's total, including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The item's subtotal excluding taxes, including promotions.
        id:
          type: string
          title: id
          description: The tax line's ID.
        description:
          type: string
          title: description
          description: The tax line's description.
        tax_rate_id:
          type: string
          title: tax_rate_id
          description: The ID of the associated tax rate.
        code:
          type: string
          title: code
          description: The code the tax rate is identified by.
        rate:
          type: number
          title: rate
          description: The rate to charge.
        provider_id:
          type: string
          title: provider_id
          description: The ID of the tax provider.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the tax line was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the tax line was updated.
    BaseOrder:
      type: object
      description: The order's details.
      x-schemaName: BaseOrder
      required:
        - id
        - version
        - region_id
        - customer_id
        - sales_channel_id
        - email
        - currency_code
        - status
        - items
        - shipping_methods
        - payment_status
        - fulfillment_status
        - summary
        - created_at
        - updated_at
        - original_item_total
        - original_item_subtotal
        - original_item_tax_total
        - item_total
        - item_subtotal
        - item_tax_total
        - item_discount_total
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - gift_card_total
        - gift_card_tax_total
        - shipping_total
        - shipping_subtotal
        - shipping_tax_total
        - shipping_discount_total
        - original_shipping_total
        - original_shipping_subtotal
        - original_shipping_tax_total
        - credit_line_total
      properties:
        payment_collections:
          type: array
          description: The order's payment collections.
          items:
            $ref: '#/components/schemas/BasePaymentCollection'
        fulfillments:
          type: array
          description: The order's fulfillments.
          items:
            $ref: '#/components/schemas/BaseOrderFulfillment'
        shipping_address:
          $ref: '#/components/schemas/BaseOrderAddress'
        billing_address:
          $ref: '#/components/schemas/BaseOrderAddress'
        id:
          type: string
          title: id
          description: The order's ID.
        version:
          type: number
          title: version
          description: The order's version.
        region_id:
          type: string
          title: region_id
          description: The ID of the region associated with the order.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that placed the order.
        sales_channel_id:
          type: string
          title: sales_channel_id
          description: The ID of the sales channel the order is placed in.
        email:
          type: string
          title: email
          description: The email of the customer that placed the order.
          format: email
        currency_code:
          type: string
          title: currency_code
          description: The order's currency code.
        display_id:
          type: number
          title: display_id
          description: The order's display ID.
        items:
          type: array
          description: The order's items.
          items:
            $ref: '#/components/schemas/BaseOrderLineItem'
        shipping_methods:
          type: array
          description: The order's shipping methods.
          items:
            $ref: '#/components/schemas/BaseOrderShippingMethod'
        payment_status:
          type: string
          description: The order's payment status.
          enum:
            - canceled
            - not_paid
            - awaiting
            - authorized
            - partially_authorized
            - captured
            - partially_captured
            - partially_refunded
            - refunded
            - requires_action
        fulfillment_status:
          type: string
          description: The order's fulfillment status.
          enum:
            - canceled
            - not_fulfilled
            - partially_fulfilled
            - fulfilled
            - partially_shipped
            - shipped
            - partially_delivered
            - delivered
        transactions:
          type: array
          description: The order's transactions.
          items:
            $ref: '#/components/schemas/BaseOrderTransaction'
        summary:
          $ref: '#/components/schemas/BaseOrderSummary'
        metadata:
          type: object
          description: The order's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the order was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the order was updated.
        original_item_total:
          type: number
          title: original_item_total
          description: The sum of all line items' original totals before discounts, including taxes.
        original_item_subtotal:
          type: number
          title: original_item_subtotal
          description: The sum of all line items' original subtotals before discounts, excluding taxes.
        original_item_tax_total:
          type: number
          title: original_item_tax_total
          description: The sum of all line items' original tax totals before discounts.
        item_total:
          type: number
          title: item_total
          description: The sum of all line items' totals after discounts, including taxes.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The sum of all line items' subtotals before discounts, excluding taxes.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The sum of all line items' tax totals after discounts.
        original_total:
          type: number
          title: original_total
          description: The order's total before discounts, including taxes. Calculated as the sum of `original_item_total` and `original_shipping_total`.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The order's subtotal before discounts, excluding taxes. Calculated as the sum of `original_item_subtotal` and `original_shipping_subtotal`.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The order's tax total before discounts. Calculated as the sum of `original_item_tax_total` and `original_shipping_tax_total`.
        total:
          type: number
          title: total
          description: The order's final total after discounts and credit lines, including taxes.
        subtotal:
          type: number
          title: subtotal
          description: The order's subtotal before discounts, excluding taxes. Calculated as the sum of `item_subtotal` and `shipping_subtotal`.
        tax_total:
          type: number
          title: tax_total
          description: The order's tax total after discounts. Calculated as the sum of `item_tax_total` and `shipping_tax_total`.
        discount_total:
          type: number
          title: discount_total
          description: The total amount of discounts applied to the order, including the tax portion of discounts.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The total amount of discounts applied to the order's tax. Represents the tax portion of discounts.
        gift_card_total:
          type: number
          title: gift_card_total
          description: The order's gift card total.
        gift_card_tax_total:
          type: number
          title: gift_card_tax_total
          description: The tax total of the order's gift card.
        shipping_total:
          type: number
          title: shipping_total
          description: The sum of all shipping methods' totals after discounts, including taxes.
        shipping_subtotal:
          type: number
          title: shipping_subtotal
          description: The sum of all shipping methods' subtotals before discounts, excluding taxes.
        shipping_tax_total:
          type: number
          title: shipping_tax_total
          description: The sum of all shipping methods' tax totals after discounts.
        original_shipping_total:
          type: number
          title: original_shipping_total
          description: The sum of all shipping methods' original totals before discounts, including taxes.
        original_shipping_subtotal:
          type: number
          title: original_shipping_subtotal
          description: The sum of all shipping methods' original subtotals before discounts, excluding taxes.
        original_shipping_tax_total:
          type: number
          title: original_shipping_tax_total
          description: The sum of all shipping methods' original tax totals before discounts.
        status:
          type: string
          title: status
          description: The order's status.
        credit_line_total:
          type: number
          title: credit_line_total
          description: The total amount of credit lines applied to the order, including taxes. Subtracted from the final total.
        item_discount_total:
          type: number
          title: item_discount_total
          description: The sum of all discounts applied to line items, including the tax portion of discounts.
        shipping_discount_total:
          type: number
          title: shipping_discount_total
          description: The sum of all discounts applied to shipping methods, including the tax portion of discounts.
        custom_display_id:
          type: string
          title: custom_display_id
          description: The custom display ID of the order.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/order/custom-display-id
    BaseOrderAddress:
      type: object
      description: An order address.
      x-schemaName: BaseOrderAddress
      required:
        - id
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The address's ID.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer this address belongs to.
        first_name:
          type: string
          title: first_name
          description: The address's first name.
        last_name:
          type: string
          title: last_name
          description: The address's last name.
        phone:
          type: string
          title: phone
          description: The address's phone.
        company:
          type: string
          title: company
          description: The address's company.
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        city:
          type: string
          title: city
          description: The address's city.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
          example: us
        province:
          type: string
          title: province
          description: The address's lower-case ISO 3166-2 province code.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        metadata:
          type: object
          description: The address's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the address was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the address was updated.
    BaseOrderFulfillment:
      type: object
      description: The fulfillment's details.
      x-schemaName: BaseOrderFulfillment
      required:
        - id
        - location_id
        - packed_at
        - shipped_at
        - delivered_at
        - canceled_at
        - requires_shipping
        - data
        - provider_id
        - shipping_option_id
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The fulfillment's ID.
        location_id:
          type: string
          title: location_id
          description: The ID of the location the items are fulfilled from.
        packed_at:
          type: string
          title: packed_at
          description: The date the items were packed.
          format: date-time
        shipped_at:
          type: string
          title: shipped_at
          description: The date the items were shipped.
          format: date-time
        delivered_at:
          type: string
          title: delivered_at
          description: The date the items were delivered.
          format: date-time
        canceled_at:
          type: string
          title: canceled_at
          description: The date the items were canceled.
          format: date-time
        data:
          type: object
          description: Data useful for the fulfillment provider handling it. This is taken from the associated shipping option.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#data-property
        provider_id:
          type: string
          title: provider_id
          description: The ID of the fulfillment provider used to handle the fulfillment.
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the associated shipping option.
        metadata:
          type: object
          description: The fulfillment's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the fulfillment was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the fulfillment was updated.
        requires_shipping:
          type: boolean
          title: requires_shipping
          description: Whether the fulfillment requires shipping.
    BaseOrderItemDetail:
      type: object
      description: The item's detail.
      x-schemaName: BaseOrderItemDetail
      required:
        - id
        - item_id
        - item
        - quantity
        - fulfilled_quantity
        - delivered_quantity
        - shipped_quantity
        - return_requested_quantity
        - return_received_quantity
        - return_dismissed_quantity
        - written_off_quantity
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: the detail's ID.
        item_id:
          type: string
          title: id
          description: the ID of the associated line item.
        item:
          type: object
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        fulfilled_quantity:
          type: number
          title: fulfilled_quantity
          description: The item's fulfilled quantity.
        delivered_quantity:
          type: number
          title: fulfilled_quantity
          description: The item's delivered quantity.
        shipped_quantity:
          type: number
          title: shipped_quantity
          description: The item's shipped quantity.
        return_requested_quantity:
          type: number
          title: return_requested_quantity
          description: The item's quantity that's requested to be returned.
        return_received_quantity:
          type: number
          title: return_received_quantity
          description: The item's quantity that's returned and added to the underlying variant's stocked quantity.
        return_dismissed_quantity:
          type: number
          title: return_dismissed_quantity
          description: The item's quantity that's returned but damaged. So, it's not added to the underlying variant's stocked quantity.
        written_off_quantity:
          type: number
          title: written_off_quantity
          description: The item's quantity that's removed from the order.
        metadata:
          type: object
          title: metadata
          description: The item's metadata, can hold custom key-value pairs.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the detail was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the detail was updated.
    BaseOrderLineItem:
      type: object
      description: The item's items.
      x-schemaName: BaseOrderLineItem
      required:
        - id
        - title
        - subtitle
        - thumbnail
        - variant_id
        - product_id
        - product_title
        - product_description
        - product_subtitle
        - product_type_id
        - product_type
        - product_collection
        - product_handle
        - variant_sku
        - variant_barcode
        - variant_title
        - variant_option_values
        - requires_shipping
        - is_discountable
        - is_tax_inclusive
        - unit_price
        - quantity
        - detail
        - created_at
        - updated_at
        - metadata
        - original_total
        - original_subtotal
        - original_tax_total
        - item_total
        - item_subtotal
        - item_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - refundable_total
        - refundable_total_per_unit
      properties:
        id:
          type: string
          title: id
          description: The item's ID.
        title:
          type: string
          title: title
          description: The item's title.
        subtitle:
          type: string
          title: subtitle
          description: The item's subtitle.
        thumbnail:
          type: string
          title: thumbnail
          description: The URL of the item's thumbnail.
        variant:
          $ref: '#/components/schemas/BaseProductVariant'
        variant_id:
          type: string
          title: variant_id
          description: The ID of the associated variant.
        product:
          $ref: '#/components/schemas/BaseProduct'
        product_id:
          type: string
          title: product_id
          description: The ID of the associated product.
        product_title:
          type: string
          title: product_title
          description: The item's product title.
        product_description:
          type: string
          title: product_description
          description: The item's product description.
        product_subtitle:
          type: string
          title: product_subtitle
          description: The item's product subtitle.
        product_type:
          type: string
          title: product_type
          description: The item's product type.
        product_collection:
          type: string
          title: product_collection
          description: The ID of the collection the item's product belongs to.
        product_handle:
          type: string
          title: product_handle
          description: The item's product handle.
        variant_sku:
          type: string
          title: variant_sku
          description: The item's variant SKU.
        variant_barcode:
          type: string
          title: variant_barcode
          description: The item's variant barcode.
        variant_title:
          type: string
          title: variant_title
          description: The item's variant title.
        variant_option_values:
          type: object
          description: The values of the item variant's options.
          example:
            Color: Blue
        requires_shipping:
          type: boolean
          title: requires_shipping
          description: Whether the item requires shipping.
        is_discountable:
          type: boolean
          title: is_discountable
          description: Whether the item is discountable.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the item is tax inclusive.
        compare_at_unit_price:
          type: number
          title: compare_at_unit_price
          description: The original price of the item before a promotion or sale.
        unit_price:
          type: number
          title: unit_price
          description: The item's unit price.
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        tax_lines:
          type: array
          description: The item's tax lines.
          items:
            $ref: '#/components/schemas/BaseOrderLineItemTaxLine'
        adjustments:
          type: array
          description: The item's adjustments.
          items:
            $ref: '#/components/schemas/BaseOrderLineItemAdjustment'
        detail:
          $ref: '#/components/schemas/BaseOrderItemDetail'
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the item was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the item was updated.
        metadata:
          type: object
          description: The item's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        original_total:
          type: number
          title: original_total
          description: The line item's original total before discounts, including taxes.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The line item's original subtotal before discounts, excluding taxes.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The line item's original tax total before discounts.
        item_total:
          type: number
          title: item_total
          description: The line item's total after discounts, including taxes.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The line item's subtotal before discounts, excluding taxes.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The line item's tax total after discounts.
        total:
          type: number
          title: total
          description: The line item's total after discounts, including taxes.
        subtotal:
          type: number
          title: subtotal
          description: The line item's subtotal before discounts, excluding taxes.
        tax_total:
          type: number
          title: tax_total
          description: The line item's tax total after discounts.
        discount_total:
          type: number
          title: discount_total
          description: The total amount of discounts applied to the line item, including the tax portion of discounts.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The total amount of discounts applied to the line item's tax. Represents the tax portion of discounts.
        refundable_total:
          type: number
          title: refundable_total
          description: The total refundable amount of the item's total.
        refundable_total_per_unit:
          type: number
          title: refundable_total_per_unit
          description: The total refundable amount of the item's total for a single quantity.
        product_type_id:
          type: string
          title: product_type_id
          description: The ID of the associated product's type.
    BaseOrderLineItemAdjustment:
      type: object
      description: The adjustment's details.
      x-schemaName: BaseOrderLineItemAdjustment
      properties:
        item:
          type: object
        item_id:
          type: string
          title: item_id
          description: The ID of the item this adjustment applies to.
        id:
          type: string
          title: id
          description: The adjustment's ID.
        code:
          type: string
          title: code
          description: The adjustment's code.
        amount:
          type: number
          title: amount
          description: The adjustment's amount.
        order_id:
          type: string
          title: order_id
          description: The ID of the associated order.
        description:
          type: string
          title: description
          description: The adjustment's description.
        promotion_id:
          type: string
          title: promotion_id
          description: The ID of the promotion that this applies on the order's item.
        provider_id:
          type: string
          title: provider_id
          description: The adjustment's provider ID.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the adjustment was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the adjustment was updated.
      required:
        - item
        - item_id
        - id
        - amount
        - order_id
        - created_at
        - updated_at
    BaseOrderLineItemTaxLine:
      type: object
      description: The tax line's tax lines.
      x-schemaName: BaseOrderLineItemTaxLine
      properties:
        item:
          type: object
        item_id:
          type: string
          title: item_id
          description: The ID of the associated line item.
        total:
          type: number
          title: total
          description: The tax line's total including promotions.
        subtotal:
          type: number
          title: subtotal
          description: The tax line's subtotal excluding promotions.
        id:
          type: string
          title: id
          description: The tax line's ID.
        description:
          type: string
          title: description
          description: The tax line's description.
        tax_rate_id:
          type: string
          title: tax_rate_id
          description: The ID of the applied tax rate.
        code:
          type: string
          title: code
          description: The code that the tax rate is identified by.
        rate:
          type: number
          title: rate
          description: The rate to charge.
        provider_id:
          type: string
          title: provider_id
          description: The ID of the tax provider used to calculate the tax line.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the tax line was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the tax line was updated.
      required:
        - item
        - item_id
        - total
        - subtotal
        - id
        - code
        - rate
        - created_at
        - updated_at
    BaseOrderShippingDetail:
      type: object
      description: Details of changes to a shipping method.
      x-schemaName: BaseOrderShippingDetail
      required:
        - id
        - shipping_method_id
        - shipping_method
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The ID of the new changes to the shipping method.
        shipping_method_id:
          type: string
          title: shipping_method_id
          description: The ID of the shipping method.
        shipping_method:
          type: object
        claim_id:
          type: string
          title: claim_id
          description: The ID of the associated claim.
        exchange_id:
          type: string
          title: exchange_id
          description: The ID of the associated exchange.
        return_id:
          type: string
          title: return_id
          description: The ID of the associated return.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the shipping method change was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the shipping method change was updated.
    BaseOrderShippingMethod:
      type: object
      description: The shipping method's details.
      x-schemaName: BaseOrderShippingMethod
      required:
        - id
        - order_id
        - name
        - amount
        - is_tax_inclusive
        - shipping_option_id
        - data
        - metadata
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The shipping method's ID.
        order_id:
          type: string
          title: order_id
          description: The ID of the order the shipping method belongs to.
        name:
          type: string
          title: name
          description: The shipping method's name.
        description:
          type: string
          title: description
          description: The shipping method's description.
        amount:
          type: number
          title: amount
          description: The shipping method's amount.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the shipping method's amount includes applied taxes.
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the shipping option this method was created from.
        data:
          type: object
          description: The shipping method's data, useful for fulfillment provider handling its fulfillment.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#data-property
        metadata:
          type: object
          description: The shipping method's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        tax_lines:
          type: array
          description: The shipping method's tax lines.
          items:
            $ref: '#/components/schemas/BaseOrderShippingMethodTaxLine'
        adjustments:
          type: array
          description: The shipping method's adjustments.
          items:
            $ref: '#/components/schemas/BaseOrderShippingMethodAdjustment'
        original_total:
          type: number
          title: original_total
          description: The shipping method's total including taxes, excluding promotions.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The shipping method's total excluding taxes, including promotions.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The shipping method's total taxes excluding promotions.
        total:
          type: number
          title: total
          description: The shipping method's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The shipping method's total excluding taxes, including promotions.
        tax_total:
          type: number
          title: tax_total
          description: The shipping method's tax total including promotions.
        discount_total:
          type: number
          title: discount_total
          description: The total discounts applied on the shipping method.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The taxes applied on the discount amount.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the shipping method was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the shipping method was updated.
        detail:
          $ref: '#/components/schemas/BaseOrderShippingDetail'
    BaseOrderShippingMethodAdjustment:
      type: object
      description: The adjustment's adjustments.
      x-schemaName: BaseOrderShippingMethodAdjustment
      properties:
        shipping_method:
          type: object
        shipping_method_id:
          type: string
          title: shipping_method_id
          description: The ID of the shipping method this adjustment applies on.
        id:
          type: string
          title: id
          description: The adjustment's ID.
        code:
          type: string
          title: code
          description: The adjustment's code.
        amount:
          type: number
          title: amount
          description: The adjustment's amount.
        order_id:
          type: string
          title: order_id
          description: The ID of the associated order.
        description:
          type: string
          title: description
          description: The adjustment's description.
        promotion_id:
          type: string
          title: promotion_id
          description: The ID of the promotion applied by this adjustment.
        provider_id:
          type: string
          title: provider_id
          description: The adjustment's provider ID.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the adjustment was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the adjustment was updated.
      required:
        - shipping_method
        - shipping_method_id
        - id
        - amount
        - order_id
        - created_at
        - updated_at
    BaseOrderShippingMethodTaxLine:
      type: object
      description: The tax line's details.
      x-schemaName: BaseOrderShippingMethodTaxLine
      properties:
        shipping_method:
          type: object
        shipping_method_id:
          type: string
          title: shipping_method_id
          description: The ID of the shipping method this tax line belongs to.
        total:
          type: number
          title: total
          description: The shipping method's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The shipping method's total excluding taxes, including promotions.
        id:
          type: string
          title: id
          description: The tax line's ID.
        description:
          type: string
          title: description
          description: The tax line's description.
        tax_rate_id:
          type: string
          title: tax_rate_id
          description: The ID of the applied tax rate.
        code:
          type: string
          title: code
          description: The code that the tax rate is identified by.
        rate:
          type: number
          title: rate
          description: The rate to charge.
        provider_id:
          type: string
          title: provider_id
          description: The ID of the tax provider handling the tax calculation.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the tax line was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the tax line was updated.
      required:
        - shipping_method
        - shipping_method_id
        - total
        - subtotal
        - id
        - code
        - rate
        - created_at
        - updated_at
    BaseOrderSummary:
      type: object
      description: The order's summary details.
      x-schemaName: BaseOrderSummary
      required:
        - pending_difference
        - current_order_total
        - original_order_total
        - transaction_total
        - paid_total
        - refunded_total
        - accounting_total
      properties:
        paid_total:
          type: number
          title: paid_total
          description: The total amount paid.
        refunded_total:
          type: number
          title: refunded_total
          description: The total amount refunded.
        pending_difference:
          type: number
          title: pending_difference
          description: The difference pending to be processed. If negative, the customer needs a refund. Otherwise, additional payment is required from the customer.
        current_order_total:
          type: number
          title: current_order_total
          description: The order's current total, could be the total after a change in the order.
        original_order_total:
          type: number
          title: original_order_total
          description: The order's original total.
        transaction_total:
          type: number
          title: transaction_total
          description: The total of the transactions made on the order.
        accounting_total:
          type: number
          title: accounting_total
          description: The order's total without the credit-line total.
    BaseOrderTransaction:
      type: object
      description: An order transaction's details.
      x-schemaName: BaseOrderTransaction
      required:
        - id
        - order_id
        - amount
        - currency_code
        - reference
        - reference_id
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The transaction's ID.
        order_id:
          type: string
          title: order_id
          description: The ID of the order this transaction belongs to.
        amount:
          type: number
          title: amount
          description: The transaction's amount.
        currency_code:
          type: string
          title: currency_code
          description: The transaction's currency code.
          example: usd
        reference:
          type: string
          title: reference
          description: The name of a table that this transaction references. If this transaction is for captured payment, its value is `capture`. If this transaction is for refunded payment, its value is `refund`.
          enum:
            - capture
            - refund
        reference_id:
          type: string
          title: reference_id
          description: The ID of the referenced record in the referenced table.
        metadata:
          type: object
          description: The transaction's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date that the transaction was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date that the transaction was updated.
    BasePayment:
      type: object
      description: The payment's details.
      x-schemaName: BasePayment
      required:
        - id
        - amount
        - currency_code
        - provider_id
      properties:
        id:
          type: string
          title: id
          description: The payment's ID.
        amount:
          type: number
          title: amount
          description: The payment's amount.
        authorized_amount:
          type: number
          title: authorized_amount
          description: The amount authorized of the payment.
        currency_code:
          type: string
          title: currency_code
          description: The payment's currency code.
        provider_id:
          type: string
          title: provider_id
          description: The ID of the payment provider used to process this payment.
        data:
          type: object
          description: The payment's data, useful for processing by the payment provider.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/payment/payment#whats-a-payment
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the payment was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the payment was updated.
        captured_at:
          type: string
          format: date-time
          title: captured_at
          description: The date the payment was captured.
        canceled_at:
          type: string
          format: date-time
          title: canceled_at
          description: The date the payment was canceled.
        captured_amount:
          type: number
          title: captured_amount
          description: The captured amount of the payment.
        refunded_amount:
          type: number
          title: captured_amount
          description: The refunded amount of the payment.
        captures:
          type: array
          description: The details of payment captures.
          items:
            $ref: '#/components/schemas/BaseCapture'
        refunds:
          type: array
          description: The details of payment refunds.
          items:
            $ref: '#/components/schemas/BaseRefund'
        payment_collection:
          type: object
        payment_session:
          type: object
    BasePaymentCollection:
      type: object
      description: The payment collection's details.
      x-schemaName: BasePaymentCollection
      required:
        - id
        - currency_code
        - amount
        - status
        - payment_providers
      properties:
        id:
          type: string
          title: id
          description: The payment collection's ID.
        currency_code:
          type: string
          title: currency_code
          description: The payment collection's currency code.
        amount:
          type: number
          title: amount
          description: The total amount to be paid.
        authorized_amount:
          type: number
          title: authorized_amount
          description: The total authorized amount of the collection's payments.
        captured_amount:
          type: number
          title: captured_amount
          description: The total captured amount of the collection's payments.
        refunded_amount:
          type: number
          title: refunded_amount
          description: The total refunded amount of the collection's payments.
        completed_at:
          type: string
          format: date-time
          title: completed_at
          description: The date the payment collection was completed.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the payment collection was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the payment collection was updated.
        metadata:
          type: object
          description: The payment collection's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        status:
          type: string
          description: The payment collection's status.
          enum:
            - canceled
            - not_paid
            - awaiting
            - authorized
            - partially_authorized
            - completed
            - failed
        payment_providers:
          type: array
          description: The payment provider used to process the collection's payments and sessions.
          items:
            $ref: '#/components/schemas/BasePaymentProvider'
        payment_sessions:
          type: array
          description: The payment collection's payment sessions.
          items:
            $ref: '#/components/schemas/BasePaymentSession'
        payments:
          type: array
          description: The payment collection's payments.
          items:
            $ref: '#/components/schemas/BasePayment'
    BasePaymentProvider:
      type: object
      description: The payment provider's details.
      x-schemaName: BasePaymentProvider
      required:
        - id
      properties:
        id:
          type: string
          title: id
          description: The payment provider's ID.
    BasePaymentSession:
      type: object
      description: The payment session's details.
      x-schemaName: BasePaymentSession
      required:
        - id
        - amount
        - currency_code
        - provider_id
        - data
        - status
      properties:
        id:
          type: string
          title: id
          description: The payment session's ID.
        amount:
          type: number
          title: amount
          description: The payment session's amount.
        currency_code:
          type: string
          title: currency_code
          description: The payment session's currency code.
          example: usd
        provider_id:
          type: string
          title: provider_id
          description: The ID of the payment provider processing this session.
        data:
          type: object
          description: The payment session's data, useful for the payment provider processing the payment.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/payment/payment-session#data-property
        context:
          type: object
          description: The context around the payment, such as the customer's details.
          example:
            customer:
              id: cus_123
        status:
          type: string
          description: The payment session's status.
          enum:
            - error
            - authorized
            - canceled
            - captured
            - pending
            - requires_more
        authorized_at:
          type: string
          title: authorized_at
          description: The date the payment session was authorized.
          format: date-time
        payment_collection:
          type: object
        payment:
          $ref: '#/components/schemas/BasePayment'
    BaseProduct:
      type: object
      description: The product's details.
      x-schemaName: BaseProduct
      required:
        - id
        - title
        - handle
        - subtitle
        - description
        - is_giftcard
        - status
        - thumbnail
        - width
        - weight
        - length
        - height
        - origin_country
        - hs_code
        - mid_code
        - material
        - collection_id
        - type_id
        - variants
        - options
        - images
        - discountable
        - external_id
        - created_at
        - updated_at
        - deleted_at
      properties:
        collection:
          $ref: '#/components/schemas/BaseCollection'
        categories:
          type: array
          description: The product's categories.
          items:
            $ref: '#/components/schemas/BaseProductCategory'
        variants:
          type: array
          description: The product's variants.
          items:
            type: object
        type:
          $ref: '#/components/schemas/BaseProductType'
        tags:
          type: array
          description: The product's tags.
          items:
            $ref: '#/components/schemas/BaseProductTag'
        length:
          type: number
          title: length
          description: The product's length.
        title:
          type: string
          title: title
          description: The product's title.
        status:
          type: string
          description: The product's status.
          enum:
            - draft
            - proposed
            - published
            - rejected
        options:
          type: array
          description: The product's options.
          items:
            $ref: '#/components/schemas/BaseProductOption'
        description:
          type: string
          title: description
          description: The product's description.
        id:
          type: string
          title: id
          description: The product's ID.
        metadata:
          type: object
          description: The product's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the product was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the product was updated.
        handle:
          type: string
          title: handle
          description: The product's unique handle.
        subtitle:
          type: string
          title: subtitle
          description: The product's subtitle.
        is_giftcard:
          type: boolean
          title: is_giftcard
          description: Whether the product is a gift card.
        thumbnail:
          type: string
          title: thumbnail
          description: The product's thumbnail.
        width:
          type: number
          title: width
          description: The product's width.
        weight:
          type: number
          title: weight
          description: The product's weight.
        height:
          type: number
          title: height
          description: The product's height.
        origin_country:
          type: string
          title: origin_country
          description: The product's origin country.
        hs_code:
          type: string
          title: hs_code
          description: The product's HS code.
        mid_code:
          type: string
          title: mid_code
          description: The product's MID code.
        material:
          type: string
          title: material
          description: The product's material.
        collection_id:
          type: string
          title: collection_id
          description: The ID of the collection that the product belongs to.
        type_id:
          type: string
          title: type_id
          description: The ID of the product's type.
        images:
          type: array
          description: The product's images.
          items:
            $ref: '#/components/schemas/BaseProductImage'
        discountable:
          type: boolean
          title: discountable
          description: Whether discounts can be applied on the product.
        external_id:
          type: string
          title: external_id
          description: The ID of a product in an external system, such as an ERP or CMS.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the product was deleted.
    BaseProductCategory:
      type: object
      description: The product category's details.
      x-schemaName: BaseProductCategory
      required:
        - id
        - name
        - description
        - handle
        - is_active
        - is_internal
        - rank
        - parent_category_id
        - parent_category
        - category_children
        - created_at
        - updated_at
        - deleted_at
      properties:
        category_children:
          type: array
          description: The category's children.
          items:
            $ref: '#/components/schemas/AdminProductCategory'
        parent_category:
          $ref: '#/components/schemas/AdminProductCategory'
        products:
          type: array
          description: The category's products.
          items:
            type: object
        name:
          type: string
          title: name
          description: The category's name.
        description:
          type: string
          title: description
          description: The category's description.
        id:
          type: string
          title: id
          description: The category's ID.
        metadata:
          type: object
          description: The category's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the category was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the category was updated.
        handle:
          type: string
          title: handle
          description: The category's unique handle.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the category was deleted.
        is_active:
          type: boolean
          title: is_active
          description: Whether the category is active. If disabled, the category isn't shown in the storefront.
        is_internal:
          type: boolean
          title: is_internal
          description: Whether the category is internal. If enabled, the category is only seen by admin users.
        rank:
          type: number
          title: rank
          description: The category's rank among sibling categories.
        parent_category_id:
          type: string
          title: parent_category_id
          description: The ID of the category's parent.
    BaseProductImage:
      type: object
      description: The image's details.
      x-schemaName: BaseProductImage
      properties:
        id:
          type: string
          title: id
          description: The image's ID.
        url:
          type: string
          title: url
          description: The image's URL.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the image was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the image was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the image was deleted.
        metadata:
          type: object
          description: The image's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/admin#manage-metadata
            description: Learn how to manage metadata
        rank:
          type: number
          title: rank
          description: The image's rank among its sibling images.
      required:
        - id
        - url
        - rank
    BaseProductOption:
      type: object
      description: The product option's details.
      x-schemaName: BaseProductOption
      required:
        - id
        - title
      properties:
        id:
          type: string
          title: id
          description: The product option's ID.
        title:
          type: string
          title: title
          description: The product option's title.
        product:
          type: object
        product_id:
          type: string
          title: product_id
          description: The ID of the product this option belongs to.
        values:
          type: array
          description: The product option's values.
          items:
            $ref: '#/components/schemas/BaseProductOptionValue'
        metadata:
          type: object
          description: The product option's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the product option was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the product option was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the product option was deleted.
    BaseProductOptionValue:
      type: object
      description: The product option value's details.
      x-schemaName: BaseProductOptionValue
      required:
        - id
        - value
      properties:
        id:
          type: string
          title: id
          description: The value's ID.
        value:
          type: string
          title: value
          description: The value.
        option:
          type: object
        option_id:
          type: string
          title: option_id
          description: The ID of the option this value belongs to.
        metadata:
          type: object
          description: The value's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the value was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the value was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the value was deleted.
    BaseProductTag:
      type: object
      description: The product tag's details.
      x-schemaName: BaseProductTag
      required:
        - id
        - value
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The tag's ID.
        value:
          type: string
          title: value
          description: The tag's value.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the tag was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the tag was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the tag was deleted.
        metadata:
          type: object
          description: The tag's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
    BaseProductType:
      type: object
      description: The product type's details.
      x-schemaName: BaseProductType
      required:
        - id
        - value
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The type's ID.
        value:
          type: string
          title: value
          description: The type's value.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the type was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the type was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the type was deleted.
        metadata:
          type: object
          description: The type's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
    BaseProductVariant:
      type: object
      description: The product variant's details.
      x-schemaName: BaseProductVariant
      required:
        - id
        - title
        - sku
        - barcode
        - ean
        - upc
        - thumbnail
        - images
        - allow_backorder
        - manage_inventory
        - hs_code
        - origin_country
        - mid_code
        - material
        - weight
        - length
        - height
        - width
        - options
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The variant's ID.
        title:
          type: string
          title: title
          description: The variant's title.
        sku:
          type: string
          title: sku
          description: The variant's SKU.
        barcode:
          type: string
          title: barcode
          description: The variant's barcode.
        ean:
          type: string
          title: ean
          description: The variant's EAN code.
        upc:
          type: string
          title: upc
          description: The variant's UPC.
        allow_backorder:
          type: boolean
          title: allow_backorder
          description: Whether the variant can be ordered even if it's out of stock.
        manage_inventory:
          type: boolean
          title: manage_inventory
          description: Whether the Medusa application manages the variant's inventory quantity and availablility. If disabled, the variant is always considered in stock.
        inventory_quantity:
          type: number
          title: inventory_quantity
          description: The variant's inventory quantity. This is only included if you pass in the `fields` query parameter a `+variants.inventory_quantity` parameter.
        hs_code:
          type: string
          title: hs_code
          description: The variant's HS code.
        origin_country:
          type: string
          title: origin_country
          description: The variant's origin country.
        mid_code:
          type: string
          title: mid_code
          description: The variant's MID code.
        material:
          type: string
          title: material
          description: The variant's material.
        weight:
          type: number
          title: weight
          description: The variant's weight.
        length:
          type: number
          title: length
          description: The variant's length.
        height:
          type: number
          title: height
          description: The variant's height.
        width:
          type: number
          title: width
          description: The variant's width.
        variant_rank:
          type: number
          title: variant_rank
          description: The variant's rank among its sibling variants.
        options:
          type: array
          description: The variant's option values.
          items:
            $ref: '#/components/schemas/BaseProductOptionValue'
        product:
          $ref: '#/components/schemas/BaseProduct'
        product_id:
          type: string
          title: product_id
          description: The ID of the product that the variant belongs to.
        calculated_price:
          $ref: '#/components/schemas/BaseCalculatedPriceSet'
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the variant was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the variant was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the variant was deleted.
        metadata:
          type: object
          description: The variant's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        thumbnail:
          type: string
          title: thumbnail
          description: The variant's thumbnail.
        images:
          type: array
          description: The variant's images.
          items:
            $ref: '#/components/schemas/BaseProductImage'
    BasePromotionRuleValue:
      type: object
      description: The rule value's details.
      x-schemaName: BasePromotionRuleValue
      required:
        - id
      properties:
        id:
          type: string
          title: id
          description: The value's ID.
        value:
          type: string
          title: value
          description: The value.
    BaseRefund:
      type: object
      description: The refund's details.
      x-schemaName: BaseRefund
      required:
        - id
        - amount
        - created_at
        - payment
      properties:
        id:
          type: string
          title: id
          description: The refund's ID.
        amount:
          type: number
          title: amount
          description: The refund's amount.
        refund_reason_id:
          type: string
          title: refund_reason_id
          description: The ID of the refund reason.
        note:
          type: string
          title: note
          description: More details about the refund.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the refund was created.
        created_by:
          type: string
          title: created_by
          description: The ID of the user that created the refund.
        payment:
          type: object
        refund_reason:
          $ref: '#/components/schemas/BaseRefundReason'
    BaseRefundReason:
      type: object
      description: The refund reason's details.
      x-schemaName: BaseRefundReason
      required:
        - id
        - label
        - code
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The refund reason's ID.
        label:
          type: string
          title: label
          description: The refund reason's label.
        description:
          type: string
          title: description
          description: The refund reason's description.
        metadata:
          type: object
          description: The refund reason's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the refund reason was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the refund reason was updated.
        code:
          type: string
          title: code
          description: The refund reason's code.
    BaseRegion:
      type: object
      description: The region's details.
      x-schemaName: BaseRegion
      required:
        - id
        - name
        - currency_code
      properties:
        id:
          type: string
          title: id
          description: The region's ID.
        name:
          type: string
          title: name
          description: The region's name.
        currency_code:
          type: string
          title: currency_code
          description: The region's currency code.
        automatic_taxes:
          type: boolean
          title: automatic_taxes
          description: The region's automatic taxes.
        countries:
          type: array
          description: The region's countries.
          items:
            $ref: '#/components/schemas/BaseRegionCountry'
        payment_providers:
          type: array
          description: The region's payment providers.
          items:
            $ref: '#/components/schemas/AdminPaymentProvider'
        metadata:
          type: object
          description: The region's metadata.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The region's created at.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The region's updated at.
    BaseRegionCountry:
      type: object
      description: The country's details.
      x-schemaName: BaseRegionCountry
      properties:
        id:
          type: string
          title: id
          description: The country's ID.
        iso_2:
          type: string
          title: iso_2
          description: The country's iso 2.
          example: us
        iso_3:
          type: string
          title: iso_3
          description: The country's iso 3.
          example: usa
        num_code:
          type: string
          title: num_code
          description: The country's num code.
          example: 840
        name:
          type: string
          title: name
          description: The country's name.
        display_name:
          type: string
          title: display_name
          description: The country's display name.
      required:
        - id
    BaseRuleOperatorOptions:
      type: object
      description: The operator's details.
      x-schemaName: BaseRuleOperatorOptions
      required:
        - id
        - value
        - label
      properties:
        id:
          type: string
          title: id
          description: The operator's ID.
          example: in
        value:
          type: string
          title: value
          description: The operator's value.
          example: in
        label:
          type: string
          title: label
          description: The operator's label.
          example: In
    BaseShippingMethodAdjustment:
      type: object
      description: The adjustment's details.
      x-schemaName: BaseShippingMethodAdjustment
      required:
        - shipping_method
        - shipping_method_id
        - id
        - amount
        - cart_id
        - created_at
        - updated_at
      properties:
        shipping_method:
          type: object
        shipping_method_id:
          type: string
          title: shipping_method_id
          description: The ID of the shipping method the adjustment is applied on.
        id:
          type: string
          title: id
          description: The adjustment's ID.
        code:
          type: string
          title: code
          description: The adjustment's code.
        amount:
          type: number
          title: amount
          description: The adjustment's amount.
        cart_id:
          type: string
          title: cart_id
          description: The ID of the associated cart.
        description:
          type: string
          title: description
          description: The adjustment's description.
        promotion_id:
          type: string
          title: promotion_id
          description: The ID of the promotion applied by this adjustment.
        provider_id:
          type: string
          title: provider_id
          description: The adjustment's provider ID.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the adjustment was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the adjustment was updated.
    BaseShippingMethodTaxLine:
      type: object
      description: The tax line's details.
      x-schemaName: BaseShippingMethodTaxLine
      required:
        - shipping_method
        - shipping_method_id
        - total
        - subtotal
        - id
        - code
        - rate
        - created_at
        - updated_at
      properties:
        shipping_method:
          type: object
        shipping_method_id:
          type: string
          title: shipping_method_id
          description: The ID of this shipping method the tax line belongs to.
        total:
          type: number
          title: total
          description: The method's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The method's total excluding taxes, including promotions.
        id:
          type: string
          title: id
          description: The tax line's ID.
        description:
          type: string
          title: description
          description: The tax line's description.
        tax_rate_id:
          type: string
          title: tax_rate_id
          description: The ID of the applied tax rate.
        code:
          type: string
          title: code
          description: The code that the rate is identified by.
        rate:
          type: number
          title: rate
          description: The rate to charge.
        provider_id:
          type: string
          title: provider_id
          description: The ID of the tax provider that calculated the taxes.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the tax line was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the tax line was updated.
    CampaignResponse:
      type: object
      description: The campaign's details.
      x-schemaName: CampaignResponse
      required:
        - id
        - name
        - description
        - currency
        - campaign_identifier
        - starts_at
        - ends_at
        - budget
      properties:
        id:
          type: string
          title: id
          description: The campaign's ID.
        name:
          type: string
          title: name
          description: The campaign's name.
        description:
          type: string
          title: description
          description: The campaign's description.
        currency:
          type: string
          title: currency
          description: The campaign's currency.
        campaign_identifier:
          type: string
          title: campaign_identifier
          description: The campaign's campaign identifier.
        starts_at:
          type: string
          title: starts_at
          description: The campaign's starts at.
        ends_at:
          type: string
          title: ends_at
          description: The campaign's ends at.
        budget:
          type: object
          description: The campaign's budget.
          required:
            - id
            - type
            - currency_code
            - limit
            - used
          properties:
            id:
              type: string
              title: id
              description: The budget's ID.
            type:
              type: string
              enum:
                - spend
                - usage
            currency_code:
              type: string
              title: currency_code
              description: The budget's currency code.
            limit:
              type: number
              title: limit
              description: The budget's limit.
            used:
              type: number
              title: used
              description: The budget's used.
    CreateAddress:
      type: object
      description: The address to create.
      x-schemaName: CreateAddress
      properties:
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer this address belongs to.
        company:
          type: string
          title: company
          description: The address's company.
        first_name:
          type: string
          title: first_name
          description: The address's first name.
        last_name:
          type: string
          title: last_name
          description: The address's last name.
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        city:
          type: string
          title: city
          description: The address's city.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
          example: us
        province:
          type: string
          title: province
          description: The address's ISO 3166-2 province code. Must be lower-case.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        phone:
          type: string
          title: phone
          description: The address's phone.
        metadata:
          type: object
          description: The address's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
    CustomerGroupInCustomerFilters:
      type: object
      description: Filter by customer groups to get their associated customers.
      x-schemaName: CustomerGroupInCustomerFilters
      required:
        - id
        - name
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          oneOf:
            - type: string
              title: id
              description: Filter by a group's ID.
            - type: array
              description: Filter by group IDs.
              items:
                type: string
                title: id
                description: A group's ID.
        name:
          oneOf:
            - type: string
              title: name
              description: Filter by a group's name.
            - type: array
              description: Filter by group names.
              items:
                type: string
                title: name
                description: A group's name.
        created_at:
          type: object
          description: Filter by the group's creation date.
          properties:
            $and:
              type: array
              description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
              items:
                type: object
              title: $and
            $or:
              type: array
              description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
              items:
                type: object
              title: $or
            $eq:
              oneOf:
                - type: string
                  title: $eq
                  description: Filter by an exact match.
                - type: array
                  description: Filter by exact matches.
                  items:
                    type: string
                    title: $eq
                    description: Filter by an exact match.
            $ne:
              type: string
              title: $ne
              description: Filter by values not equal to this parameter.
            $in:
              type: array
              description: Filter by values in this array.
              items:
                type: string
                title: $in
                description: Filter by values in this array.
            $nin:
              type: array
              description: Filter by values not in this array.
              items:
                type: string
                title: $nin
                description: Filter by values not in this array.
            $not:
              oneOf:
                - type: string
                  title: $not
                  description: Filter by values not matching the conditions in this parameter.
                - type: object
                  description: Filter by values not matching the conditions in this parameter.
                - type: array
                  description: Filter by values not matching the conditions in this parameter.
                  items:
                    type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
            $gt:
              type: string
              title: $gt
              description: Filter by values greater than this parameter. Useful for numbers and dates only.
            $gte:
              type: string
              title: $gte
              description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
            $lt:
              type: string
              title: $lt
              description: Filter by values less than this parameter. Useful for numbers and dates only.
            $lte:
              type: string
              title: $lte
              description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
            $like:
              type: string
              title: $like
              description: Apply a `like` filter. Useful for strings only.
            $re:
              type: string
              title: $re
              description: Apply a regex filter. Useful for strings only.
            $ilike:
              type: string
              title: $ilike
              description: Apply a case-insensitive `like` filter. Useful for strings only.
            $fulltext:
              type: string
              title: $fulltext
              description: Filter to apply on full-text properties.
            $overlap:
              type: array
              description: Filter arrays that have overlapping values with this parameter.
              items:
                type: string
                title: $overlap
                description: Filter arrays that have overlapping values with this parameter.
            $contains:
              type: array
              description: Filter arrays that contain some of the values of this parameter.
              items:
                type: string
                title: $contains
                description: Filter arrays that contain some of the values of this parameter.
            $contained:
              type: array
              description: Filter arrays that contain all values of this parameter.
              items:
                type: string
                title: $contained
                description: Filter arrays that contain all values of this parameter.
            $exists:
              type: boolean
              title: $exists
              description: Filter by whether a value for this parameter exists (not `null`).
        updated_at:
          type: object
          description: Filter by the group's update date.
          properties:
            $and:
              type: array
              description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
              items:
                type: object
              title: $and
            $or:
              type: array
              description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
              items:
                type: object
              title: $or
            $eq:
              oneOf:
                - type: string
                  title: $eq
                  description: Filter by an exact match.
                - type: array
                  description: Filter by exact matches.
                  items:
                    type: string
                    title: $eq
                    description: Filter by an exact match.
            $ne:
              type: string
              title: $ne
              description: Filter by values not equal to this parameter.
            $in:
              type: array
              description: Filter by values in this array.
              items:
                type: string
                title: $in
                description: Filter by values in this array.
            $nin:
              type: array
              description: Filter by values not in this array.
              items:
                type: string
                title: $nin
                description: Filter by values not in this array.
            $not:
              oneOf:
                - type: string
                  title: $not
                  description: Filter by values not matching the conditions in this parameter.
                - type: object
                  description: Filter by values not matching the conditions in this parameter.
                - type: array
                  description: Filter by values not matching the conditions in this parameter.
                  items:
                    type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
            $gt:
              type: string
              title: $gt
              description: Filter by values greater than this parameter. Useful for numbers and dates only.
            $gte:
              type: string
              title: $gte
              description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
            $lt:
              type: string
              title: $lt
              description: Filter by values less than this parameter. Useful for numbers and dates only.
            $lte:
              type: string
              title: $lte
              description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
            $like:
              type: string
              title: $like
              description: Apply a `like` filter. Useful for strings only.
            $re:
              type: string
              title: $re
              description: Apply a regex filter. Useful for strings only.
            $ilike:
              type: string
              title: $ilike
              description: Apply a case-insensitive `like` filter. Useful for strings only.
            $fulltext:
              type: string
              title: $fulltext
              description: Filter to apply on full-text properties.
            $overlap:
              type: array
              description: Filter arrays that have overlapping values with this parameter.
              items:
                type: string
                title: $overlap
                description: Filter arrays that have overlapping values with this parameter.
            $contains:
              type: array
              description: Filter arrays that contain some of the values of this parameter.
              items:
                type: string
                title: $contains
                description: Filter arrays that contain some of the values of this parameter.
            $contained:
              type: array
              description: Filter arrays that contain all values of this parameter.
              items:
                type: string
                title: $contained
                description: Filter arrays that contain all values of this parameter.
            $exists:
              type: boolean
              title: $exists
              description: Filter by whether a value for this parameter exists (not `null`).
        deleted_at:
          type: object
          description: Filter by the group's deletion date.
          properties:
            $and:
              type: array
              description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
              items:
                type: object
              title: $and
            $or:
              type: array
              description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
              items:
                type: object
              title: $or
            $eq:
              oneOf:
                - type: string
                  title: $eq
                  description: Filter by an exact match.
                - type: array
                  description: Filter by exact matches.
                  items:
                    type: string
                    title: $eq
                    description: Filter by an exact match.
            $ne:
              type: string
              title: $ne
              description: Filter by values not equal to this parameter.
            $in:
              type: array
              description: Filter by values in this array.
              items:
                type: string
                title: $in
                description: Filter by values in this array.
            $nin:
              type: array
              description: Filter by values not in this array.
              items:
                type: string
                title: $nin
                description: Filter by values not in this array.
            $not:
              oneOf:
                - type: string
                  title: $not
                  description: Filter by values not matching the conditions in this parameter.
                - type: object
                  description: Filter by values not matching the conditions in this parameter.
                - type: array
                  description: Filter by values not matching the conditions in this parameter.
                  items:
                    type: string
                    title: $not
                    description: Filter by values not matching the conditions in this parameter.
            $gt:
              type: string
              title: $gt
              description: Filter by values greater than this parameter. Useful for numbers and dates only.
            $gte:
              type: string
              title: $gte
              description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
            $lt:
              type: string
              title: $lt
              description: Filter by values less than this parameter. Useful for numbers and dates only.
            $lte:
              type: string
              title: $lte
              description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
            $like:
              type: string
              title: $like
              description: Apply a `like` filter. Useful for strings only.
            $re:
              type: string
              title: $re
              description: Apply a regex filter. Useful for strings only.
            $ilike:
              type: string
              title: $ilike
              description: Apply a case-insensitive `like` filter. Useful for strings only.
            $fulltext:
              type: string
              title: $fulltext
              description: Filter to apply on full-text properties.
            $overlap:
              type: array
              description: Filter arrays that have overlapping values with this parameter.
              items:
                type: string
                title: $overlap
                description: Filter arrays that have overlapping values with this parameter.
            $contains:
              type: array
              description: Filter arrays that contain some of the values of this parameter.
              items:
                type: string
                title: $contains
                description: Filter arrays that contain some of the values of this parameter.
            $contained:
              type: array
              description: Filter arrays that contain all values of this parameter.
              items:
                type: string
                title: $contained
                description: Filter arrays that contain all values of this parameter.
            $exists:
              type: boolean
              title: $exists
              description: Filter by whether a value for this parameter exists (not `null`).
    Error:
      title: Response Error
      type: object
      properties:
        code:
          type: string
          description: A slug code to indicate the type of the error.
          enum:
            - invalid_state_error
            - invalid_request_error
            - api_error
            - unknown_error
        message:
          type: string
          description: Description of the error that occurred.
          example: first_name must be a string
        type:
          type: string
          description: A slug indicating the type of the error.
          enum:
            - QueryRunnerAlreadyReleasedError
            - TransactionAlreadyStartedError
            - TransactionNotStartedError
            - conflict
            - unauthorized
            - payment_authorization_error
            - duplicate_error
            - not_allowed
            - invalid_data
            - not_found
            - database_error
            - unexpected_state
            - invalid_argument
            - unknown_error
    IndexInfo:
      type: object
      description: The index's metadata information.
      x-schemaName: IndexInfo
      required:
        - id
        - entity
        - status
        - fields
        - updated_at
        - last_synced_key
      properties:
        id:
          type: string
          title: id
          description: The index's ID.
        entity:
          type: string
          title: entity
          description: The index's entity.
        status:
          type: string
          description: The index's syncing or ingesting status.
          enum:
            - pending
            - error
            - done
            - processing
        fields:
          type: array
          description: The index's fields.
          items:
            type: string
            title: fields
            description: The index's fields.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the index was last updated.
        last_synced_key:
          type: string
          title: last_synced_key
          description: The key of the last index sync.
    InventoryLevel:
      type: object
      description: The inventory level's details
      x-schemaName: InventoryLevel
      required:
        - id
        - inventory_item_id
        - location_id
        - stocked_quantity
        - reserved_quantity
        - available_quantity
        - incoming_quantity
      properties:
        id:
          type: string
          title: id
          description: The inventory level's ID.
        inventory_item_id:
          type: string
          title: inventory_item_id
          description: The ID of the associated inventory item.
        location_id:
          type: string
          title: location_id
          description: The ID of the associated location.
        stocked_quantity:
          type: number
          title: stocked_quantity
          description: The inventory level's stocked quantity.
        reserved_quantity:
          type: number
          title: reserved_quantity
          description: The inventory level's reserved quantity.
        available_quantity:
          type: number
          title: available_quantity
          description: The inventory level's available quantity.
        incoming_quantity:
          type: number
          title: incoming_quantity
          description: The inventory level's incoming quantity.
        metadata:
          type: object
          description: The inventory level's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
    Order:
      type: object
      description: The order change's order.
      x-schemaName: Order
      required:
        - id
        - version
        - display_id
        - status
        - currency_code
        - created_at
        - updated_at
        - original_item_total
        - original_item_subtotal
        - original_item_tax_total
        - item_total
        - item_subtotal
        - item_tax_total
        - item_discount_total
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_subtotal
        - discount_total
        - discount_tax_total
        - credit_line_total
        - gift_card_total
        - gift_card_tax_total
        - shipping_total
        - shipping_subtotal
        - shipping_tax_total
        - shipping_discount_total
        - original_shipping_total
        - original_shipping_subtotal
        - original_shipping_tax_total
      properties:
        id:
          type: string
          title: id
          description: The order's ID.
        version:
          type: number
          title: version
          description: The order's version.
        order_change:
          type: object
        status:
          type: string
          description: The order's status.
          enum:
            - canceled
            - requires_action
            - pending
            - completed
            - draft
            - archived
        region_id:
          type: string
          title: region_id
          description: The ID of the region the order belongs to.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that placed the order.
        sales_channel_id:
          type: string
          title: sales_channel_id
          description: The ID of the sales channel the order was placed in.
        email:
          type: string
          title: email
          description: The email of the customer that placed the order.
          format: email
        currency_code:
          type: string
          title: currency_code
          description: The order's currency code.
          example: usd
        shipping_address:
          $ref: '#/components/schemas/OrderAddress'
        billing_address:
          $ref: '#/components/schemas/OrderAddress'
        items:
          type: array
          description: The order's items.
          items:
            $ref: '#/components/schemas/OrderLineItem'
        shipping_methods:
          type: array
          description: The order's shipping methods.
          items:
            $ref: '#/components/schemas/OrderShippingMethod'
        transactions:
          type: array
          description: The order's transactions.
          items:
            $ref: '#/components/schemas/OrderTransaction'
        summary:
          type: object
          description: The order's summary.
          properties:
            pending_difference:
              type: number
              title: pending_difference
              description: The remaining amount to be paid or refunded.
            current_order_total:
              type: number
              title: current_order_total
              description: The order's current total.
            original_order_total:
              type: number
              title: original_order_total
              description: The order's total before any changes.
            transaction_total:
              type: number
              title: transaction_total
              description: The total of the transactions (payments and refunds) made on the order.
            paid_total:
              type: number
              title: paid_total
              description: The total paid amount.
            refunded_total:
              type: number
              title: refunded_total
              description: The total refunded amount.
            credit_line_total:
              type: number
              title: credit_line_total
              description: The total credit line amount.
            accounting_total:
              type: number
              title: accounting_total
              description: The total amount for accounting purposes.
            raw_pending_difference:
              type: object
              description: The summary's raw pending difference.
            raw_current_order_total:
              type: object
              description: The summary's raw current order total.
            raw_original_order_total:
              type: object
              description: The summary's raw original order total.
            raw_transaction_total:
              type: object
              description: The summary's raw transaction total.
            raw_paid_total:
              type: object
              description: The summary's raw paid total.
            raw_refunded_total:
              type: object
              description: The summary's raw refunded total.
            raw_credit_line_total:
              type: object
              description: The summary's raw credit line total.
            raw_accounting_total:
              type: object
              description: The summary's raw accounting total.
          required:
            - pending_difference
            - current_order_total
            - original_order_total
            - transaction_total
            - paid_total
            - refunded_total
            - credit_line_total
            - accounting_total
            - raw_pending_difference
            - raw_current_order_total
            - raw_original_order_total
            - raw_transaction_total
            - raw_paid_total
            - raw_refunded_total
            - raw_credit_line_total
            - raw_accounting_total
        metadata:
          type: object
          description: The order's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        canceled_at:
          type: string
          format: date-time
          title: canceled_at
          description: The date the order was canceled.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the order was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the order was updated.
        original_item_total:
          type: number
          title: original_item_total
          description: The order items' total including taxes, excluding promotions.
        original_item_subtotal:
          type: number
          title: original_item_subtotal
          description: The order items' total excluding taxes, including promotions.
        original_item_tax_total:
          type: number
          title: original_item_tax_total
          description: The taxes total for order items, excluding promotions.
        item_total:
          type: number
          title: item_total
          description: The order items' total including taxes and promotions.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The order items' total excluding taxes, including promotions.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The tax total of the order items including promotions.
        original_total:
          type: number
          title: original_total
          description: The order's total including taxes, excluding promotions.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The order's total excluding taxes, including promotions.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The tax total of the order excluding promotions.
        total:
          type: number
          title: total
          description: The order's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The order's subtotal excluding taxes, including promotions.
        tax_total:
          type: number
          title: tax_total
          description: The tax total of the order including promotions.
        discount_subtotal:
          type: number
          title: discount_subtotal
          description: The total discount excluding taxes.
        discount_total:
          type: number
          title: discount_total
          description: The total discount including taxes.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The tax total applied on the discount.
        gift_card_total:
          type: number
          title: gift_card_total
          description: The order's gift card total.
        gift_card_tax_total:
          type: number
          title: gift_card_tax_total
          description: The order's gift card tax total.
        shipping_total:
          type: number
          title: shipping_total
          description: The order's shipping total including taxes and promotions.
        shipping_subtotal:
          type: number
          title: shipping_subtotal
          description: The order's shipping total excluding taxes, including promotions.
        shipping_tax_total:
          type: number
          title: shipping_tax_total
          description: The total taxes of the order's shipping including taxes.
        original_shipping_total:
          type: number
          title: original_shipping_total
          description: The order's shipping total including taxes, excluding promotions.
        original_shipping_subtotal:
          type: number
          title: original_shipping_subtotal
          description: The order's shipping total excluding taxes, including promotions.
        original_shipping_tax_total:
          type: number
          title: original_shipping_tax_total
          description: The total taxes of the order's shipping excluding promotions.
        display_id:
          type: number
          title: display_id
          description: The order's display ID.
        credit_lines:
          type: array
          description: The order's credit lines, useful to add additional payment amounts for an order.
          items:
            $ref: '#/components/schemas/OrderCreditLine'
        is_draft_order:
          type: boolean
          title: is_draft_order
          description: Whether the order is a draft order.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the order was deleted.
        credit_line_total:
          type: number
          title: credit_line_total
          description: The order's credit line total.
        item_discount_total:
          type: number
          title: item_discount_total
          description: The total discount amount applied on the order's items.
        shipping_discount_total:
          type: number
          title: shipping_discount_total
          description: The total discount amount applied on the order's shipping.
        custom_display_id:
          type: string
          title: custom_display_id
          description: The custom display ID of the order.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/order/custom-display-id
        locale:
          type: string
          title: locale
          description: The order's locale in [BCP 47](https://gist.github.com/typpo/b2b828a35e683b9bf8db91b5404f1bd1) format.
          example: en-US
    OrderAddress:
      type: object
      description: The address's details.
      x-schemaName: OrderAddress
      required:
        - id
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The address's ID.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer the address belongs to.
        first_name:
          type: string
          title: first_name
          description: The address's first name.
        last_name:
          type: string
          title: last_name
          description: The address's last name.
        phone:
          type: string
          title: phone
          description: The address's phone.
        company:
          type: string
          title: company
          description: The address's company.
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        city:
          type: string
          title: city
          description: The address's city.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
          example: us
        province:
          type: string
          title: province
          description: The address's lower-case ISO 3166-2 province code.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        metadata:
          type: object
          description: The address's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the address was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the address was updated.
    OrderChange:
      type: object
      description: The order change's details.
      x-schemaName: OrderChange
      required:
        - id
        - version
        - order_id
        - return_id
        - exchange_id
        - claim_id
        - order
        - return_order
        - exchange
        - claim
        - actions
        - status
        - requested_by
        - requested_at
        - confirmed_by
        - confirmed_at
        - declined_by
        - declined_reason
        - metadata
        - declined_at
        - canceled_by
        - canceled_at
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The order change's ID.
        version:
          type: number
          title: version
          description: The order change's version. This will be the order's version when the change is applied.
        change_type:
          type: string
          description: The order change's type.
          enum:
            - return
            - exchange
            - claim
            - edit
        order_id:
          type: string
          title: order_id
          description: The ID of the order this change applies on.
        return_id:
          type: string
          title: return_id
          description: The ID of the associated return.
        exchange_id:
          type: string
          title: exchange_id
          description: The ID of the associated exchange.
        claim_id:
          type: string
          title: claim_id
          description: The ID of the associated claim.
        order:
          type: object
        return_order:
          type: object
        exchange:
          $ref: '#/components/schemas/OrderExchange'
        claim:
          $ref: '#/components/schemas/OrderClaim'
        actions:
          type: array
          description: The order change's actions.
          items:
            $ref: '#/components/schemas/OrderChangeAction'
        status:
          type: string
          description: The order change's status.
          enum:
            - canceled
            - requested
            - pending
            - confirmed
            - declined
        requested_by:
          type: string
          title: requested_by
          description: The ID of the user that requested the change.
        requested_at:
          type: string
          title: requested_at
          description: The date the order change was requested.
          format: date-time
        confirmed_by:
          type: string
          title: confirmed_by
          description: The ID of the user that confirmed the order change.
        confirmed_at:
          type: string
          title: confirmed_at
          description: The date the order change was confirmed.
          format: date-time
        declined_by:
          type: string
          title: declined_by
          description: The ID of the user that declined the order change.
        declined_reason:
          type: string
          title: declined_reason
          description: The reason the order change was declined.
        metadata:
          type: object
          description: The order change's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        declined_at:
          type: string
          title: declined_at
          description: The date the order change was declined.
          format: date-time
        canceled_by:
          type: string
          title: canceled_by
          description: The ID of the user that canceled the order change.
        canceled_at:
          type: string
          title: canceled_at
          description: The date the order change was canceled.
          format: date-time
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the order change was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the order change was updated.
        carry_over_promotions:
          type: boolean
          title: carry_over_promotions
          description: Whether promotions from the original order should be carried over to the order change (specifically, exchanges).
    OrderChangeAction:
      type: object
      description: The order change action's details.
      x-schemaName: OrderChangeAction
      required:
        - id
        - order_change_id
        - order_change
        - order_id
        - return_id
        - claim_id
        - exchange_id
        - order
        - reference
        - reference_id
        - action
        - details
        - internal_note
        - ordering
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The action's ID.
        order_change_id:
          type: string
          title: order_change_id
          description: The ID of the order change that the action belongs to.
        order_change:
          type: object
        order_id:
          type: string
          title: order_id
          description: The ID of the order the associated change is for.
        return_id:
          type: string
          title: return_id
          description: The ID of the associated return.
        claim_id:
          type: string
          title: claim_id
          description: The ID of the associated claim.
        exchange_id:
          type: string
          title: exchange_id
          description: The ID of the associated exchange.
        order:
          $ref: '#/components/schemas/Order'
        reference:
          type: string
          title: reference
          description: The name of the table this action applies on.
          enum:
            - claim
            - exchange
            - return
            - order_shipping_method
        reference_id:
          type: string
          title: reference_id
          description: The ID of the record in the referenced table.
        action:
          type: string
          description: The applied action.
          enum:
            - CANCEL_RETURN_ITEM
            - FULFILL_ITEM
            - DELIVER_ITEM
            - CANCEL_ITEM_FULFILLMENT
            - ITEM_ADD
            - ITEM_REMOVE
            - ITEM_UPDATE
            - RECEIVE_DAMAGED_RETURN_ITEM
            - RECEIVE_RETURN_ITEM
            - RETURN_ITEM
            - SHIPPING_ADD
            - SHIPPING_REMOVE
            - SHIP_ITEM
            - WRITE_OFF_ITEM
            - REINSTATE_ITEM
        details:
          type: object
          description: The action's details.
          example:
            reference_id: 123
            quantity: 1
        internal_note:
          type: string
          title: internal_note
          description: A note that's viewed only by admin users.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the action was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the action was updated.
        ordering:
          type: number
          title: ordering
          description: The action's ordering among other actions in the same order change.
    OrderClaim:
      type: object
      description: The order change's claim.
      x-schemaName: OrderClaim
      required:
        - id
        - type
        - order_id
        - order_version
        - display_id
        - claim_items
        - additional_items
        - metadata
      properties:
        id:
          type: string
          title: id
          description: The claim's ID.
        order_id:
          type: string
          title: order_id
          description: The ID of the order associated with the claim.
        claim_items:
          type: array
          description: The order items targetted by the claim.
          items:
            $ref: '#/components/schemas/BaseClaimItem'
        additional_items:
          type: array
          description: The outbound or new items of the claim.
          items:
            $ref: '#/components/schemas/BaseClaimItem'
        return:
          type: object
        return_id:
          type: string
          title: return_id
          description: The ID of the associated return.
        no_notification:
          type: boolean
          title: no_notification
          description: Whether the customer should be notified about changes in the claim.
        refund_amount:
          type: number
          title: refund_amount
          description: The amount to be refunded.
        display_id:
          type: number
          title: display_id
          description: The claim's display ID.
        shipping_methods:
          type: array
          description: The claim's shipping methods.
          items:
            $ref: '#/components/schemas/OrderShippingMethod'
        transactions:
          type: array
          description: The claim's transactions.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/order/transactions
            description: Learn more about transactions of orders and associated models.
          items:
            $ref: '#/components/schemas/OrderTransaction'
        metadata:
          type: object
          description: The claim's metadata, used to store custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The claim's creation date.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The claim's update date.
        type:
          type: string
          description: The claim's type.
          enum:
            - replace
            - refund
        order:
          $ref: '#/components/schemas/Order'
        order_version:
          type: number
          title: order_version
          description: The claim's order version.
        raw_refund_amount:
          oneOf:
            - type: string
              title: raw_refund_amount
              description: The claim's raw refund amount.
            - type: number
              title: raw_refund_amount
              description: The claim's raw refund amount.
            - type: string
              title: raw_refund_amount
              description: The claim's raw refund amount.
            - type: number
              title: raw_refund_amount
              description: The claim's raw refund amount.
        created_by:
          type: string
          title: created_by
          description: The ID of the user that created the claim.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the claim was deleted.
        canceled_at:
          type: string
          title: canceled_at
          description: The date the claim was canceled.
          format: date-time
    OrderCreditLine:
      type: object
      description: The credit line's details.
      x-schemaName: OrderCreditLine
      required:
        - id
        - order_id
        - order
        - amount
        - reference
        - reference_id
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The credit line's ID.
        order_id:
          type: string
          title: order_id
          description: The ID of the associated order.
        order:
          type: object
        reference:
          type: string
          title: reference
          description: The table that this credit line references. For example, `payment_collection`.
        reference_id:
          type: string
          title: reference_id
          description: The ID of the record in the referenced table. For example, `paycol_123`.
        metadata:
          type: object
          description: The credit line's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the credit line was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the credit line was updated.
        amount:
          type: number
          title: amount
          description: The credit line's amount.
    OrderExchange:
      type: object
      description: The order change's exchange.
      x-schemaName: OrderExchange
      required:
        - id
        - order_id
        - order_version
        - display_id
        - additional_items
        - metadata
      properties:
        order_id:
          type: string
          title: order_id
          description: The ID of the order the exchange is created for.
        additional_items:
          type: array
          description: The new items (outbound) sent by the exchange.
          items:
            $ref: '#/components/schemas/BaseExchangeItem'
        no_notification:
          type: boolean
          title: no_notification
          description: Whether to send the customer notifications when the exchange is updated.
        difference_due:
          type: number
          title: difference_due
          description: The amount to be exchanged or refunded. If the amount is negative, it must be refunded. If positive, additional payment is required from the customer.
        return:
          $ref: '#/components/schemas/Return'
        return_id:
          type: string
          title: return_id
          description: The ID of the associated exchange.
        id:
          type: string
          title: id
          description: The exchange's ID.
        display_id:
          type: number
          title: display_id
          description: The exchange's display ID.
        shipping_methods:
          type: array
          description: The shipping methods used to send the new (outbound) items.
          items:
            $ref: '#/components/schemas/OrderShippingMethod'
        transactions:
          type: array
          description: The exchange's transactions.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/order/transactions
          items:
            $ref: '#/components/schemas/OrderTransaction'
        metadata:
          type: object
          description: The exchange's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date that the exchange was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date that the exchange was updated.
        order:
          $ref: '#/components/schemas/Order'
        order_version:
          type: number
          title: order_version
          description: The version of the order when the exchange is applied.
        raw_difference_due:
          oneOf:
            - type: string
              title: raw_difference_due
              description: The exchange's raw difference due.
            - type: number
              title: raw_difference_due
              description: The exchange's raw difference due.
            - type: string
              title: raw_difference_due
              description: The exchange's raw difference due.
            - type: number
              title: raw_difference_due
              description: The exchange's raw difference due.
        allow_backorder:
          type: boolean
          title: allow_backorder
          description: Whether variants that are out of stock can be added to the exchange as outbound items.
        created_by:
          type: string
          title: created_by
          description: The ID of the user that created the exchange.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the exchange was deleted.
        canceled_at:
          type: string
          title: canceled_at
          description: The date the exchange was canceled.
          format: date-time
    OrderItem:
      type: object
      description: The order item's detail.
      x-schemaName: OrderItem
      required:
        - id
        - item_id
        - item
        - quantity
        - fulfilled_quantity
        - delivered_quantity
        - shipped_quantity
        - return_requested_quantity
        - return_received_quantity
        - return_dismissed_quantity
        - written_off_quantity
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The item's ID.
        item_id:
          type: string
          title: item_id
          description: The ID of the associated line item.
        item:
          type: object
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        fulfilled_quantity:
          type: number
          title: fulfilled_quantity
          description: The item's fulfilled quantity.
        delivered_quantity:
          type: number
          title: delivered_quantity
          description: The item's delivered quantity.
        shipped_quantity:
          type: number
          title: shipped_quantity
          description: The item's shipped quantity.
        return_requested_quantity:
          type: number
          title: return_requested_quantity
          description: The item's quantity that's requested to be returned.
        return_received_quantity:
          type: number
          title: return_received_quantity
          description: The item's quantity that's received through a return.
        return_dismissed_quantity:
          type: number
          title: return_dismissed_quantity
          description: The item's quantity that's returned but dismissed because it's damaged.
        written_off_quantity:
          type: number
          title: written_off_quantity
          description: The item's quantity that's removed due to an order change.
        metadata:
          type: object
          description: The item's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the item was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the item was updated.
    OrderLineItem:
      type: object
      description: The order line item's details.
      x-schemaName: OrderLineItem
      required:
        - id
        - title
        - requires_shipping
        - is_discountable
        - is_giftcard
        - is_tax_inclusive
        - unit_price
        - quantity
        - detail
        - created_at
        - updated_at
        - original_total
        - original_subtotal
        - original_tax_total
        - item_total
        - item_subtotal
        - item_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - refundable_total
        - refundable_total_per_unit
      properties:
        id:
          type: string
          title: id
          description: The item's ID.
        title:
          type: string
          title: title
          description: The item's title.
        subtitle:
          type: string
          title: subtitle
          description: The item's subtitle.
        thumbnail:
          type: string
          title: thumbnail
          description: The item's thumbnail URL.
        variant_id:
          type: string
          title: variant_id
          description: The ID of the associated variant.
        product_id:
          type: string
          title: product_id
          description: The ID of the associated product.
        product_title:
          type: string
          title: product_title
          description: The item's product title.
        product_description:
          type: string
          title: product_description
          description: The item's product description.
        product_subtitle:
          type: string
          title: product_subtitle
          description: The item's product subtitle.
        product_type:
          type: string
          title: product_type
          description: The ID of the associated product's type.
        product_collection:
          type: string
          title: product_collection
          description: The ID of the associated product's collection.
        product_handle:
          type: string
          title: product_handle
          description: The item's product handle.
        variant_sku:
          type: string
          title: variant_sku
          description: The item's variant SKU.
        variant_barcode:
          type: string
          title: variant_barcode
          description: The item's variant barcode.
        variant_title:
          type: string
          title: variant_title
          description: The item's variant title.
        variant_option_values:
          type: object
          description: The associated variant's values for the associated product's options.
          example:
            Color: Red
        requires_shipping:
          type: boolean
          title: requires_shipping
          description: Whether the item requires shipping.
        is_discountable:
          type: boolean
          title: is_discountable
          description: Whether the item is discountable.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the item's price includes taxes.
        compare_at_unit_price:
          type: number
          title: compare_at_unit_price
          description: The original price of the item before a promotion or sale.
        unit_price:
          type: number
          title: unit_price
          description: The item's price for a single quantity.
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        tax_lines:
          type: array
          description: The item's tax lines.
          items:
            $ref: '#/components/schemas/OrderLineItemTaxLine'
        adjustments:
          type: array
          description: The item's adjustments.
          items:
            $ref: '#/components/schemas/OrderLineItemAdjustment'
        detail:
          $ref: '#/components/schemas/OrderItem'
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the item was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the item was updated.
        metadata:
          type: object
          description: The item's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        original_total:
          type: number
          title: original_total
          description: The item's total including taxes and promotions.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The item's total excluding taxes, including promotions.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The total taxes of the item excluding promotions.
        item_total:
          type: number
          title: item_total
          description: The item's total for a single quantity, including taxes and promotions.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The item's total for a single quantity, excluding taxes and including promotions.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The total taxes of a single quantity of the item, including promotions.
        total:
          type: number
          title: total
          description: The item's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The item's total excluding taxes, including promotions.
        tax_total:
          type: number
          title: tax_total
          description: The total taxes of the item, including promotions.
        discount_total:
          type: number
          title: discount_total
          description: The item's discount total.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The total taxes on the discounted amount.
        refundable_total:
          type: number
          title: refundable_total
          description: The total amount of the item that can be refunded.
        refundable_total_per_unit:
          type: number
          title: refundable_total_per_unit
          description: The total amount that can be refunded of a single quantity of the item.
        product_type_id:
          type: string
          title: product_type_id
          description: The ID of the associated product's type.
        is_giftcard:
          type: boolean
          title: is_giftcard
          description: Whether the item is a gift card.
    OrderLineItemAdjustment:
      type: object
      description: The line item adjustment's details.
      x-schemaName: OrderLineItemAdjustment
      required:
        - item
        - item_id
        - id
        - amount
        - order_id
        - created_at
        - updated_at
      properties:
        item:
          type: object
        item_id:
          type: string
          title: item_id
          description: The ID of the item this adjustment is for.
        id:
          type: string
          title: id
          description: The adjustment's ID.
        code:
          type: string
          title: code
          description: The adjustment's code.
        amount:
          type: number
          title: amount
          description: The adjustment's amount.
        order_id:
          type: string
          title: order_id
          description: The ID of the associated order.
        description:
          type: string
          title: description
          description: The adjustment's description.
        promotion_id:
          type: string
          title: promotion_id
          description: The ID of the promotion applied by this adjustment.
        provider_id:
          type: string
          title: provider_id
          description: The adjustment's provider ID.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the adjustment was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the adjustment was updated.
    OrderLineItemTaxLine:
      type: object
      description: The line item tax line's details.
      x-schemaName: OrderLineItemTaxLine
      required:
        - item
        - item_id
        - total
        - subtotal
        - id
        - code
        - rate
        - created_at
        - updated_at
      properties:
        item:
          type: object
        item_id:
          type: string
          title: item_id
          description: The ID of the line item that the tax line belongs to.
        total:
          type: number
          title: total
          description: The item's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The item's total excluding taxes, including promotions.
        id:
          type: string
          title: id
          description: The tax line's ID.
        description:
          type: string
          title: description
          description: The tax line's description.
        tax_rate_id:
          type: string
          title: tax_rate_id
          description: The ID of the applied tax rate.
        code:
          type: string
          title: code
          description: The code that the tax rate is identified by.
        rate:
          type: number
          title: rate
          description: The rate to charge.
        provider_id:
          type: string
          title: provider_id
          description: The ID of the tax provider used to calculate the tax lines.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the tax line was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the tax line was updated.
    OrderReturnItem:
      type: object
      description: The item's items.
      x-schemaName: OrderReturnItem
      required:
        - id
        - return_id
        - order_id
        - item_id
        - quantity
      properties:
        id:
          type: string
          title: id
          description: The return item's ID.
        quantity:
          type: number
          title: quantity
          description: The return item's quantity.
        received_quantity:
          type: number
          title: received_quantity
          description: The received quantity of the item. This quantity is added to the stocked inventory quantity of the item.
        reason_id:
          type: string
          title: reason_id
          description: The ID of the return reason associated with the item.
        item_id:
          type: string
          title: item_id
          description: The ID of the associated order item.
        return_id:
          type: string
          title: return_id
          description: The ID of the return this return item belongs to.
        metadata:
          type: object
          description: The return item's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        order_id:
          type: string
          title: order_id
          description: The ID of the order the return belongs to.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the item was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the item was updated.
        damaged_quantity:
          type: number
          title: damaged_quantity
          description: The item's damaged quantity.
    OrderShippingMethod:
      type: object
      description: The shipping method's details.
      x-schemaName: OrderShippingMethod
      required:
        - id
        - order_id
        - name
        - amount
        - is_tax_inclusive
        - created_at
        - updated_at
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
      properties:
        id:
          type: string
          title: id
          description: The shipping method's ID.
        order_id:
          type: string
          title: order_id
          description: The ID of the order that the shipping method belongs to.
        name:
          type: string
          title: name
          description: The shipping method's name.
        description:
          type: string
          title: description
          description: The shipping method's description.
        amount:
          type: number
          title: amount
          description: The shipping method's amount.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the shipping method's amount includes taxes.
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the shipping option this method was created from.
        data:
          type: object
          description: The shipping method's data, useful for the fulfillment provider handling the fulfillment.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/order/concepts#data-property
        metadata:
          type: object
          description: The shipping method's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        tax_lines:
          type: array
          description: The shipping method's tax lines.
          items:
            $ref: '#/components/schemas/OrderShippingMethodTaxLine'
        adjustments:
          type: array
          description: The shipping method's adjustments.
          items:
            $ref: '#/components/schemas/OrderShippingMethodAdjustment'
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the shipping method was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the shipping method was updated.
        original_total:
          type: number
          title: original_total
          description: The shipping method's total including taxes, excluding promotions.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The shipping method's subtotal excluding taxes, including promotions.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The total taxes of the shipping method excluding promotions.
        total:
          type: number
          title: total
          description: The shipping method's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The shipping method's total excluding taxes, including promotions.
        tax_total:
          type: number
          title: tax_total
          description: The total taxes of the shipping method, including promotions.
        discount_total:
          type: number
          title: discount_total
          description: The shipping method's discount total.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The total taxes of the discount amount.
    OrderShippingMethodAdjustment:
      type: object
      description: The shipping method adjustment's details.
      x-schemaName: OrderShippingMethodAdjustment
      required:
        - shipping_method
        - shipping_method_id
        - id
        - amount
        - order_id
        - created_at
        - updated_at
      properties:
        shipping_method:
          type: object
        shipping_method_id:
          type: string
          title: shipping_method_id
          description: The ID of the shipping method this adjustment is for.
        id:
          type: string
          title: id
          description: The adjustment's ID.
        code:
          type: string
          title: code
          description: The adjustment's code.
        amount:
          type: number
          title: amount
          description: The adjustment's amount.
        order_id:
          type: string
          title: order_id
          description: The ID of the associated order.
        description:
          type: string
          title: description
          description: The adjustment's description.
        promotion_id:
          type: string
          title: promotion_id
          description: The ID of the promotion this adjustment applies.
        provider_id:
          type: string
          title: provider_id
          description: The adjustment's provider ID.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the adjustment was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the adjustment was updated.
    OrderShippingMethodTaxLine:
      type: object
      description: The shipping method tax line's details.
      x-schemaName: OrderShippingMethodTaxLine
      required:
        - shipping_method
        - shipping_method_id
        - total
        - subtotal
        - id
        - code
        - rate
        - created_at
        - updated_at
      properties:
        shipping_method:
          type: object
        shipping_method_id:
          type: string
          title: shipping_method_id
          description: The ID of the shipping method that this tax line is for.
        total:
          type: number
          title: total
          description: The shipping method's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The shipping method's total excluding taxes, including promotions.
        id:
          type: string
          title: id
          description: The tax line's ID.
        description:
          type: string
          title: description
          description: The tax line's description.
        tax_rate_id:
          type: string
          title: tax_rate_id
          description: The ID of the applied tax rate.
        code:
          type: string
          title: code
          description: The code that the tax rate is identified by.
        rate:
          type: number
          title: rate
          description: The rate to charge.
        provider_id:
          type: string
          title: provider_id
          description: The ID of the tax provider used to calculate taxes.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the tax line was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the tax line was updated.
    OrderTransaction:
      type: object
      description: The transaction's details.
      x-schemaName: OrderTransaction
      required:
        - id
        - order_id
        - version
        - order
        - amount
        - currency_code
        - reference
        - reference_id
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The transaction's ID.
        order_id:
          type: string
          title: order_id
          description: The ID of the order this transaction belongs to.
        amount:
          type: number
          title: amount
          description: The transaction's amount.
        currency_code:
          type: string
          title: currency_code
          description: The transaction's currency code.
          example: usd
        reference:
          type: string
          title: reference
          description: The name of a table that this transaction references. If this transaction is for captured payment, its value is `capture`. If this transaction is for refunded payment, its value is `refund`.
          enum:
            - capture
            - refund
        reference_id:
          type: string
          title: reference_id
          description: The ID of the referenced record in the referenced table.
        metadata:
          type: object
          description: The transaction's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date that the transaction was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date that the transaction was updated.
        order:
          type: object
        version:
          type: number
          title: version
          description: The order version that the transaction belongs to.
    RefundReasonResponse:
      type: object
      description: The refund reason's details.
      x-schemaName: RefundReasonResponse
      required:
        - refund_reason
      properties:
        refund_reason:
          $ref: '#/components/schemas/AdminRefundReason'
    Return:
      type: object
      description: The return's details.
      x-schemaName: Return
      required:
        - id
        - status
        - order_id
        - items
        - display_id
        - metadata
      properties:
        id:
          type: string
          title: id
          description: The return's ID.
        status:
          type: string
          description: The return's status.
          enum:
            - canceled
            - requested
            - received
            - partially_received
        refund_amount:
          type: number
          title: refund_amount
          description: The amount refunded by this return.
        order_id:
          type: string
          title: order_id
          description: The ID of the associated order.
        items:
          type: array
          description: The return's items.
          items:
            $ref: '#/components/schemas/OrderReturnItem'
        shipping_methods:
          type: array
          description: The return's shipping methods.
          items:
            $ref: '#/components/schemas/OrderShippingMethod'
        transactions:
          type: array
          description: The return's transactions.
          items:
            $ref: '#/components/schemas/OrderTransaction'
        metadata:
          type: object
          description: The return's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the return was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the return was updated.
        canceled_at:
          type: string
          title: canceled_at
          description: The date the return was canceled.
          format: date-time
        raw_refund_amount:
          oneOf:
            - type: string
              title: raw_refund_amount
              description: The return order's raw refund amount.
            - type: number
              title: raw_refund_amount
              description: The return order's raw refund amount.
            - type: string
              title: raw_refund_amount
              description: The return order's raw refund amount.
            - type: number
              title: raw_refund_amount
              description: The return order's raw refund amount.
        order:
          $ref: '#/components/schemas/Order'
        exchange_id:
          type: string
          title: exchange_id
          description: The ID of the exchange this return belongs to, if any.
        exchange:
          type: object
        claim_id:
          type: string
          title: claim_id
          description: The ID of the claim this return belongs to, if any.
        claim:
          $ref: '#/components/schemas/OrderClaim'
        display_id:
          type: number
          title: display_id
          description: The return order's display ID.
        location_id:
          type: string
          title: location_id
          description: The ID of the stock location the items are returned to.
        no_notification:
          type: boolean
          title: no_notification
          description: Whether to notify the customer about changes in the return.
        created_by:
          type: string
          title: created_by
          description: The ID of the user that created the return.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the return was deleted.
        requested_at:
          type: string
          title: requested_at
          description: The date the return was requested.
          format: date-time
        received_at:
          type: string
          title: received_at
          description: The date the return was received.
          format: date-time
    StoreAcceptOrderTransfer:
      type: object
      description: The details of accepting the order transfer.
      x-schemaName: StoreAcceptOrderTransfer
      required:
        - token
      properties:
        token:
          type: string
          title: token
          description: The order transfer's token issued when the transfer was requested.
    StoreAddGiftCardToCart:
      type: object
      description: The details to add a gift card to the cart.
      x-schemaName: StoreAddGiftCardToCart
      required:
        - code
      properties:
        code:
          type: string
          title: code
          description: The gift card's code.
    StoreAddStoreCreditsToCart:
      type: object
      description: The details to add store credits to the cart.
      x-schemaName: StoreAddStoreCreditsToCart
      required:
        - amount
      properties:
        amount:
          type: number
          title: amount
          description: The amount of store credits to add to the cart.
    StoreCalculatedPrice:
      type: object
      description: The shipping option's calculated price.
      x-schemaName: StoreCalculatedPrice
      required:
        - id
        - calculated_amount
        - original_amount
        - original_amount_with_tax
        - original_amount_without_tax
        - currency_code
      properties:
        id:
          type: string
          title: id
          description: The ID of the price set from which the price was selected.
        is_calculated_price_price_list:
          type: boolean
          title: is_calculated_price_price_list
          description: Whether the calculated price belongs to a price list.
        is_calculated_price_tax_inclusive:
          type: boolean
          title: is_calculated_price_tax_inclusive
          description: Whether the calculated price is tax inclusive.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/pricing/tax-inclusive-pricing
        calculated_amount:
          type: number
          title: calculated_amount
          description: The amount of the calculated price, or `null` if there isn't a calculated price. This is the amount shown to the customer.
        calculated_amount_with_tax:
          type: number
          title: calculated_amount_with_tax
          description: The `calculated_amount` with taxes applied.
        calculated_amount_without_tax:
          type: number
          title: calculated_amount_without_tax
          description: The `calculated_amount` without taxes applied.
        is_original_price_price_list:
          type: boolean
          title: is_original_price_price_list
          description: Whether the original price belongs to a price list.
        is_original_price_tax_inclusive:
          type: boolean
          title: is_original_price_tax_inclusive
          description: Whether the original price is tax inclusive.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/pricing/tax-inclusive-pricing
        original_amount:
          type: number
          title: original_amount
          description: The amount of the original price, or `null` if there isn't an original price. This amount is useful to compare with the `calculated_amount`, such as to check for discounted value.
        currency_code:
          type: string
          title: currency_code
          description: The currency code of the calculated price, or `null` if there isn't a calculated price.
        calculated_price:
          type: object
          description: The calculated price's details.
          required:
            - id
            - price_list_id
            - price_list_type
            - min_quantity
            - max_quantity
          properties:
            id:
              type: string
              title: id
              description: The ID of the price.
            price_list_id:
              type: string
              title: price_list_id
              description: The ID of the associated price list.
            price_list_type:
              type: string
              title: price_list_type
              description: The price list's type. For example, `sale` or `override`.
            min_quantity:
              type: number
              title: min_quantity
              description: The minimum quantity required in the cart for the price to apply.
            max_quantity:
              type: number
              title: max_quantity
              description: The maximum quantity required in the cart for the price to apply.
        original_price:
          type: object
          description: The origin price's details.
          required:
            - id
            - price_list_id
            - price_list_type
            - min_quantity
            - max_quantity
          properties:
            id:
              type: string
              title: id
              description: The ID of the price.
            price_list_id:
              type: string
              title: price_list_id
              description: The ID of the associated price list.
            price_list_type:
              type: string
              title: price_list_type
              description: The price list's type. For example, `sale` or `override`.
            min_quantity:
              type: number
              title: min_quantity
              description: The minimum quantity required in the cart for the price to apply.
            max_quantity:
              type: number
              title: max_quantity
              description: The maximum quantity required in the cart for the price to apply.
        original_amount_with_tax:
          type: number
          title: original_amount_with_tax
          description: The original amount with taxes applied.
        original_amount_without_tax:
          type: number
          title: original_amount_without_tax
          description: The original amount without taxes.
    StoreCart:
      type: object
      description: The cart's details.
      x-schemaName: StoreCart
      required:
        - promotions
        - id
        - currency_code
        - original_item_total
        - original_item_subtotal
        - original_item_tax_total
        - item_total
        - item_subtotal
        - item_tax_total
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - gift_card_total
        - gift_card_tax_total
        - shipping_total
        - shipping_subtotal
        - shipping_tax_total
        - original_shipping_total
        - original_shipping_subtotal
        - original_shipping_tax_total
      properties:
        id:
          type: string
          title: id
          description: The cart's ID.
        region:
          $ref: '#/components/schemas/StoreRegion'
        region_id:
          type: string
          title: region_id
          description: The ID of the region the cart belongs to.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer the cart belongs to.
        sales_channel_id:
          type: string
          title: sales_channel_id
          description: The ID of the cart's sales channel. Only products that belong to the same sales channel can be added to the cart. The created order will be associated with the same sales channel.
        email:
          type: string
          title: email
          description: The email of the customer the cart belongs to.
          format: email
        currency_code:
          type: string
          title: currency_code
          description: The cart's currency code.
          example: usd
        shipping_address:
          $ref: '#/components/schemas/StoreCartAddress'
        billing_address:
          $ref: '#/components/schemas/StoreCartAddress'
        items:
          type: array
          description: The cart's items.
          items:
            $ref: '#/components/schemas/StoreCartLineItem'
        shipping_methods:
          type: array
          description: The cart's shipping methods.
          items:
            $ref: '#/components/schemas/StoreCartShippingMethod'
        payment_collection:
          $ref: '#/components/schemas/StorePaymentCollection'
        metadata:
          type: object
          description: The cart's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the cart was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the cart was updated.
        original_item_total:
          type: number
          title: original_item_total
          description: The sum of all line items' original totals before discounts, including taxes.
        original_item_subtotal:
          type: number
          title: original_item_subtotal
          description: The sum of all line items' original subtotals before discounts, excluding taxes.
        original_item_tax_total:
          type: number
          title: original_item_tax_total
          description: The sum of all line items' original tax totals before discounts.
        item_total:
          type: number
          title: item_total
          description: The sum of all line items' totals after discounts, including taxes.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The sum of all line items' subtotals before discounts, excluding taxes.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The sum of all line items' tax totals after discounts.
        original_total:
          type: number
          title: original_total
          description: The cart's total before discounts, including taxes. Calculated as the sum of `original_item_total` and `original_shipping_total`.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The cart's subtotal before discounts, excluding taxes. Calculated as the sum of `original_item_subtotal` and `original_shipping_subtotal`.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The cart's tax total before discounts. Calculated as the sum of `original_item_tax_total` and `original_shipping_tax_total`.
        total:
          type: number
          title: total
          description: The cart's final total after discounts and credit lines, including taxes.
        subtotal:
          type: number
          title: subtotal
          description: The cart's subtotal before discounts, excluding taxes. Calculated as the sum of `item_subtotal` and `shipping_subtotal`.
        tax_total:
          type: number
          title: tax_total
          description: The cart's tax total after discounts. Calculated as the sum of `item_tax_total` and `shipping_tax_total`.
        discount_total:
          type: number
          title: discount_total
          description: The total amount of discounts applied to the cart, including the tax portion of discounts.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The total amount of discounts applied to the cart's tax. Represents the tax portion of discounts.
        gift_card_total:
          type: number
          title: gift_card_total
          description: The total gift card amount applied on the cart.
        gift_card_tax_total:
          type: number
          title: gift_card_tax_total
          description: The total taxes applied on the gift card amount.
        shipping_total:
          type: number
          title: shipping_total
          description: The sum of all shipping methods' totals after discounts, including taxes.
        shipping_subtotal:
          type: number
          title: shipping_subtotal
          description: The sum of all shipping methods' subtotals before discounts, excluding taxes.
        shipping_tax_total:
          type: number
          title: shipping_tax_total
          description: The sum of all shipping methods' tax totals after discounts.
        original_shipping_total:
          type: number
          title: original_shipping_total
          description: The sum of all shipping methods' original totals before discounts, including taxes.
        original_shipping_subtotal:
          type: number
          title: original_shipping_subtotal
          description: The sum of all shipping methods' original subtotals before discounts, excluding taxes.
        original_shipping_tax_total:
          type: number
          title: original_shipping_tax_total
          description: The sum of all shipping methods' original tax totals before discounts.
        promotions:
          type: array
          description: The cart's promotions.
          items:
            $ref: '#/components/schemas/StoreCartPromotion'
        completed_at:
          type: string
          title: completed_at
          description: The date the cart was completed.
          format: date-time
    StoreCartAddPromotion:
      type: object
      description: The promotion's details.
      required:
        - promo_codes
      properties:
        promo_codes:
          type: array
          description: Promotion codes to add to the cart.
          items:
            type: string
            title: promo_codes
            description: A promotion code.
      x-schemaName: StoreCartAddPromotion
    StoreCartAddress:
      type: object
      description: The address's details.
      x-schemaName: StoreCartAddress
      required:
        - id
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The address's ID.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer the address belongs to.
        first_name:
          type: string
          title: first_name
          description: The address's first name.
        last_name:
          type: string
          title: last_name
          description: The address's last name.
        phone:
          type: string
          title: phone
          description: The address's phone.
        company:
          type: string
          title: company
          description: The address's company.
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        city:
          type: string
          title: city
          description: The address's city.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
          example: us
        province:
          type: string
          title: province
          description: The address's lower-case ISO 3166-2 province code.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        metadata:
          type: object
          description: The address's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          title: created_at
          description: The date the address was created.
          format: date-time
        updated_at:
          type: string
          title: updated_at
          description: The date the address was updated.
          format: date-time
    StoreCartLineItem:
      type: object
      description: The item's details.
      x-schemaName: StoreCartLineItem
      required:
        - cart
        - title
        - id
        - requires_shipping
        - is_discountable
        - is_tax_inclusive
        - unit_price
        - quantity
        - cart_id
      properties:
        id:
          type: string
          title: id
          description: The item's ID.
        title:
          type: string
          title: title
          description: The item's title.
        subtitle:
          type: string
          title: subtitle
          description: The item's subtitle.
        thumbnail:
          type: string
          title: thumbnail
          description: The item's thumbnail URL.
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        product:
          $ref: '#/components/schemas/StoreProduct'
        product_id:
          type: string
          title: product_id
          description: The ID of the associated product.
        product_title:
          type: string
          title: product_title
          description: The item's product title.
        product_description:
          type: string
          title: product_description
          description: The item's product description.
        product_subtitle:
          type: string
          title: product_subtitle
          description: The item's product subtitle.
        product_type:
          type: string
          title: product_type
          description: The ID of the associated product's type.
        product_collection:
          type: string
          title: product_collection
          description: The ID of the associated product's collection.
        product_handle:
          type: string
          title: product_handle
          description: The item's product handle.
        variant:
          $ref: '#/components/schemas/StoreProductVariant'
        variant_id:
          type: string
          title: variant_id
          description: The ID of the associated product variant.
        variant_sku:
          type: string
          title: variant_sku
          description: The item's variant SKU.
        variant_barcode:
          type: string
          title: variant_barcode
          description: The item's variant barcode.
        variant_title:
          type: string
          title: variant_title
          description: The item's variant title.
        variant_option_values:
          type: object
          description: The associated variant's value for the product's options.
          example:
            Color: Red
        requires_shipping:
          type: boolean
          title: requires_shipping
          description: Whether the item requires shipping.
        is_discountable:
          type: boolean
          title: is_discountable
          description: Whether the item is discountable.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the item's price includes taxes.
        compare_at_unit_price:
          type: number
          title: compare_at_unit_price
          description: The original price of the item before a promotion or sale.
        unit_price:
          type: number
          title: unit_price
          description: The price of a single quantity of the item.
        tax_lines:
          type: array
          description: The item's tax lines.
          items:
            allOf:
              - type: object
                description: The tax line's details.
                x-schemaName: BaseLineItemTaxLine
                required:
                  - item
                  - item_id
                  - total
                  - subtotal
                  - id
                  - code
                  - rate
                  - created_at
                  - updated_at
                properties:
                  item:
                    type: object
                    title: item
                    description: The details of the item that the tax line belongs to.
                  item_id:
                    type: string
                    title: item_id
                    description: The ID of the line item this tax line belongs to.
                  total:
                    type: number
                    title: total
                    description: The item's total including taxes and promotions.
                  subtotal:
                    type: number
                    title: subtotal
                    description: The item's total excluding taxes, including promotions.
                  id:
                    type: string
                    title: id
                    description: The tax line's ID.
                  description:
                    type: string
                    title: description
                    description: The tax line's description.
                  tax_rate_id:
                    type: string
                    title: tax_rate_id
                    description: The ID of the applied tax rate.
                  code:
                    type: string
                    title: code
                    description: The code that the tax rate is identified by.
                  rate:
                    type: number
                    title: rate
                    description: The charged rate.
                  provider_id:
                    type: string
                    title: provider_id
                    description: The ID of the tax provider used to calculate the tax line.
                  created_at:
                    type: string
                    format: date-time
                    title: created_at
                    description: The date the tax line was created.
                  updated_at:
                    type: string
                    format: date-time
                    title: updated_at
                    description: The date the tax line was updated.
              - type: object
                description: The tax line's details.
                required:
                  - item
                properties:
                  item:
                    type: object
                    title: item
                    description: The details of the item that the tax line belongs to.
            description: The tax line's details
        adjustments:
          type: array
          description: The item's adjustments.
          items:
            allOf:
              - type: object
                description: The adjustment's details.
                x-schemaName: BaseLineItemAdjustment
                required:
                  - item
                  - item_id
                  - id
                  - amount
                  - cart_id
                  - created_at
                  - updated_at
                properties:
                  item:
                    type: object
                    title: item
                    description: The details of the item that the adjustment belongs to.
                  item_id:
                    type: string
                    title: item_id
                    description: The ID of the item that the adjustment belongs to.
                  id:
                    type: string
                    title: id
                    description: The adjustment's ID.
                  code:
                    type: string
                    title: code
                    description: The adjustment's code.
                  amount:
                    type: number
                    title: amount
                    description: The adjustment's amount.
                  cart_id:
                    type: string
                    title: cart_id
                    description: The ID of the associated cart.
                  description:
                    type: string
                    title: description
                    description: The adjustment's description.
                  promotion_id:
                    type: string
                    title: promotion_id
                    description: The ID of the applied promotion.
                  provider_id:
                    type: string
                    title: provider_id
                    description: The adjustment's provider ID.
                  created_at:
                    type: string
                    format: date-time
                    title: created_at
                    description: The date the adjustment was created.
                  updated_at:
                    type: string
                    format: date-time
                    title: updated_at
                    description: The date the adjustment was updated.
              - type: object
                description: The adjustment's details.
                required:
                  - item
                properties:
                  item:
                    type: object
                    title: item
                    description: The details of the item that the adjustment belongs to.
            description: The adjustment's details.
        cart:
          type: object
        cart_id:
          type: string
          title: cart_id
          description: The ID of the cart that the line item belongs to.
        metadata:
          type: object
          description: The item's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          title: created_at
          description: The date the item was created.
          format: date-time
        updated_at:
          type: string
          title: updated_at
          description: The date the item was updated.
          format: date-time
        deleted_at:
          type: string
          title: deleted_at
          description: The date the item was deleted.
          format: date-time
        original_total:
          type: number
          title: original_total
          description: The line item's original total before discounts, including taxes. This field is only available if you expand the `items.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-cart-item-totals) guide.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The line item's original subtotal before discounts, excluding taxes. This field is only available if you expand the `items.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-cart-item-totals) guide.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The line item's original tax total before discounts. This field is only available if you expand the `items.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-cart-item-totals) guide.
        item_total:
          type: number
          title: item_total
          description: The line item's total after discounts, including taxes. This field is only available if you expand the `items.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-cart-item-totals) guide.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The line item's subtotal before discounts, excluding taxes. This field is only available if you expand the `items.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-cart-item-totals) guide.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The line item's tax total after discounts. This field is only available if you expand the `items.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-cart-item-totals) guide.
        total:
          type: number
          title: total
          description: The line item's total after discounts, including taxes. This field is only available if you expand the `items.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-cart-item-totals) guide.
        subtotal:
          type: number
          title: subtotal
          description: The line item's subtotal before discounts, excluding taxes. This field is only available if you expand the `items.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-cart-item-totals) guide.
        tax_total:
          type: number
          title: tax_total
          description: The line item's tax total after discounts. This field is only available if you expand the `items.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-cart-item-totals) guide.
        discount_total:
          type: number
          title: discount_total
          description: The total amount of discounts applied to the line item, including the tax portion of discounts. This field is only available if you expand the `items.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-cart-item-totals) guide.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The total amount of discounts applied to the line item's tax. Represents the tax portion of discounts. This field is only available if you expand the `items.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-cart-item-totals) guide.
    StoreCartPromotion:
      type: object
      description: The promotion's promotions.
      x-schemaName: StoreCartPromotion
      required:
        - id
      properties:
        id:
          type: string
          title: id
          description: The promotion's ID.
        code:
          type: string
          title: code
          description: The promotion's code.
        is_automatic:
          type: boolean
          title: is_automatic
          description: The promotion's is automatic.
        application_method:
          type: object
          description: The promotion's application method.
          required:
            - value
            - type
            - currency_code
          properties:
            value:
              type: string
              title: value
              description: The application method's value.
            type:
              type: string
              description: The application method's type.
              enum:
                - fixed
                - percentage
            currency_code:
              type: string
              title: currency_code
              description: The application method's currency code.
    StoreCartRemovePromotion:
      type: object
      description: The promotion code to remove from the cart.
      x-schemaName: StoreCartRemovePromotion
      required:
        - promo_codes
      properties:
        promo_codes:
          type: array
          description: The promotion code to remove from the cart.
          items:
            type: string
            title: promo_codes
            description: A promotion code to remove from the cart.
    StoreCartResponse:
      type: object
      description: The cart's details.
      x-schemaName: StoreCartResponse
      required:
        - cart
      properties:
        cart:
          $ref: '#/components/schemas/StoreCart'
    StoreCartShippingMethod:
      type: object
      description: A cart's shipping method.
      x-schemaName: StoreCartShippingMethod
      required:
        - id
        - cart_id
        - name
        - amount
        - is_tax_inclusive
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The shipping method's ID.
        cart_id:
          type: string
          title: cart_id
          description: The ID of the cart this shipping method belongs to.
        name:
          type: string
          title: name
          description: The shipping method's name.
        description:
          type: string
          title: description
          description: The shipping method's description.
        amount:
          type: number
          title: amount
          description: The shipping method's amount.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the shipping method's amount is tax inclusive.
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the shipping option this method was created from.
        data:
          type: object
          description: The shipping method's data, useful for fulfillment handling by third-party services.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/cart/concepts#data-property
        metadata:
          type: object
          description: The shipping method's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        tax_lines:
          type: array
          description: The shipping method's tax lines.
          items:
            allOf:
              - type: object
                description: The tax line's details
                x-schemaName: BaseShippingMethodTaxLine
                required:
                  - shipping_method
                  - shipping_method_id
                  - total
                  - subtotal
                  - id
                  - code
                  - rate
                  - created_at
                  - updated_at
                properties:
                  shipping_method:
                    type: object
                    title: shipping_method
                    description: The details of the method that the tax line belongs to.
                  shipping_method_id:
                    type: string
                    title: shipping_method_id
                    description: The ID of the shipping method this tax line belongs to.
                  total:
                    type: number
                    title: total
                    description: The method's total including taxes and promotions.
                  subtotal:
                    type: number
                    title: subtotal
                    description: The method's total excluding taxes, including promotions.
                  id:
                    type: string
                    title: id
                    description: The tax line's ID.
                  description:
                    type: string
                    title: description
                    description: The tax line's description.
                  tax_rate_id:
                    type: string
                    title: tax_rate_id
                    description: The ID of the applied tax rate.
                  code:
                    type: string
                    title: code
                    description: The code that the tax rate is identified by.
                  rate:
                    type: number
                    title: rate
                    description: The charged rate.
                  provider_id:
                    type: string
                    title: provider_id
                    description: The ID of the tax provider used to calculate the tax line.
                  created_at:
                    type: string
                    format: date-time
                    title: created_at
                    description: The date the tax line was created.
                  updated_at:
                    type: string
                    format: date-time
                    title: updated_at
                    description: The date the tax line was updated.
              - type: object
                description: The tax line's details.
                required:
                  - shipping_method
                properties:
                  shipping_method:
                    type: object
                    title: shipping_method
                    description: The details of the method that the tax line belongs to.
            description: The tax line's details.
        adjustments:
          type: array
          description: The shipping method's adjustments, such as applied promotions.
          items:
            allOf:
              - type: object
                description: The adjustment's details.
                x-schemaName: BaseShippingMethodAdjustment
                required:
                  - shipping_method
                  - shipping_method_id
                  - id
                  - amount
                  - cart_id
                  - created_at
                  - updated_at
                properties:
                  shipping_method:
                    type: object
                    title: shipping_method
                    description: The details of the method that the adjustment belongs to.
                  id:
                    type: string
                    title: id
                    description: The adjustment's ID.
                  code:
                    type: string
                    title: code
                    description: The adjustment's code.
                  amount:
                    type: number
                    title: amount
                    description: The adjustment's amount.
                  cart_id:
                    type: string
                    title: cart_id
                    description: The ID of the associated cart.
                  description:
                    type: string
                    title: description
                    description: The adjustment's description.
                  promotion_id:
                    type: string
                    title: promotion_id
                    description: The ID of the applied promotion.
                  provider_id:
                    type: string
                    title: provider_id
                    description: The adjustment's provider ID.
                  created_at:
                    type: string
                    format: date-time
                    title: created_at
                    description: The date the adjustment was created.
                  updated_at:
                    type: string
                    format: date-time
                    title: updated_at
                    description: The date the adjustment was updated.
              - type: object
                description: The adjustment's details.
                required:
                  - shipping_method
                properties:
                  shipping_method:
                    type: object
                    title: shipping_method
                    description: The details of the method that the adjustment belongs to.
            description: The adjustment's details.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the shipping method was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the shipping method was updated.
        original_total:
          type: number
          title: original_total
          description: The shipping method's original total before discounts, including taxes. This field is only available if you expand the `shipping_methods.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-shipping-method-totals) guide.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The shipping method's original subtotal before discounts, excluding taxes. This field is only available if you expand the `shipping_methods.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-shipping-method-totals) guide.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The shipping method's original tax total before discounts. This field is only available if you expand the `shipping_methods.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-shipping-method-totals) guide.
        total:
          type: number
          title: total
          description: The shipping method's total after discounts, including taxes. This field is only available if you expand the `shipping_methods.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-shipping-method-totals) guide.
        subtotal:
          type: number
          title: subtotal
          description: The shipping method's subtotal before discounts, excluding taxes. This field is only available if you expand the `shipping_methods.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-shipping-method-totals) guide.
        tax_total:
          type: number
          title: tax_total
          description: The shipping method's tax total after discounts. This field is only available if you expand the `shipping_methods.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-shipping-method-totals) guide.
        discount_total:
          type: number
          title: discount_total
          description: The total amount of discounts applied to the shipping method, including the tax portion of discounts. This field is only available if you expand the `shipping_methods.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-shipping-method-totals) guide.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The total amount of discounts applied to the shipping method's tax. Represents the tax portion of discounts. This field is only available if you expand the `shipping_methods.*` relation. Learn more in the [Cart Totals](https://docs.medusajs.com/resources/storefront-development/cart/totals#retrieve-and-show-shipping-method-totals) guide.
    StoreCartShippingOption:
      type: object
      description: The shipping option's details.
      x-schemaName: StoreCartShippingOption
      required:
        - id
        - name
        - price_type
        - service_zone_id
        - shipping_profile_id
        - provider_id
        - data
        - type
        - provider
        - amount
        - prices
        - calculated_price
        - insufficient_inventory
      properties:
        id:
          type: string
          title: id
          description: The shipping option's ID.
        name:
          type: string
          title: name
          description: The shipping option's name.
        price_type:
          type: string
          description: The shipping option's price type. If it's `flat`, the price is fixed and is set in the `prices` property. If it's `calculated`, the price is calculated on checkout by the associated fulfillment provider.
          enum:
            - flat
            - calculated
        service_zone_id:
          type: string
          title: service_zone_id
          description: The ID of the service zone the shipping option belongs to.
        provider_id:
          type: string
          title: provider_id
          description: The ID of the fulfillment provider handling this option.
        provider:
          type: object
          description: The fulfillment provider's details.
          required:
            - id
            - is_enabled
          properties:
            id:
              type: string
              title: id
              description: The provider's ID.
            is_enabled:
              type: boolean
              title: is_enabled
              description: Whether the provider is enabled.
        type:
          type: object
          description: The shipping option type's details.
          required:
            - id
            - label
            - description
            - code
          properties:
            id:
              type: string
              title: id
              description: The type's ID.
            label:
              type: string
              title: label
              description: The type's label.
            description:
              type: string
              title: description
              description: The type's description.
            code:
              type: string
              title: code
              description: The type's code.
        shipping_profile_id:
          type: string
          title: shipping_profile_id
          description: The ID of the associated shipping profile.
        amount:
          type: number
          title: amount
          description: The shipping option's amount.
        data:
          type: object
          description: The shipping option's data, useful for the provider handling fulfillment.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#data-property
        prices:
          type: array
          description: The shipping option's prices.
          items:
            $ref: '#/components/schemas/StorePrice'
        calculated_price:
          $ref: '#/components/schemas/StoreCalculatedPrice'
        insufficient_inventory:
          type: boolean
          title: insufficient_inventory
          description: Whether the shipping option's location doesn't have sufficient quantity for any of the cart's items.
    StoreClaimStoreCreditAccountParams:
      type: object
      description: The details of claiming the credit.
      x-schemaName: StoreClaimStoreCreditAccountParams
      required:
        - code
      properties:
        code:
          type: string
          title: code
          description: The code of the store credit account to claim.
    StoreClaimStoreCreditAccountResponse:
      type: object
      description: The claimed store credit account's details.
      x-schemaName: StoreClaimStoreCreditAccountResponse
      required:
        - store_credit_account
      properties:
        store_credit_account:
          $ref: '#/components/schemas/StoreStoreCreditAccount'
    StoreCollection:
      type: object
      description: The collection's details.
      x-schemaName: StoreCollection
      required:
        - title
        - id
        - metadata
        - created_at
        - updated_at
        - handle
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The collection's ID.
        title:
          type: string
          title: title
          description: The collection's title.
        handle:
          type: string
          title: handle
          description: The collection's handle.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the collection was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the collection was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the collection was deleted.
        products:
          type: array
          description: The collection's products.
          items:
            type: object
        metadata:
          type: object
          description: The collection's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
    StoreCollectionResponse:
      type: object
      description: The collection's details.
      x-schemaName: StoreCollectionResponse
      required:
        - collection
      properties:
        collection:
          $ref: '#/components/schemas/StoreCollection'
    StoreCreateCart:
      type: object
      description: The details of the cart to be created.
      x-schemaName: StoreCreateCart
      properties:
        region_id:
          type: string
          title: region_id
          description: The ID of the cart's region. This affects the prices and currency of the cart.
        shipping_address:
          $ref: '#/components/schemas/StoreCartAddress'
        billing_address:
          $ref: '#/components/schemas/StoreCartAddress'
        email:
          type: string
          title: email
          description: The email of the cart's customer.
          format: email
        currency_code:
          type: string
          title: currency_code
          description: The cart's currency code. If not provided, the region's currency is used. This affects prices in the cart, as well.
          example: usd
        items:
          type: array
          description: The cart's items.
          items:
            $ref: '#/components/schemas/StoreCartLineItem'
        sales_channel_id:
          type: string
          title: sales_channel_id
          description: The ID of the sales channel that cart is created in. Only products available in that sales channel can be added to the cart. If not provided, the store's default sales channel is associated with the cart instead.
        metadata:
          type: object
          description: The cart's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
    StoreCreateCustomer:
      type: object
      description: The details of the customer to create.
      x-schemaName: StoreCreateCustomer
      required:
        - email
      properties:
        email:
          type: string
          title: email
          description: The customer's email.
          format: email
        company_name:
          type: string
          title: company_name
          description: The customer's company name.
        first_name:
          type: string
          title: first_name
          description: The customer's first name.
        last_name:
          type: string
          title: last_name
          description: The customer's last name.
        phone:
          type: string
          title: phone
          description: The customer's phone.
        metadata:
          type: object
          description: The customer's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
    StoreCreateCustomerAddress:
      type: object
      description: The address's details.
      properties:
        first_name:
          type: string
          title: first_name
          description: The customer's first name.
        last_name:
          type: string
          title: last_name
          description: The customer's last name.
        phone:
          type: string
          title: phone
          description: The customer's phone.
        company:
          type: string
          title: company
          description: The address's company.
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        city:
          type: string
          title: city
          description: The address's city.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
        province:
          type: string
          title: province
          description: The address's ISO 3166-2 province code. Must be lower-case.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        address_name:
          type: string
          title: address_name
          description: The address's name.
        is_default_shipping:
          type: boolean
          title: is_default_shipping
          description: Whether the address is used by default for shipping during checkout.
        is_default_billing:
          type: boolean
          title: is_default_billing
          description: Whether the address is used by default for billing during checkout.
        metadata:
          type: object
          description: Holds custom key-value pairs.
      x-schemaName: StoreCreateCustomerAddress
    StoreCreatePaymentCollection:
      type: object
      description: The details of the payment collection to create.
      x-schemaName: StoreCreatePaymentCollection
      required:
        - cart_id
      properties:
        cart_id:
          type: string
          title: cart_id
          description: The ID of the cart this payment collection is for.
    StoreCreateReturn:
      type: object
      description: The details of the return to create.
      x-schemaName: StoreCreateReturn
      required:
        - order_id
        - items
        - return_shipping
      properties:
        order_id:
          type: string
          title: order_id
          description: The ID of the order this return is created for.
        items:
          type: array
          description: The return's items.
          items:
            $ref: '#/components/schemas/StoreCreateReturnItem'
        return_shipping:
          $ref: '#/components/schemas/StoreCreateReturnShipping'
        note:
          type: string
          title: note
          description: A note with more details about the return.
        receive_now:
          type: boolean
          title: receive_now
          description: Whether to mark the return as received.
        location_id:
          type: string
          title: location_id
          description: The ID of the location that items are returned to.
    StoreCreateReturnItem:
      type: object
      description: The details of the line item to create.
      x-schemaName: StoreCreateReturnItem
      required:
        - id
        - quantity
      properties:
        id:
          type: string
          title: id
          description: The item's ID.
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        reason_id:
          type: string
          title: reason_id
          description: The ID of the associated return reason.
        note:
          type: string
          title: note
          description: A note with more details about the returned item.
    StoreCreateReturnShipping:
      type: object
      description: The return's shipping details.
      x-schemaName: StoreCreateReturnShipping
      required:
        - option_id
      properties:
        option_id:
          type: string
          title: option_id
          description: The ID of the shipping option to use.
        price:
          type: number
          title: price
          description: The shipping's price.
    StoreCurrency:
      type: object
      description: The currency's details.
      x-schemaName: StoreCurrency
      required:
        - code
        - symbol
        - symbol_native
        - name
        - decimal_digits
        - rounding
        - created_at
        - updated_at
        - deleted_at
      properties:
        code:
          type: string
          title: code
          description: The currency's code.
          example: usd
        symbol:
          type: string
          title: symbol
          description: The currency's symbol.
        symbol_native:
          type: string
          title: symbol_native
          description: The currency's symbol native.
        name:
          type: string
          title: name
          description: The currency's name.
        decimal_digits:
          type: number
          title: decimal_digits
          description: The currency's decimal digits.
        rounding:
          type: number
          title: rounding
          description: The currency's rounding.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the currency was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the currency was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the currency was deleted.
    StoreCurrencyListResponse:
      type: object
      description: The paginated list of currencies.
      x-schemaName: StoreCurrencyListResponse
      required:
        - limit
        - offset
        - count
        - currencies
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total count of items.
        currencies:
          type: array
          description: The list of currencies.
          items:
            $ref: '#/components/schemas/StoreCurrency'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    StoreCurrencyResponse:
      type: object
      description: The currency's details.
      x-schemaName: StoreCurrencyResponse
      required:
        - currency
      properties:
        currency:
          $ref: '#/components/schemas/StoreCurrency'
    StoreCustomer:
      type: object
      description: The customer's details.
      x-schemaName: StoreCustomer
      required:
        - addresses
        - id
        - email
        - company_name
        - first_name
        - last_name
        - default_billing_address_id
        - default_shipping_address_id
      properties:
        id:
          type: string
          title: id
          description: The customer's ID.
        email:
          type: string
          title: email
          description: The customer's email.
          format: email
        default_billing_address_id:
          type: string
          title: default_billing_address_id
          description: The ID of the address used for billing by default.
        default_shipping_address_id:
          type: string
          title: default_shipping_address_id
          description: The ID of the address used for shipping by default.
        company_name:
          type: string
          title: company_name
          description: The customer's company name.
        first_name:
          type: string
          title: first_name
          description: The customer's first name.
        last_name:
          type: string
          title: last_name
          description: The customer's last name.
        addresses:
          type: array
          description: The customer's addresses.
          items:
            $ref: '#/components/schemas/StoreCustomerAddress'
        phone:
          type: string
          title: phone
          description: The customer's phone.
        metadata:
          type: object
          description: The customer's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the customer was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the customer was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the customer was deleted.
    StoreCustomerAddress:
      type: object
      description: The customer address's details
      x-schemaName: StoreCustomerAddress
      required:
        - id
        - address_name
        - is_default_shipping
        - is_default_billing
        - customer_id
        - company
        - first_name
        - last_name
        - address_1
        - address_2
        - city
        - country_code
        - province
        - postal_code
        - phone
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The address's ID.
        address_name:
          type: string
          title: address_name
          description: The address's name.
        is_default_shipping:
          type: boolean
          title: is_default_shipping
          description: Whether the address is used for shipping by default.
        is_default_billing:
          type: boolean
          title: is_default_billing
          description: Whether the address is used for billing by default.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer the address belongs to.
        company:
          type: string
          title: company
          description: The address's company.
        first_name:
          type: string
          title: first_name
          description: The address's first name.
        last_name:
          type: string
          title: last_name
          description: The address's last name.
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        city:
          type: string
          title: city
          description: The address's city.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
          example: usd
        province:
          type: string
          title: province
          description: The address's lower-case ISO 3166-2 province code.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        phone:
          type: string
          title: phone
          description: The address's phone.
        metadata:
          type: object
          description: The address's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the address was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the address was updated.
    StoreCustomerAddressListResponse:
      type: object
      description: The paginated list of customer addresses.
      x-schemaName: StoreCustomerAddressListResponse
      required:
        - limit
        - offset
        - count
        - addresses
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        addresses:
          type: array
          description: The list of addresses.
          items:
            $ref: '#/components/schemas/StoreCustomerAddress'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    StoreCustomerAddressResponse:
      type: object
      description: The address's details.
      x-schemaName: StoreCustomerAddressResponse
      required:
        - address
      properties:
        address:
          $ref: '#/components/schemas/StoreCustomerAddress'
    StoreCustomerResponse:
      type: object
      description: The customer's details.
      x-schemaName: StoreCustomerResponse
      required:
        - customer
      properties:
        customer:
          $ref: '#/components/schemas/StoreCustomer'
    StoreDeclineOrderTransfer:
      type: object
      description: The details of declining the order transfer request.
      x-schemaName: StoreDeclineOrderTransfer
      required:
        - token
      properties:
        token:
          type: string
          title: token
          description: The order transfer's token issued when the transfer was requested.
    StoreGiftCard:
      type: object
      description: The gift card's details.
      x-schemaName: StoreGiftCard
      required:
        - customer
        - line_item
        - id
        - code
        - status
        - value
        - currency_code
        - customer_id
        - reference_id
        - note
        - reference
        - expires_at
        - created_at
        - updated_at
      properties:
        customer:
          $ref: '#/components/schemas/StoreCustomer'
        line_item:
          $ref: '#/components/schemas/StoreOrderLineItem'
        id:
          type: string
          title: id
          description: The gift card's ID.
        code:
          type: string
          title: code
          description: The gift card's code.
        status:
          type: string
          description: The gift card's status.
          enum:
            - pending
            - redeemed
        value:
          type: number
          title: value
          description: The gift card's amount.
        currency_code:
          type: string
          title: currency_code
          description: The gift card's currency code.
          example: usd
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that the gift card belongs to.
        reference_id:
          type: string
          title: reference_id
          description: The gift card's reference ID.
        note:
          type: string
          title: note
          description: A note with more information about the gift card.
        reference:
          type: string
          title: reference
          description: The gift card's reference.
        expires_at:
          type: string
          title: expires_at
          description: The date the gift card expires.
          format: date-time
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the gift card was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the gift card was updated.
    StoreInitializePaymentSession:
      type: object
      description: The payment session's details.
      required:
        - provider_id
      properties:
        provider_id:
          type: string
          title: provider_id
          description: The ID of the payment provider the customer chose.
          example: pp_stripe_stripe
        data:
          type: object
          description: Any data necessary for the payment provider to process the payment.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/payment/payment-session#data-property
            description: Learn more about the payment session's data property
      x-schemaName: StoreInitializePaymentSession
    StoreLocale:
      type: object
      description: The store locale's details.
      x-schemaName: StoreLocale
      required:
        - code
        - name
      properties:
        code:
          type: string
          title: code
          description: The locale's code in [BCP 47 format](https://gist.github.com/typpo/b2b828a35e683b9bf8db91b5404f1bd1).
          example: en-US
        name:
          type: string
          title: name
          description: The locale's display name.
          example: English (United States)
    StoreLocaleListResponse:
      type: object
      description: The list of supported locales in the store.
      x-schemaName: StoreLocaleListResponse
      required:
        - locales
      properties:
        locales:
          type: array
          description: The list of supported locales in the store.
          items:
            $ref: '#/components/schemas/StoreLocale'
    StoreOrder:
      type: object
      description: The order's details.
      x-schemaName: StoreOrder
      required:
        - items
        - shipping_methods
        - status
        - id
        - region_id
        - customer_id
        - sales_channel_id
        - email
        - currency_code
        - payment_status
        - fulfillment_status
        - summary
        - created_at
        - updated_at
        - original_item_total
        - original_item_subtotal
        - original_item_tax_total
        - item_total
        - item_subtotal
        - item_tax_total
        - item_discount_total
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - gift_card_total
        - gift_card_tax_total
        - shipping_total
        - shipping_subtotal
        - shipping_tax_total
        - shipping_discount_total
        - original_shipping_total
        - original_shipping_subtotal
        - original_shipping_tax_total
        - credit_line_total
      properties:
        id:
          type: string
          title: id
          description: The order's ID.
        region_id:
          type: string
          title: region_id
          description: The ID of the associated region.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that placed the order.
        sales_channel_id:
          type: string
          title: sales_channel_id
          description: The ID of the sales channel the order was placed in.
        email:
          type: string
          title: email
          description: The email of the customer that placed the order.
          format: email
        currency_code:
          type: string
          title: currency_code
          description: The order's currency code.
          example: usd
        display_id:
          type: number
          title: display_id
          description: The order's display ID.
        shipping_address:
          $ref: '#/components/schemas/StoreOrderAddress'
        billing_address:
          $ref: '#/components/schemas/StoreOrderAddress'
        items:
          type: array
          description: The order's items.
          items:
            $ref: '#/components/schemas/StoreOrderLineItem'
        shipping_methods:
          type: array
          description: The order's shipping methods.
          items:
            $ref: '#/components/schemas/StoreOrderShippingMethod'
        payment_collections:
          type: array
          description: The order's payment collections.
          items:
            $ref: '#/components/schemas/StorePaymentCollection'
        payment_status:
          type: string
          description: The order's payment status.
          enum:
            - canceled
            - not_paid
            - awaiting
            - authorized
            - partially_authorized
            - captured
            - partially_captured
            - partially_refunded
            - refunded
            - requires_action
        fulfillments:
          type: array
          description: The order's fulfillments.
          items:
            $ref: '#/components/schemas/StoreOrderFulfillment'
        fulfillment_status:
          type: string
          description: The order's fulfillment status.
          enum:
            - canceled
            - not_fulfilled
            - partially_fulfilled
            - fulfilled
            - partially_shipped
            - shipped
            - partially_delivered
            - delivered
        summary:
          $ref: '#/components/schemas/BaseOrderSummary'
        metadata:
          type: object
          description: The order's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the order was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the order was updated.
        original_item_total:
          type: number
          title: original_item_total
          description: The sum of all line items' original totals before discounts, including taxes.
        original_item_subtotal:
          type: number
          title: original_item_subtotal
          description: The sum of all line items' original subtotals before discounts, excluding taxes.
        original_item_tax_total:
          type: number
          title: original_item_tax_total
          description: The sum of all line items' original tax totals before discounts.
        item_total:
          type: number
          title: item_total
          description: The sum of all line items' totals after discounts, including taxes.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The sum of all line items' subtotals before discounts, excluding taxes.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The sum of all line items' tax totals after discounts.
        original_total:
          type: number
          title: original_total
          description: The order's total before discounts, including taxes. Calculated as the sum of `original_item_total` and `original_shipping_total`.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The order's subtotal before discounts, excluding taxes. Calculated as the sum of `original_item_subtotal` and `original_shipping_subtotal`.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The order's tax total before discounts. Calculated as the sum of `original_item_tax_total` and `original_shipping_tax_total`.
        total:
          type: number
          title: total
          description: The order's final total after discounts and credit lines, including taxes.
        subtotal:
          type: number
          title: subtotal
          description: The order's subtotal before discounts, excluding taxes. Calculated as the sum of `item_subtotal` and `shipping_subtotal`.
        tax_total:
          type: number
          title: tax_total
          description: The order's tax total after discounts. Calculated as the sum of `item_tax_total` and `shipping_tax_total`.
        discount_total:
          type: number
          title: discount_total
          description: The total amount of discounts applied to the order, including the tax portion of discounts.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The total amount of discounts applied to the order's tax. Represents the tax portion of discounts.
        gift_card_total:
          type: number
          title: gift_card_total
          description: The order's gift card total.
        gift_card_tax_total:
          type: number
          title: gift_card_tax_total
          description: The total taxes applied on the gift card's amount.
        shipping_total:
          type: number
          title: shipping_total
          description: The sum of all shipping methods' totals after discounts, including taxes.
        shipping_subtotal:
          type: number
          title: shipping_subtotal
          description: The sum of all shipping methods' subtotals before discounts, excluding taxes.
        shipping_tax_total:
          type: number
          title: shipping_tax_total
          description: The sum of all shipping methods' tax totals after discounts.
        original_shipping_total:
          type: number
          title: original_shipping_total
          description: The sum of all shipping methods' original totals before discounts, including taxes.
        original_shipping_subtotal:
          type: number
          title: original_shipping_subtotal
          description: The sum of all shipping methods' original subtotals before discounts, excluding taxes.
        original_shipping_tax_total:
          type: number
          title: original_shipping_tax_total
          description: The sum of all shipping methods' original tax totals before discounts.
        customer:
          $ref: '#/components/schemas/StoreCustomer'
        transactions:
          type: array
          description: The order's transactions.
          items:
            $ref: '#/components/schemas/BaseOrderTransaction'
        status:
          type: string
          title: status
          description: The order's status.
        credit_line_total:
          type: number
          title: credit_line_total
          description: The total amount of credit lines applied to the order, including taxes. Subtracted from the final total.
        item_discount_total:
          type: number
          title: item_discount_total
          description: The sum of all discounts applied to line items, including the tax portion of discounts.
        shipping_discount_total:
          type: number
          title: shipping_discount_total
          description: The sum of all discounts applied to shipping methods, including the tax portion of discounts.
        custom_display_id:
          type: string
          title: custom_display_id
          description: The custom display ID of the order.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/order/custom-display-id
    StoreOrderAddress:
      type: object
      description: An order address
      x-schemaName: StoreOrderAddress
      required:
        - id
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The address's ID.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer this address belongs to.
        first_name:
          type: string
          title: first_name
          description: The address's first name.
        last_name:
          type: string
          title: last_name
          description: The address's last name.
        phone:
          type: string
          title: phone
          description: The address's phone.
        company:
          type: string
          title: company
          description: The address's company.
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        city:
          type: string
          title: city
          description: The address's city.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
          example: us
        country:
          $ref: '#/components/schemas/StoreRegionCountry'
        province:
          type: string
          title: province
          description: The address's lower-case ISO 3166-2 province code.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        metadata:
          type: object
          description: The address's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the address was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the address was updated.
    StoreOrderFulfillment:
      type: object
      description: The fulfillment's details.
      x-schemaName: StoreOrderFulfillment
      required:
        - id
        - location_id
        - packed_at
        - shipped_at
        - delivered_at
        - canceled_at
        - requires_shipping
        - data
        - provider_id
        - shipping_option_id
        - metadata
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The fulfillment's ID.
        location_id:
          type: string
          title: location_id
          description: The ID of the location the items are fulfilled from.
        packed_at:
          type: string
          title: packed_at
          description: The date the items were packed.
          format: date-time
        shipped_at:
          type: string
          title: shipped_at
          description: The date the items were shipped.
          format: date-time
        delivered_at:
          type: string
          title: delivered_at
          description: The date the items were delivered.
          format: date-time
        canceled_at:
          type: string
          title: canceled_at
          description: The date the items were canceled.
          format: date-time
        data:
          type: object
          description: Data useful for the fulfillment provider handling it. This is taken from the associated shipping option.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#data-property
        provider_id:
          type: string
          title: provider_id
          description: The ID of the fulfillment provider used to handle the fulfillment.
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the associated shipping option.
        metadata:
          type: object
          description: The fulfillment's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the fulfillment was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the fulfillment was updated.
        requires_shipping:
          type: boolean
          title: requires_shipping
          description: The fulfillment's requires shipping.
    StoreOrderLineItem:
      type: object
      description: The item's details.
      x-schemaName: StoreOrderLineItem
      required:
        - detail
        - title
        - id
        - metadata
        - created_at
        - updated_at
        - item_total
        - item_subtotal
        - item_tax_total
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - subtitle
        - thumbnail
        - variant_id
        - product_id
        - product_title
        - product_description
        - product_subtitle
        - product_type_id
        - product_type
        - product_collection
        - product_handle
        - variant_sku
        - variant_barcode
        - variant_title
        - variant_option_values
        - requires_shipping
        - is_discountable
        - is_tax_inclusive
        - unit_price
        - quantity
        - refundable_total
        - refundable_total_per_unit
      properties:
        id:
          type: string
          title: id
          description: The item's ID.
        title:
          type: string
          title: title
          description: The item's title.
        subtitle:
          type: string
          title: subtitle
          description: The item's subtitle.
        thumbnail:
          type: string
          title: thumbnail
          description: The URL of the item's thumbnail.
        variant:
          $ref: '#/components/schemas/StoreProductVariant'
        variant_id:
          type: string
          title: variant_id
          description: The ID of the associated variant.
        product:
          $ref: '#/components/schemas/StoreProduct'
        product_id:
          type: string
          title: product_id
          description: The ID of the associated product.
        product_title:
          type: string
          title: product_title
          description: The item's product title.
        product_description:
          type: string
          title: product_description
          description: The item's product description.
        product_subtitle:
          type: string
          title: product_subtitle
          description: The item's product subtitle.
        product_type:
          type: string
          title: product_type
          description: The item's product type.
        product_collection:
          type: string
          title: product_collection
          description: The ID of the collection the item's product belongs to.
        product_handle:
          type: string
          title: product_handle
          description: The item's product handle.
        variant_sku:
          type: string
          title: variant_sku
          description: The item's variant SKU.
        variant_barcode:
          type: string
          title: variant_barcode
          description: The item's variant barcode.
        variant_title:
          type: string
          title: variant_title
          description: The item's variant title.
        variant_option_values:
          type: object
          description: The values of the item variant's options.
          example:
            Color: Blue
        requires_shipping:
          type: boolean
          title: requires_shipping
          description: Whether the item requires shipping.
        is_discountable:
          type: boolean
          title: is_discountable
          description: Whether the item is discountable.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the item is tax inclusive.
        compare_at_unit_price:
          type: number
          title: compare_at_unit_price
          description: The original price of the item before a promotion or sale.
        unit_price:
          type: number
          title: unit_price
          description: The item's unit price.
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        tax_lines:
          type: array
          description: The item's tax lines.
          items:
            allOf:
              - type: object
                description: The tax line's tax lines.
                x-schemaName: BaseOrderLineItemTaxLine
                required:
                  - item
                  - item_id
                  - total
                  - subtotal
                  - id
                  - code
                  - rate
                  - created_at
                  - updated_at
                properties:
                  item:
                    type: object
                    description: The tax line's item.
                    x-schemaName: BaseOrderLineItem
                    required:
                      - id
                      - title
                      - subtitle
                      - thumbnail
                      - variant_id
                      - product_id
                      - product_title
                      - product_description
                      - product_subtitle
                      - product_type
                      - product_collection
                      - product_handle
                      - variant_sku
                      - variant_barcode
                      - variant_title
                      - variant_option_values
                      - requires_shipping
                      - is_discountable
                      - is_tax_inclusive
                      - unit_price
                      - quantity
                      - detail
                      - created_at
                      - updated_at
                      - metadata
                      - original_total
                      - original_subtotal
                      - original_tax_total
                      - item_total
                      - item_subtotal
                      - item_tax_total
                      - total
                      - subtotal
                      - tax_total
                      - discount_total
                      - discount_tax_total
                      - refundable_total
                      - refundable_total_per_unit
                    properties:
                      id:
                        type: string
                        title: id
                        description: The item's ID.
                      title:
                        type: string
                        title: title
                        description: The item's title.
                      subtitle:
                        type: string
                        title: subtitle
                        description: The item's subtitle.
                      thumbnail:
                        type: string
                        title: thumbnail
                        description: The item's thumbnail.
                      variant:
                        type: object
                        description: The item's variant.
                        x-schemaName: BaseProductVariant
                        required:
                          - id
                          - title
                          - sku
                          - barcode
                          - ean
                          - upc
                          - allow_backorder
                          - manage_inventory
                          - hs_code
                          - origin_country
                          - mid_code
                          - material
                          - weight
                          - length
                          - height
                          - width
                          - options
                          - created_at
                          - updated_at
                          - deleted_at
                        properties:
                          id:
                            type: string
                            title: id
                            description: The variant's ID.
                          title:
                            type: string
                            title: title
                            description: The variant's title.
                          sku:
                            type: string
                            title: sku
                            description: The variant's sku.
                          barcode:
                            type: string
                            title: barcode
                            description: The variant's barcode.
                          ean:
                            type: string
                            title: ean
                            description: The variant's ean.
                          upc:
                            type: string
                            title: upc
                            description: The variant's upc.
                          allow_backorder:
                            type: boolean
                            title: allow_backorder
                            description: The variant's allow backorder.
                          manage_inventory:
                            type: boolean
                            title: manage_inventory
                            description: The variant's manage inventory.
                          inventory_quantity:
                            type: number
                            title: inventory_quantity
                            description: The variant's inventory quantity.
                          hs_code:
                            type: string
                            title: hs_code
                            description: The variant's hs code.
                          origin_country:
                            type: string
                            title: origin_country
                            description: The variant's origin country.
                          mid_code:
                            type: string
                            title: mid_code
                            description: The variant's mid code.
                          material:
                            type: string
                            title: material
                            description: The variant's material.
                          weight:
                            type: number
                            title: weight
                            description: The variant's weight.
                          length:
                            type: number
                            title: length
                            description: The variant's length.
                          height:
                            type: number
                            title: height
                            description: The variant's height.
                          width:
                            type: number
                            title: width
                            description: The variant's width.
                          variant_rank:
                            type: number
                            title: variant_rank
                            description: The variant's variant rank.
                          options:
                            type: array
                            description: The variant's options.
                            items:
                              type: object
                              description: The option's options.
                              x-schemaName: BaseProductOptionValue
                          product:
                            type: object
                            description: The variant's product.
                            x-schemaName: BaseProduct
                          product_id:
                            type: string
                            title: product_id
                            description: The variant's product id.
                          calculated_price:
                            type: object
                            description: The variant's calculated price.
                            x-schemaName: BaseCalculatedPriceSet
                          created_at:
                            type: string
                            format: date-time
                            title: created_at
                            description: The variant's created at.
                          updated_at:
                            type: string
                            format: date-time
                            title: updated_at
                            description: The variant's updated at.
                          deleted_at:
                            type: string
                            format: date-time
                            title: deleted_at
                            description: The variant's deleted at.
                          metadata:
                            type: object
                            description: The variant's metadata.
                            externalDocs:
                              url: https://docs.medusajs.com/api/store#manage-metadata
                              description: Learn how to manage metadata
                      variant_id:
                        type: string
                        title: variant_id
                        description: The item's variant id.
                      product:
                        type: object
                        description: The item's product.
                        x-schemaName: BaseProduct
                        required:
                          - id
                          - title
                          - handle
                          - subtitle
                          - description
                          - is_giftcard
                          - status
                          - thumbnail
                          - width
                          - weight
                          - length
                          - height
                          - origin_country
                          - hs_code
                          - mid_code
                          - material
                          - collection_id
                          - type_id
                          - variants
                          - options
                          - images
                          - discountable
                          - external_id
                          - created_at
                          - updated_at
                          - deleted_at
                        properties:
                          id:
                            type: string
                            title: id
                            description: The product's ID.
                          title:
                            type: string
                            title: title
                            description: The product's title.
                          handle:
                            type: string
                            title: handle
                            description: The product's handle.
                          subtitle:
                            type: string
                            title: subtitle
                            description: The product's subtitle.
                          description:
                            type: string
                            title: description
                            description: The product's description.
                          is_giftcard:
                            type: boolean
                            title: is_giftcard
                            description: The product's is giftcard.
                          status:
                            type: string
                            description: The product's status.
                            enum:
                              - draft
                              - proposed
                              - published
                              - rejected
                          thumbnail:
                            type: string
                            title: thumbnail
                            description: The product's thumbnail.
                          width:
                            type: number
                            title: width
                            description: The product's width.
                          weight:
                            type: number
                            title: weight
                            description: The product's weight.
                          length:
                            type: number
                            title: length
                            description: The product's length.
                          height:
                            type: number
                            title: height
                            description: The product's height.
                          origin_country:
                            type: string
                            title: origin_country
                            description: The product's origin country.
                          hs_code:
                            type: string
                            title: hs_code
                            description: The product's hs code.
                          mid_code:
                            type: string
                            title: mid_code
                            description: The product's mid code.
                          material:
                            type: string
                            title: material
                            description: The product's material.
                          collection:
                            type: object
                            description: The product's collection.
                            x-schemaName: BaseCollection
                          collection_id:
                            type: string
                            title: collection_id
                            description: The product's collection id.
                          categories:
                            type: array
                            description: The product's categories.
                            items:
                              type: object
                              description: The category's categories.
                              x-schemaName: BaseProductCategory
                          type:
                            type: object
                            description: The product's type.
                            x-schemaName: BaseProduct
                          type_id:
                            type: string
                            title: type_id
                            description: The product's type id.
                          tags:
                            type: array
                            description: The product's tags.
                            items:
                              type: object
                              description: The tag's tags.
                              x-schemaName: BaseProductTag
                          variants:
                            type: array
                            description: The product's variants.
                            items:
                              type: object
                              description: The variant's variants.
                              x-schemaName: BaseProductVariant
                          options:
                            type: array
                            description: The product's options.
                            items:
                              type: object
                              description: The option's options.
                              x-schemaName: BaseProductOption
                          images:
                            type: array
                            description: The product's images.
                            items:
                              type: object
                              description: The image's images.
                              x-schemaName: BaseProductImage
                          discountable:
                            type: boolean
                            title: discountable
                            description: The product's discountable.
                          external_id:
                            type: string
                            title: external_id
                            description: The product's external id.
                          created_at:
                            type: string
                            format: date-time
                            title: created_at
                            description: The product's created at.
                          updated_at:
                            type: string
                            format: date-time
                            title: updated_at
                            description: The product's updated at.
                          deleted_at:
                            type: string
                            format: date-time
                            title: deleted_at
                            description: The product's deleted at.
                          metadata:
                            type: object
                            description: The product's metadata.
                            externalDocs:
                              url: https://docs.medusajs.com/api/store#manage-metadata
                              description: Learn how to manage metadata
                      product_id:
                        type: string
                        title: product_id
                        description: The item's product id.
                      product_title:
                        type: string
                        title: product_title
                        description: The item's product title.
                      product_description:
                        type: string
                        title: product_description
                        description: The item's product description.
                      product_subtitle:
                        type: string
                        title: product_subtitle
                        description: The item's product subtitle.
                      product_type:
                        type: string
                        title: product_type
                        description: The item's product type.
                      product_collection:
                        type: string
                        title: product_collection
                        description: The item's product collection.
                      product_handle:
                        type: string
                        title: product_handle
                        description: The item's product handle.
                      variant_sku:
                        type: string
                        title: variant_sku
                        description: The item's variant sku.
                      variant_barcode:
                        type: string
                        title: variant_barcode
                        description: The item's variant barcode.
                      variant_title:
                        type: string
                        title: variant_title
                        description: The item's variant title.
                      variant_option_values:
                        type: object
                        description: The item's variant option values.
                      requires_shipping:
                        type: boolean
                        title: requires_shipping
                        description: The item's requires shipping.
                      is_discountable:
                        type: boolean
                        title: is_discountable
                        description: The item's is discountable.
                      is_tax_inclusive:
                        type: boolean
                        title: is_tax_inclusive
                        description: The item's is tax inclusive.
                      compare_at_unit_price:
                        type: number
                        title: compare_at_unit_price
                        description: The item's compare at unit price.
                      unit_price:
                        type: number
                        title: unit_price
                        description: The item's unit price.
                      quantity:
                        type: number
                        title: quantity
                        description: The item's quantity.
                      tax_lines:
                        type: array
                        description: The item's tax lines.
                        items:
                          type: object
                          description: The tax line's tax lines.
                          x-schemaName: BaseOrderLineItemTaxLine
                          required:
                            - item
                            - item_id
                            - total
                            - subtotal
                            - id
                            - code
                            - rate
                            - created_at
                            - updated_at
                          properties:
                            item:
                              type: object
                              description: The tax line's item.
                              x-schemaName: BaseOrderLineItem
                            item_id:
                              type: string
                              title: item_id
                              description: The tax line's item id.
                            total:
                              type: number
                              title: total
                              description: The tax line's total.
                            subtotal:
                              type: number
                              title: subtotal
                              description: The tax line's subtotal.
                            id:
                              type: string
                              title: id
                              description: The tax line's ID.
                            description:
                              type: string
                              title: description
                              description: The tax line's description.
                            tax_rate_id:
                              type: string
                              title: tax_rate_id
                              description: The tax line's tax rate id.
                            code:
                              type: string
                              title: code
                              description: The tax line's code.
                            rate:
                              type: number
                              title: rate
                              description: The tax line's rate.
                            provider_id:
                              type: string
                              title: provider_id
                              description: The tax line's provider id.
                            created_at:
                              type: string
                              format: date-time
                              title: created_at
                              description: The tax line's created at.
                            updated_at:
                              type: string
                              format: date-time
                              title: updated_at
                              description: The tax line's updated at.
                      adjustments:
                        type: array
                        description: The item's adjustments.
                        items:
                          type: object
                          description: The adjustment's adjustments.
                          x-schemaName: BaseOrderLineItemAdjustment
                          required:
                            - item
                            - item_id
                            - id
                            - amount
                            - order_id
                            - created_at
                            - updated_at
                          properties:
                            item:
                              type: object
                              description: The adjustment's item.
                              x-schemaName: BaseOrderLineItem
                            item_id:
                              type: string
                              title: item_id
                              description: The adjustment's item id.
                            id:
                              type: string
                              title: id
                              description: The adjustment's ID.
                            code:
                              type: string
                              title: code
                              description: The adjustment's code.
                            amount:
                              type: number
                              title: amount
                              description: The adjustment's amount.
                            order_id:
                              type: string
                              title: order_id
                              description: The adjustment's order id.
                            description:
                              type: string
                              title: description
                              description: The adjustment's description.
                            promotion_id:
                              type: string
                              title: promotion_id
                              description: The adjustment's promotion id.
                            provider_id:
                              type: string
                              title: provider_id
                              description: The adjustment's provider id.
                            created_at:
                              type: string
                              format: date-time
                              title: created_at
                              description: The adjustment's created at.
                            updated_at:
                              type: string
                              format: date-time
                              title: updated_at
                              description: The adjustment's updated at.
                      detail:
                        type: object
                        description: The item's detail.
                        x-schemaName: BaseOrderItemDetail
                        required:
                          - id
                          - item_id
                          - item
                          - quantity
                          - fulfilled_quantity
                          - delivered_quantity
                          - shipped_quantity
                          - return_requested_quantity
                          - return_received_quantity
                          - return_dismissed_quantity
                          - written_off_quantity
                          - metadata
                          - created_at
                          - updated_at
                        properties:
                          id:
                            type: string
                            title: id
                            description: The detail's ID.
                          item_id:
                            type: string
                            title: item_id
                            description: The detail's item id.
                          item:
                            type: object
                            description: The detail's item.
                            x-schemaName: BaseOrderLineItem
                          quantity:
                            type: number
                            title: quantity
                            description: The detail's quantity.
                          fulfilled_quantity:
                            type: number
                            title: fulfilled_quantity
                            description: The detail's fulfilled quantity.
                          delivered_quantity:
                            type: number
                            title: delivered_quantity
                            description: The detail's delivered quantity.
                          shipped_quantity:
                            type: number
                            title: shipped_quantity
                            description: The detail's shipped quantity.
                          return_requested_quantity:
                            type: number
                            title: return_requested_quantity
                            description: The detail's return requested quantity.
                          return_received_quantity:
                            type: number
                            title: return_received_quantity
                            description: The detail's return received quantity.
                          return_dismissed_quantity:
                            type: number
                            title: return_dismissed_quantity
                            description: The detail's return dismissed quantity.
                          written_off_quantity:
                            type: number
                            title: written_off_quantity
                            description: The detail's written off quantity.
                          metadata:
                            type: object
                            description: The detail's metadata.
                            externalDocs:
                              url: https://docs.medusajs.com/api/store#manage-metadata
                              description: Learn how to manage metadata
                          created_at:
                            type: string
                            format: date-time
                            title: created_at
                            description: The detail's created at.
                          updated_at:
                            type: string
                            format: date-time
                            title: updated_at
                            description: The detail's updated at.
                      created_at:
                        type: string
                        format: date-time
                        title: created_at
                        description: The item's created at.
                      updated_at:
                        type: string
                        format: date-time
                        title: updated_at
                        description: The item's updated at.
                      metadata:
                        type: object
                        description: The item's metadata.
                        externalDocs:
                          url: https://docs.medusajs.com/api/store#manage-metadata
                          description: Learn how to manage metadata
                      original_total:
                        type: number
                        title: original_total
                        description: The item's original total.
                      original_subtotal:
                        type: number
                        title: original_subtotal
                        description: The item's original subtotal.
                      original_tax_total:
                        type: number
                        title: original_tax_total
                        description: The item's original tax total.
                      item_total:
                        type: number
                        title: item_total
                        description: The item's item total.
                      item_subtotal:
                        type: number
                        title: item_subtotal
                        description: The item's item subtotal.
                      item_tax_total:
                        type: number
                        title: item_tax_total
                        description: The item's item tax total.
                      total:
                        type: number
                        title: total
                        description: The item's total.
                      subtotal:
                        type: number
                        title: subtotal
                        description: The item's subtotal.
                      tax_total:
                        type: number
                        title: tax_total
                        description: The item's tax total.
                      discount_total:
                        type: number
                        title: discount_total
                        description: The item's discount total.
                      discount_tax_total:
                        type: number
                        title: discount_tax_total
                        description: The item's discount tax total.
                      refundable_total:
                        type: number
                        title: refundable_total
                        description: The item's refundable total.
                      refundable_total_per_unit:
                        type: number
                        title: refundable_total_per_unit
                        description: The item's refundable total per unit.
                  item_id:
                    type: string
                    title: item_id
                    description: The tax line's item id.
                  total:
                    type: number
                    title: total
                    description: The tax line's total.
                  subtotal:
                    type: number
                    title: subtotal
                    description: The tax line's subtotal.
                  id:
                    type: string
                    title: id
                    description: The tax line's ID.
                  description:
                    type: string
                    title: description
                    description: The tax line's description.
                  tax_rate_id:
                    type: string
                    title: tax_rate_id
                    description: The tax line's tax rate id.
                  code:
                    type: string
                    title: code
                    description: The tax line's code.
                  rate:
                    type: number
                    title: rate
                    description: The tax line's rate.
                  provider_id:
                    type: string
                    title: provider_id
                    description: The tax line's provider id.
                  created_at:
                    type: string
                    format: date-time
                    title: created_at
                    description: The tax line's created at.
                  updated_at:
                    type: string
                    format: date-time
                    title: updated_at
                    description: The tax line's updated at.
              - type: object
                description: The tax line's tax lines.
                required:
                  - item
                properties:
                  item:
                    type: object
                    description: The tax line's item.
                    x-schemaName: StoreOrderLineItem
                    required:
                      - detail
                      - title
                      - id
                      - metadata
                      - created_at
                      - updated_at
                      - item_total
                      - item_subtotal
                      - item_tax_total
                      - original_total
                      - original_subtotal
                      - original_tax_total
                      - total
                      - subtotal
                      - tax_total
                      - discount_total
                      - discount_tax_total
                      - subtitle
                      - thumbnail
                      - variant_id
                      - product_id
                      - product_title
                      - product_description
                      - product_subtitle
                      - product_type
                      - product_collection
                      - product_handle
                      - variant_sku
                      - variant_barcode
                      - variant_title
                      - variant_option_values
                      - requires_shipping
                      - is_discountable
                      - is_tax_inclusive
                      - unit_price
                      - quantity
                      - refundable_total
                      - refundable_total_per_unit
                    properties:
                      variant:
                        type: object
                        description: The item's variant.
                        x-schemaName: StoreProductVariant
                        required:
                          - options
                          - length
                          - title
                          - id
                          - created_at
                          - updated_at
                          - width
                          - weight
                          - height
                          - origin_country
                          - hs_code
                          - mid_code
                          - material
                          - deleted_at
                          - sku
                          - barcode
                          - ean
                          - upc
                          - allow_backorder
                          - manage_inventory
                        properties:
                          options:
                            type: array
                            description: The variant's options.
                            items:
                              type: object
                              description: The option's options.
                              x-schemaName: StoreProductOptionValue
                          product:
                            type: object
                            description: The variant's product.
                            x-schemaName: StoreProduct
                          length:
                            type: number
                            title: length
                            description: The variant's length.
                          title:
                            type: string
                            title: title
                            description: The variant's title.
                          id:
                            type: string
                            title: id
                            description: The variant's ID.
                          metadata:
                            type: object
                            description: The variant's metadata.
                            externalDocs:
                              url: https://docs.medusajs.com/api/store#manage-metadata
                              description: Learn how to manage metadata
                          created_at:
                            type: string
                            format: date-time
                            title: created_at
                            description: The variant's created at.
                          updated_at:
                            type: string
                            format: date-time
                            title: updated_at
                            description: The variant's updated at.
                          product_id:
                            type: string
                            title: product_id
                            description: The variant's product id.
                          width:
                            type: number
                            title: width
                            description: The variant's width.
                          weight:
                            type: number
                            title: weight
                            description: The variant's weight.
                          height:
                            type: number
                            title: height
                            description: The variant's height.
                          origin_country:
                            type: string
                            title: origin_country
                            description: The variant's origin country.
                          hs_code:
                            type: string
                            title: hs_code
                            description: The variant's hs code.
                          mid_code:
                            type: string
                            title: mid_code
                            description: The variant's mid code.
                          material:
                            type: string
                            title: material
                            description: The variant's material.
                          deleted_at:
                            type: string
                            format: date-time
                            title: deleted_at
                            description: The variant's deleted at.
                          sku:
                            type: string
                            title: sku
                            description: The variant's sku.
                          barcode:
                            type: string
                            title: barcode
                            description: The variant's barcode.
                          ean:
                            type: string
                            title: ean
                            description: The variant's ean.
                          upc:
                            type: string
                            title: upc
                            description: The variant's upc.
                          allow_backorder:
                            type: boolean
                            title: allow_backorder
                            description: The variant's allow backorder.
                          manage_inventory:
                            type: boolean
                            title: manage_inventory
                            description: The variant's manage inventory.
                          inventory_quantity:
                            type: number
                            title: inventory_quantity
                            description: The variant's inventory quantity.
                          variant_rank:
                            type: number
                            title: variant_rank
                            description: The variant's variant rank.
                          calculated_price:
                            type: object
                            description: The variant's calculated price.
                            x-schemaName: BaseCalculatedPriceSet
                      product:
                        type: object
                        description: The item's product.
                        x-schemaName: StoreProduct
                        required:
                          - variants
                          - options
                          - images
                          - length
                          - title
                          - status
                          - description
                          - id
                          - created_at
                          - updated_at
                          - subtitle
                          - thumbnail
                          - handle
                          - is_giftcard
                          - width
                          - weight
                          - height
                          - origin_country
                          - hs_code
                          - mid_code
                          - material
                          - collection_id
                          - type_id
                          - discountable
                          - external_id
                          - deleted_at
                        properties:
                          collection:
                            type: object
                            description: The product's collection.
                            x-schemaName: StoreCollection
                          categories:
                            type: array
                            description: The product's categories.
                            items:
                              type: object
                              description: The category's categories.
                              x-schemaName: StoreProductCategory
                          variants:
                            type: array
                            description: The product's variants.
                            items:
                              type: object
                              description: The variant's variants.
                              x-schemaName: StoreProductVariant
                          type:
                            type: object
                            description: The product's type.
                            x-schemaName: StoreProduct
                          tags:
                            type: array
                            description: The product's tags.
                            items:
                              type: object
                              description: The tag's tags.
                              x-schemaName: StoreProductTag
                          options:
                            type: array
                            description: The product's options.
                            items:
                              type: object
                              description: The option's options.
                              x-schemaName: StoreProductOption
                          images:
                            type: array
                            description: The product's images.
                            items:
                              type: object
                              description: The image's images.
                              x-schemaName: StoreProductImage
                          length:
                            type: number
                            title: length
                            description: The product's length.
                          title:
                            type: string
                            title: title
                            description: The product's title.
                          status:
                            type: string
                            description: The product's status.
                            enum:
                              - draft
                              - proposed
                              - published
                              - rejected
                          description:
                            type: string
                            title: description
                            description: The product's description.
                          id:
                            type: string
                            title: id
                            description: The product's ID.
                          metadata:
                            type: object
                            description: The product's metadata.
                            externalDocs:
                              url: https://docs.medusajs.com/api/store#manage-metadata
                              description: Learn how to manage metadata
                          created_at:
                            type: string
                            format: date-time
                            title: created_at
                            description: The product's created at.
                          updated_at:
                            type: string
                            format: date-time
                            title: updated_at
                            description: The product's updated at.
                          subtitle:
                            type: string
                            title: subtitle
                            description: The product's subtitle.
                          thumbnail:
                            type: string
                            title: thumbnail
                            description: The product's thumbnail.
                          handle:
                            type: string
                            title: handle
                            description: The product's handle.
                          is_giftcard:
                            type: boolean
                            title: is_giftcard
                            description: The product's is giftcard.
                          width:
                            type: number
                            title: width
                            description: The product's width.
                          weight:
                            type: number
                            title: weight
                            description: The product's weight.
                          height:
                            type: number
                            title: height
                            description: The product's height.
                          origin_country:
                            type: string
                            title: origin_country
                            description: The product's origin country.
                          hs_code:
                            type: string
                            title: hs_code
                            description: The product's hs code.
                          mid_code:
                            type: string
                            title: mid_code
                            description: The product's mid code.
                          material:
                            type: string
                            title: material
                            description: The product's material.
                          collection_id:
                            type: string
                            title: collection_id
                            description: The product's collection id.
                          type_id:
                            type: string
                            title: type_id
                            description: The product's type id.
                          discountable:
                            type: boolean
                            title: discountable
                            description: The product's discountable.
                          external_id:
                            type: string
                            title: external_id
                            description: The product's external id.
                          deleted_at:
                            type: string
                            format: date-time
                            title: deleted_at
                            description: The product's deleted at.
                      tax_lines:
                        type: array
                        description: The item's tax lines.
                        items:
                          allOf:
                            - type: object
                              description: The tax line's tax lines.
                              x-schemaName: BaseOrderLineItemTaxLine
                              required:
                                - item
                                - item_id
                                - total
                                - subtotal
                                - id
                                - code
                                - rate
                                - created_at
                                - updated_at
                              properties:
                                item:
                                  type: object
                                  description: The tax line's item.
                                  x-schemaName: BaseOrderLineItem
                                item_id:
                                  type: string
                                  title: item_id
                                  description: The tax line's item id.
                                total:
                                  type: number
                                  title: total
                                  description: The tax line's total.
                                subtotal:
                                  type: number
                                  title: subtotal
                                  description: The tax line's subtotal.
                                id:
                                  type: string
                                  title: id
                                  description: The tax line's ID.
                                description:
                                  type: string
                                  title: description
                                  description: The tax line's description.
                                tax_rate_id:
                                  type: string
                                  title: tax_rate_id
                                  description: The tax line's tax rate id.
                                code:
                                  type: string
                                  title: code
                                  description: The tax line's code.
                                rate:
                                  type: number
                                  title: rate
                                  description: The tax line's rate.
                                provider_id:
                                  type: string
                                  title: provider_id
                                  description: The tax line's provider id.
                                created_at:
                                  type: string
                                  format: date-time
                                  title: created_at
                                  description: The tax line's created at.
                                updated_at:
                                  type: string
                                  format: date-time
                                  title: updated_at
                                  description: The tax line's updated at.
                            - type: object
                              description: The tax line's tax lines.
                              required:
                                - item
                              properties:
                                item:
                                  type: object
                                  description: The tax line's item.
                                  x-schemaName: StoreOrderLineItem
                      adjustments:
                        type: array
                        description: The item's adjustments.
                        items:
                          allOf:
                            - type: object
                              description: The adjustment's adjustments.
                              x-schemaName: BaseOrderLineItemAdjustment
                              required:
                                - item
                                - item_id
                                - id
                                - amount
                                - order_id
                                - created_at
                                - updated_at
                              properties:
                                item:
                                  type: object
                                  description: The adjustment's item.
                                  x-schemaName: BaseOrderLineItem
                                item_id:
                                  type: string
                                  title: item_id
                                  description: The adjustment's item id.
                                id:
                                  type: string
                                  title: id
                                  description: The adjustment's ID.
                                code:
                                  type: string
                                  title: code
                                  description: The adjustment's code.
                                amount:
                                  type: number
                                  title: amount
                                  description: The adjustment's amount.
                                order_id:
                                  type: string
                                  title: order_id
                                  description: The adjustment's order id.
                                description:
                                  type: string
                                  title: description
                                  description: The adjustment's description.
                                promotion_id:
                                  type: string
                                  title: promotion_id
                                  description: The adjustment's promotion id.
                                provider_id:
                                  type: string
                                  title: provider_id
                                  description: The adjustment's provider id.
                                created_at:
                                  type: string
                                  format: date-time
                                  title: created_at
                                  description: The adjustment's created at.
                                updated_at:
                                  type: string
                                  format: date-time
                                  title: updated_at
                                  description: The adjustment's updated at.
                            - type: object
                              description: The adjustment's adjustments.
                              required:
                                - item
                              properties:
                                item:
                                  type: object
                                  description: The adjustment's item.
                                  x-schemaName: StoreOrderLineItem
                      detail:
                        allOf:
                          - type: object
                            description: The item's detail.
                            x-schemaName: BaseOrderItemDetail
                            required:
                              - id
                              - item_id
                              - item
                              - quantity
                              - fulfilled_quantity
                              - delivered_quantity
                              - shipped_quantity
                              - return_requested_quantity
                              - return_received_quantity
                              - return_dismissed_quantity
                              - written_off_quantity
                              - metadata
                              - created_at
                              - updated_at
                            properties:
                              id:
                                type: string
                                title: id
                                description: The detail's ID.
                              item_id:
                                type: string
                                title: item_id
                                description: The detail's item id.
                              item:
                                type: object
                                description: The detail's item.
                                x-schemaName: BaseOrderLineItem
                              quantity:
                                type: number
                                title: quantity
                                description: The detail's quantity.
                              fulfilled_quantity:
                                type: number
                                title: fulfilled_quantity
                                description: The detail's fulfilled quantity.
                              delivered_quantity:
                                type: number
                                title: delivered_quantity
                                description: The detail's delivered quantity.
                              shipped_quantity:
                                type: number
                                title: shipped_quantity
                                description: The detail's shipped quantity.
                              return_requested_quantity:
                                type: number
                                title: return_requested_quantity
                                description: The detail's return requested quantity.
                              return_received_quantity:
                                type: number
                                title: return_received_quantity
                                description: The detail's return received quantity.
                              return_dismissed_quantity:
                                type: number
                                title: return_dismissed_quantity
                                description: The detail's return dismissed quantity.
                              written_off_quantity:
                                type: number
                                title: written_off_quantity
                                description: The detail's written off quantity.
                              metadata:
                                type: object
                                description: The detail's metadata.
                                externalDocs:
                                  url: https://docs.medusajs.com/api/store#manage-metadata
                                  description: Learn how to manage metadata
                              created_at:
                                type: string
                                format: date-time
                                title: created_at
                                description: The detail's created at.
                              updated_at:
                                type: string
                                format: date-time
                                title: updated_at
                                description: The detail's updated at.
                          - type: object
                            description: The item's detail.
                            required:
                              - item
                            properties:
                              item:
                                type: object
                                description: The detail's item.
                                x-schemaName: StoreOrderLineItem
                      title:
                        type: string
                        title: title
                        description: The item's title.
                      id:
                        type: string
                        title: id
                        description: The item's ID.
                      metadata:
                        type: object
                        description: The item's metadata.
                        externalDocs:
                          url: https://docs.medusajs.com/api/store#manage-metadata
                          description: Learn how to manage metadata
                      created_at:
                        type: string
                        format: date-time
                        title: created_at
                        description: The item's created at.
                      updated_at:
                        type: string
                        format: date-time
                        title: updated_at
                        description: The item's updated at.
                      item_total:
                        type: number
                        title: item_total
                        description: The item's item total.
                      item_subtotal:
                        type: number
                        title: item_subtotal
                        description: The item's item subtotal.
                      item_tax_total:
                        type: number
                        title: item_tax_total
                        description: The item's item tax total.
                      original_total:
                        type: number
                        title: original_total
                        description: The item's original total.
                      original_subtotal:
                        type: number
                        title: original_subtotal
                        description: The item's original subtotal.
                      original_tax_total:
                        type: number
                        title: original_tax_total
                        description: The item's original tax total.
                      total:
                        type: number
                        title: total
                        description: The item's total.
                      subtotal:
                        type: number
                        title: subtotal
                        description: The item's subtotal.
                      tax_total:
                        type: number
                        title: tax_total
                        description: The item's tax total.
                      discount_total:
                        type: number
                        title: discount_total
                        description: The item's discount total.
                      discount_tax_total:
                        type: number
                        title: discount_tax_total
                        description: The item's discount tax total.
                      subtitle:
                        type: string
                        title: subtitle
                        description: The item's subtitle.
                      thumbnail:
                        type: string
                        title: thumbnail
                        description: The item's thumbnail.
                      variant_id:
                        type: string
                        title: variant_id
                        description: The item's variant id.
                      product_id:
                        type: string
                        title: product_id
                        description: The item's product id.
                      product_title:
                        type: string
                        title: product_title
                        description: The item's product title.
                      product_description:
                        type: string
                        title: product_description
                        description: The item's product description.
                      product_subtitle:
                        type: string
                        title: product_subtitle
                        description: The item's product subtitle.
                      product_type:
                        type: string
                        title: product_type
                        description: The item's product type.
                      product_collection:
                        type: string
                        title: product_collection
                        description: The item's product collection.
                      product_handle:
                        type: string
                        title: product_handle
                        description: The item's product handle.
                      variant_sku:
                        type: string
                        title: variant_sku
                        description: The item's variant sku.
                      variant_barcode:
                        type: string
                        title: variant_barcode
                        description: The item's variant barcode.
                      variant_title:
                        type: string
                        title: variant_title
                        description: The item's variant title.
                      variant_option_values:
                        type: object
                        description: The item's variant option values.
                      requires_shipping:
                        type: boolean
                        title: requires_shipping
                        description: The item's requires shipping.
                      is_discountable:
                        type: boolean
                        title: is_discountable
                        description: The item's is discountable.
                      is_tax_inclusive:
                        type: boolean
                        title: is_tax_inclusive
                        description: The item's is tax inclusive.
                      compare_at_unit_price:
                        type: number
                        title: compare_at_unit_price
                        description: The item's compare at unit price.
                      unit_price:
                        type: number
                        title: unit_price
                        description: The item's unit price.
                      quantity:
                        type: number
                        title: quantity
                        description: The item's quantity.
                      refundable_total:
                        type: number
                        title: refundable_total
                        description: The item's refundable total.
                      refundable_total_per_unit:
                        type: number
                        title: refundable_total_per_unit
                        description: The item's refundable total per unit.
            description: The tax line's tax lines.
        adjustments:
          type: array
          description: The item's adjustments.
          items:
            allOf:
              - type: object
                description: The adjustment's adjustments.
                x-schemaName: BaseOrderLineItemAdjustment
                required:
                  - item
                  - item_id
                  - id
                  - amount
                  - order_id
                  - created_at
                  - updated_at
                properties:
                  item:
                    type: object
                    description: The adjustment's item.
                    x-schemaName: BaseOrderLineItem
                    required:
                      - id
                      - title
                      - subtitle
                      - thumbnail
                      - variant_id
                      - product_id
                      - product_title
                      - product_description
                      - product_subtitle
                      - product_type
                      - product_collection
                      - product_handle
                      - variant_sku
                      - variant_barcode
                      - variant_title
                      - variant_option_values
                      - requires_shipping
                      - is_discountable
                      - is_tax_inclusive
                      - unit_price
                      - quantity
                      - detail
                      - created_at
                      - updated_at
                      - metadata
                      - original_total
                      - original_subtotal
                      - original_tax_total
                      - item_total
                      - item_subtotal
                      - item_tax_total
                      - total
                      - subtotal
                      - tax_total
                      - discount_total
                      - discount_tax_total
                      - refundable_total
                      - refundable_total_per_unit
                    properties:
                      id:
                        type: string
                        title: id
                        description: The item's ID.
                      title:
                        type: string
                        title: title
                        description: The item's title.
                      subtitle:
                        type: string
                        title: subtitle
                        description: The item's subtitle.
                      thumbnail:
                        type: string
                        title: thumbnail
                        description: The item's thumbnail.
                      variant:
                        type: object
                        description: The item's variant.
                        x-schemaName: BaseProductVariant
                        required:
                          - id
                          - title
                          - sku
                          - barcode
                          - ean
                          - upc
                          - allow_backorder
                          - manage_inventory
                          - hs_code
                          - origin_country
                          - mid_code
                          - material
                          - weight
                          - length
                          - height
                          - width
                          - options
                          - created_at
                          - updated_at
                          - deleted_at
                        properties:
                          id:
                            type: string
                            title: id
                            description: The variant's ID.
                          title:
                            type: string
                            title: title
                            description: The variant's title.
                          sku:
                            type: string
                            title: sku
                            description: The variant's sku.
                          barcode:
                            type: string
                            title: barcode
                            description: The variant's barcode.
                          ean:
                            type: string
                            title: ean
                            description: The variant's ean.
                          upc:
                            type: string
                            title: upc
                            description: The variant's upc.
                          allow_backorder:
                            type: boolean
                            title: allow_backorder
                            description: The variant's allow backorder.
                          manage_inventory:
                            type: boolean
                            title: manage_inventory
                            description: The variant's manage inventory.
                          inventory_quantity:
                            type: number
                            title: inventory_quantity
                            description: The variant's inventory quantity.
                          hs_code:
                            type: string
                            title: hs_code
                            description: The variant's hs code.
                          origin_country:
                            type: string
                            title: origin_country
                            description: The variant's origin country.
                          mid_code:
                            type: string
                            title: mid_code
                            description: The variant's mid code.
                          material:
                            type: string
                            title: material
                            description: The variant's material.
                          weight:
                            type: number
                            title: weight
                            description: The variant's weight.
                          length:
                            type: number
                            title: length
                            description: The variant's length.
                          height:
                            type: number
                            title: height
                            description: The variant's height.
                          width:
                            type: number
                            title: width
                            description: The variant's width.
                          variant_rank:
                            type: number
                            title: variant_rank
                            description: The variant's variant rank.
                          options:
                            type: array
                            description: The variant's options.
                            items:
                              type: object
                              description: The option's options.
                              x-schemaName: BaseProductOptionValue
                          product:
                            type: object
                            description: The variant's product.
                            x-schemaName: BaseProduct
                          product_id:
                            type: string
                            title: product_id
                            description: The variant's product id.
                          calculated_price:
                            type: object
                            description: The variant's calculated price.
                            x-schemaName: BaseCalculatedPriceSet
                          created_at:
                            type: string
                            format: date-time
                            title: created_at
                            description: The variant's created at.
                          updated_at:
                            type: string
                            format: date-time
                            title: updated_at
                            description: The variant's updated at.
                          deleted_at:
                            type: string
                            format: date-time
                            title: deleted_at
                            description: The variant's deleted at.
                          metadata:
                            type: object
                            description: The variant's metadata.
                            externalDocs:
                              url: https://docs.medusajs.com/api/store#manage-metadata
                              description: Learn how to manage metadata
                      variant_id:
                        type: string
                        title: variant_id
                        description: The item's variant id.
                      product:
                        type: object
                        description: The item's product.
                        x-schemaName: BaseProduct
                        required:
                          - id
                          - title
                          - handle
                          - subtitle
                          - description
                          - is_giftcard
                          - status
                          - thumbnail
                          - width
                          - weight
                          - length
                          - height
                          - origin_country
                          - hs_code
                          - mid_code
                          - material
                          - collection_id
                          - type_id
                          - variants
                          - options
                          - images
                          - discountable
                          - external_id
                          - created_at
                          - updated_at
                          - deleted_at
                        properties:
                          id:
                            type: string
                            title: id
                            description: The product's ID.
                          title:
                            type: string
                            title: title
                            description: The product's title.
                          handle:
                            type: string
                            title: handle
                            description: The product's handle.
                          subtitle:
                            type: string
                            title: subtitle
                            description: The product's subtitle.
                          description:
                            type: string
                            title: description
                            description: The product's description.
                          is_giftcard:
                            type: boolean
                            title: is_giftcard
                            description: The product's is giftcard.
                          status:
                            type: string
                            description: The product's status.
                            enum:
                              - draft
                              - proposed
                              - published
                              - rejected
                          thumbnail:
                            type: string
                            title: thumbnail
                            description: The product's thumbnail.
                          width:
                            type: number
                            title: width
                            description: The product's width.
                          weight:
                            type: number
                            title: weight
                            description: The product's weight.
                          length:
                            type: number
                            title: length
                            description: The product's length.
                          height:
                            type: number
                            title: height
                            description: The product's height.
                          origin_country:
                            type: string
                            title: origin_country
                            description: The product's origin country.
                          hs_code:
                            type: string
                            title: hs_code
                            description: The product's hs code.
                          mid_code:
                            type: string
                            title: mid_code
                            description: The product's mid code.
                          material:
                            type: string
                            title: material
                            description: The product's material.
                          collection:
                            type: object
                            description: The product's collection.
                            x-schemaName: BaseCollection
                          collection_id:
                            type: string
                            title: collection_id
                            description: The product's collection id.
                          categories:
                            type: array
                            description: The product's categories.
                            items:
                              type: object
                              description: The category's categories.
                              x-schemaName: BaseProductCategory
                          type:
                            type: object
                            description: The product's type.
                            x-schemaName: BaseProduct
                          type_id:
                            type: string
                            title: type_id
                            description: The product's type id.
                          tags:
                            type: array
                            description: The product's tags.
                            items:
                              type: object
                              description: The tag's tags.
                              x-schemaName: BaseProductTag
                          variants:
                            type: array
                            description: The product's variants.
                            items:
                              type: object
                              description: The variant's variants.
                              x-schemaName: BaseProductVariant
                          options:
                            type: array
                            description: The product's options.
                            items:
                              type: object
                              description: The option's options.
                              x-schemaName: BaseProductOption
                          images:
                            type: array
                            description: The product's images.
                            items:
                              type: object
                              description: The image's images.
                              x-schemaName: BaseProductImage
                          discountable:
                            type: boolean
                            title: discountable
                            description: The product's discountable.
                          external_id:
                            type: string
                            title: external_id
                            description: The product's external id.
                          created_at:
                            type: string
                            format: date-time
                            title: created_at
                            description: The product's created at.
                          updated_at:
                            type: string
                            format: date-time
                            title: updated_at
                            description: The product's updated at.
                          deleted_at:
                            type: string
                            format: date-time
                            title: deleted_at
                            description: The product's deleted at.
                          metadata:
                            type: object
                            description: The product's metadata.
                            externalDocs:
                              url: https://docs.medusajs.com/api/store#manage-metadata
                              description: Learn how to manage metadata
                      product_id:
                        type: string
                        title: product_id
                        description: The item's product id.
                      product_title:
                        type: string
                        title: product_title
                        description: The item's product title.
                      product_description:
                        type: string
                        title: product_description
                        description: The item's product description.
                      product_subtitle:
                        type: string
                        title: product_subtitle
                        description: The item's product subtitle.
                      product_type:
                        type: string
                        title: product_type
                        description: The item's product type.
                      product_collection:
                        type: string
                        title: product_collection
                        description: The item's product collection.
                      product_handle:
                        type: string
                        title: product_handle
                        description: The item's product handle.
                      variant_sku:
                        type: string
                        title: variant_sku
                        description: The item's variant sku.
                      variant_barcode:
                        type: string
                        title: variant_barcode
                        description: The item's variant barcode.
                      variant_title:
                        type: string
                        title: variant_title
                        description: The item's variant title.
                      variant_option_values:
                        type: object
                        description: The item's variant option values.
                      requires_shipping:
                        type: boolean
                        title: requires_shipping
                        description: The item's requires shipping.
                      is_discountable:
                        type: boolean
                        title: is_discountable
                        description: The item's is discountable.
                      is_tax_inclusive:
                        type: boolean
                        title: is_tax_inclusive
                        description: The item's is tax inclusive.
                      compare_at_unit_price:
                        type: number
                        title: compare_at_unit_price
                        description: The item's compare at unit price.
                      unit_price:
                        type: number
                        title: unit_price
                        description: The item's unit price.
                      quantity:
                        type: number
                        title: quantity
                        description: The item's quantity.
                      tax_lines:
                        type: array
                        description: The item's tax lines.
                        items:
                          type: object
                          description: The tax line's tax lines.
                          x-schemaName: BaseOrderLineItemTaxLine
                          required:
                            - item
                            - item_id
                            - total
                            - subtotal
                            - id
                            - code
                            - rate
                            - created_at
                            - updated_at
                          properties:
                            item:
                              type: object
                              description: The tax line's item.
                              x-schemaName: BaseOrderLineItem
                            item_id:
                              type: string
                              title: item_id
                              description: The tax line's item id.
                            total:
                              type: number
                              title: total
                              description: The tax line's total.
                            subtotal:
                              type: number
                              title: subtotal
                              description: The tax line's subtotal.
                            id:
                              type: string
                              title: id
                              description: The tax line's ID.
                            description:
                              type: string
                              title: description
                              description: The tax line's description.
                            tax_rate_id:
                              type: string
                              title: tax_rate_id
                              description: The tax line's tax rate id.
                            code:
                              type: string
                              title: code
                              description: The tax line's code.
                            rate:
                              type: number
                              title: rate
                              description: The tax line's rate.
                            provider_id:
                              type: string
                              title: provider_id
                              description: The tax line's provider id.
                            created_at:
                              type: string
                              format: date-time
                              title: created_at
                              description: The tax line's created at.
                            updated_at:
                              type: string
                              format: date-time
                              title: updated_at
                              description: The tax line's updated at.
                      adjustments:
                        type: array
                        description: The item's adjustments.
                        items:
                          type: object
                          description: The adjustment's adjustments.
                          x-schemaName: BaseOrderLineItemAdjustment
                          required:
                            - item
                            - item_id
                            - id
                            - amount
                            - order_id
                            - created_at
                            - updated_at
                          properties:
                            item:
                              type: object
                              description: The adjustment's item.
                              x-schemaName: BaseOrderLineItem
                            item_id:
                              type: string
                              title: item_id
                              description: The adjustment's item id.
                            id:
                              type: string
                              title: id
                              description: The adjustment's ID.
                            code:
                              type: string
                              title: code
                              description: The adjustment's code.
                            amount:
                              type: number
                              title: amount
                              description: The adjustment's amount.
                            order_id:
                              type: string
                              title: order_id
                              description: The adjustment's order id.
                            description:
                              type: string
                              title: description
                              description: The adjustment's description.
                            promotion_id:
                              type: string
                              title: promotion_id
                              description: The adjustment's promotion id.
                            provider_id:
                              type: string
                              title: provider_id
                              description: The adjustment's provider id.
                            created_at:
                              type: string
                              format: date-time
                              title: created_at
                              description: The adjustment's created at.
                            updated_at:
                              type: string
                              format: date-time
                              title: updated_at
                              description: The adjustment's updated at.
                      detail:
                        type: object
                        description: The item's detail.
                        x-schemaName: BaseOrderItemDetail
                        required:
                          - id
                          - item_id
                          - item
                          - quantity
                          - fulfilled_quantity
                          - delivered_quantity
                          - shipped_quantity
                          - return_requested_quantity
                          - return_received_quantity
                          - return_dismissed_quantity
                          - written_off_quantity
                          - metadata
                          - created_at
                          - updated_at
                        properties:
                          id:
                            type: string
                            title: id
                            description: The detail's ID.
                          item_id:
                            type: string
                            title: item_id
                            description: The detail's item id.
                          item:
                            type: object
                            description: The detail's item.
                            x-schemaName: BaseOrderLineItem
                          quantity:
                            type: number
                            title: quantity
                            description: The detail's quantity.
                          fulfilled_quantity:
                            type: number
                            title: fulfilled_quantity
                            description: The detail's fulfilled quantity.
                          delivered_quantity:
                            type: number
                            title: delivered_quantity
                            description: The detail's delivered quantity.
                          shipped_quantity:
                            type: number
                            title: shipped_quantity
                            description: The detail's shipped quantity.
                          return_requested_quantity:
                            type: number
                            title: return_requested_quantity
                            description: The detail's return requested quantity.
                          return_received_quantity:
                            type: number
                            title: return_received_quantity
                            description: The detail's return received quantity.
                          return_dismissed_quantity:
                            type: number
                            title: return_dismissed_quantity
                            description: The detail's return dismissed quantity.
                          written_off_quantity:
                            type: number
                            title: written_off_quantity
                            description: The detail's written off quantity.
                          metadata:
                            type: object
                            description: The detail's metadata.
                            externalDocs:
                              url: https://docs.medusajs.com/api/store#manage-metadata
                              description: Learn how to manage metadata
                          created_at:
                            type: string
                            format: date-time
                            title: created_at
                            description: The detail's created at.
                          updated_at:
                            type: string
                            format: date-time
                            title: updated_at
                            description: The detail's updated at.
                      created_at:
                        type: string
                        format: date-time
                        title: created_at
                        description: The item's created at.
                      updated_at:
                        type: string
                        format: date-time
                        title: updated_at
                        description: The item's updated at.
                      metadata:
                        type: object
                        description: The item's metadata.
                        externalDocs:
                          url: https://docs.medusajs.com/api/store#manage-metadata
                          description: Learn how to manage metadata
                      original_total:
                        type: number
                        title: original_total
                        description: The item's original total.
                      original_subtotal:
                        type: number
                        title: original_subtotal
                        description: The item's original subtotal.
                      original_tax_total:
                        type: number
                        title: original_tax_total
                        description: The item's original tax total.
                      item_total:
                        type: number
                        title: item_total
                        description: The item's item total.
                      item_subtotal:
                        type: number
                        title: item_subtotal
                        description: The item's item subtotal.
                      item_tax_total:
                        type: number
                        title: item_tax_total
                        description: The item's item tax total.
                      total:
                        type: number
                        title: total
                        description: The item's total.
                      subtotal:
                        type: number
                        title: subtotal
                        description: The item's subtotal.
                      tax_total:
                        type: number
                        title: tax_total
                        description: The item's tax total.
                      discount_total:
                        type: number
                        title: discount_total
                        description: The item's discount total.
                      discount_tax_total:
                        type: number
                        title: discount_tax_total
                        description: The item's discount tax total.
                      refundable_total:
                        type: number
                        title: refundable_total
                        description: The item's refundable total.
                      refundable_total_per_unit:
                        type: number
                        title: refundable_total_per_unit
                        description: The item's refundable total per unit.
                  item_id:
                    type: string
                    title: item_id
                    description: The adjustment's item id.
                  id:
                    type: string
                    title: id
                    description: The adjustment's ID.
                  code:
                    type: string
                    title: code
                    description: The adjustment's code.
                  amount:
                    type: number
                    title: amount
                    description: The adjustment's amount.
                  order_id:
                    type: string
                    title: order_id
                    description: The adjustment's order id.
                  description:
                    type: string
                    title: description
                    description: The adjustment's description.
                  promotion_id:
                    type: string
                    title: promotion_id
                    description: The adjustment's promotion id.
                  provider_id:
                    type: string
                    title: provider_id
                    description: The adjustment's provider id.
                  created_at:
                    type: string
                    format: date-time
                    title: created_at
                    description: The adjustment's created at.
                  updated_at:
                    type: string
                    format: date-time
                    title: updated_at
                    description: The adjustment's updated at.
              - type: object
                description: The adjustment's adjustments.
                required:
                  - item
                properties:
                  item:
                    type: object
                    description: The adjustment's item.
                    x-schemaName: StoreOrderLineItem
                    required:
                      - detail
                      - title
                      - id
                      - metadata
                      - created_at
                      - updated_at
                      - item_total
                      - item_subtotal
                      - item_tax_total
                      - original_total
                      - original_subtotal
                      - original_tax_total
                      - total
                      - subtotal
                      - tax_total
                      - discount_total
                      - discount_tax_total
                      - subtitle
                      - thumbnail
                      - variant_id
                      - product_id
                      - product_title
                      - product_description
                      - product_subtitle
                      - product_type
                      - product_collection
                      - product_handle
                      - variant_sku
                      - variant_barcode
                      - variant_title
                      - variant_option_values
                      - requires_shipping
                      - is_discountable
                      - is_tax_inclusive
                      - unit_price
                      - quantity
                      - refundable_total
                      - refundable_total_per_unit
                    properties:
                      variant:
                        type: object
                        description: The item's variant.
                        x-schemaName: StoreProductVariant
                        required:
                          - options
                          - length
                          - title
                          - id
                          - created_at
                          - updated_at
                          - width
                          - weight
                          - height
                          - origin_country
                          - hs_code
                          - mid_code
                          - material
                          - deleted_at
                          - sku
                          - barcode
                          - ean
                          - upc
                          - allow_backorder
                          - manage_inventory
                        properties:
                          options:
                            type: array
                            description: The variant's options.
                            items:
                              type: object
                              description: The option's options.
                              x-schemaName: StoreProductOptionValue
                          product:
                            type: object
                            description: The variant's product.
                            x-schemaName: StoreProduct
                          length:
                            type: number
                            title: length
                            description: The variant's length.
                          title:
                            type: string
                            title: title
                            description: The variant's title.
                          id:
                            type: string
                            title: id
                            description: The variant's ID.
                          metadata:
                            type: object
                            description: The variant's metadata.
                            externalDocs:
                              url: https://docs.medusajs.com/api/store#manage-metadata
                              description: Learn how to manage metadata
                          created_at:
                            type: string
                            format: date-time
                            title: created_at
                            description: The variant's created at.
                          updated_at:
                            type: string
                            format: date-time
                            title: updated_at
                            description: The variant's updated at.
                          product_id:
                            type: string
                            title: product_id
                            description: The variant's product id.
                          width:
                            type: number
                            title: width
                            description: The variant's width.
                          weight:
                            type: number
                            title: weight
                            description: The variant's weight.
                          height:
                            type: number
                            title: height
                            description: The variant's height.
                          origin_country:
                            type: string
                            title: origin_country
                            description: The variant's origin country.
                          hs_code:
                            type: string
                            title: hs_code
                            description: The variant's hs code.
                          mid_code:
                            type: string
                            title: mid_code
                            description: The variant's mid code.
                          material:
                            type: string
                            title: material
                            description: The variant's material.
                          deleted_at:
                            type: string
                            format: date-time
                            title: deleted_at
                            description: The variant's deleted at.
                          sku:
                            type: string
                            title: sku
                            description: The variant's sku.
                          barcode:
                            type: string
                            title: barcode
                            description: The variant's barcode.
                          ean:
                            type: string
                            title: ean
                            description: The variant's ean.
                          upc:
                            type: string
                            title: upc
                            description: The variant's upc.
                          allow_backorder:
                            type: boolean
                            title: allow_backorder
                            description: The variant's allow backorder.
                          manage_inventory:
                            type: boolean
                            title: manage_inventory
                            description: The variant's manage inventory.
                          inventory_quantity:
                            type: number
                            title: inventory_quantity
                            description: The variant's inventory quantity.
                          variant_rank:
                            type: number
                            title: variant_rank
                            description: The variant's variant rank.
                          calculated_price:
                            type: object
                            description: The variant's calculated price.
                            x-schemaName: BaseCalculatedPriceSet
                      product:
                        type: object
                        description: The item's product.
                        x-schemaName: StoreProduct
                        required:
                          - variants
                          - options
                          - images
                          - length
                          - title
                          - status
                          - description
                          - id
                          - created_at
                          - updated_at
                          - subtitle
                          - thumbnail
                          - handle
                          - is_giftcard
                          - width
                          - weight
                          - height
                          - origin_country
                          - hs_code
                          - mid_code
                          - material
                          - collection_id
                          - type_id
                          - discountable
                          - external_id
                          - deleted_at
                        properties:
                          collection:
                            type: object
                            description: The product's collection.
                            x-schemaName: StoreCollection
                          categories:
                            type: array
                            description: The product's categories.
                            items:
                              type: object
                              description: The category's categories.
                              x-schemaName: StoreProductCategory
                          variants:
                            type: array
                            description: The product's variants.
                            items:
                              type: object
                              description: The variant's variants.
                              x-schemaName: StoreProductVariant
                          type:
                            type: object
                            description: The product's type.
                            x-schemaName: StoreProduct
                          tags:
                            type: array
                            description: The product's tags.
                            items:
                              type: object
                              description: The tag's tags.
                              x-schemaName: StoreProductTag
                          options:
                            type: array
                            description: The product's options.
                            items:
                              type: object
                              description: The option's options.
                              x-schemaName: StoreProductOption
                          images:
                            type: array
                            description: The product's images.
                            items:
                              type: object
                              description: The image's images.
                              x-schemaName: StoreProductImage
                          length:
                            type: number
                            title: length
                            description: The product's length.
                          title:
                            type: string
                            title: title
                            description: The product's title.
                          status:
                            type: string
                            description: The product's status.
                            enum:
                              - draft
                              - proposed
                              - published
                              - rejected
                          description:
                            type: string
                            title: description
                            description: The product's description.
                          id:
                            type: string
                            title: id
                            description: The product's ID.
                          metadata:
                            type: object
                            description: The product's metadata.
                            externalDocs:
                              url: https://docs.medusajs.com/api/store#manage-metadata
                              description: Learn how to manage metadata
                          created_at:
                            type: string
                            format: date-time
                            title: created_at
                            description: The product's created at.
                          updated_at:
                            type: string
                            format: date-time
                            title: updated_at
                            description: The product's updated at.
                          subtitle:
                            type: string
                            title: subtitle
                            description: The product's subtitle.
                          thumbnail:
                            type: string
                            title: thumbnail
                            description: The product's thumbnail.
                          handle:
                            type: string
                            title: handle
                            description: The product's handle.
                          is_giftcard:
                            type: boolean
                            title: is_giftcard
                            description: The product's is giftcard.
                          width:
                            type: number
                            title: width
                            description: The product's width.
                          weight:
                            type: number
                            title: weight
                            description: The product's weight.
                          height:
                            type: number
                            title: height
                            description: The product's height.
                          origin_country:
                            type: string
                            title: origin_country
                            description: The product's origin country.
                          hs_code:
                            type: string
                            title: hs_code
                            description: The product's hs code.
                          mid_code:
                            type: string
                            title: mid_code
                            description: The product's mid code.
                          material:
                            type: string
                            title: material
                            description: The product's material.
                          collection_id:
                            type: string
                            title: collection_id
                            description: The product's collection id.
                          type_id:
                            type: string
                            title: type_id
                            description: The product's type id.
                          discountable:
                            type: boolean
                            title: discountable
                            description: The product's discountable.
                          external_id:
                            type: string
                            title: external_id
                            description: The product's external id.
                          deleted_at:
                            type: string
                            format: date-time
                            title: deleted_at
                            description: The product's deleted at.
                      tax_lines:
                        type: array
                        description: The item's tax lines.
                        items:
                          allOf:
                            - type: object
                              description: The tax line's tax lines.
                              x-schemaName: BaseOrderLineItemTaxLine
                              required:
                                - item
                                - item_id
                                - total
                                - subtotal
                                - id
                                - code
                                - rate
                                - created_at
                                - updated_at
                              properties:
                                item:
                                  type: object
                                  description: The tax line's item.
                                  x-schemaName: BaseOrderLineItem
                                item_id:
                                  type: string
                                  title: item_id
                                  description: The tax line's item id.
                                total:
                                  type: number
                                  title: total
                                  description: The tax line's total.
                                subtotal:
                                  type: number
                                  title: subtotal
                                  description: The tax line's subtotal.
                                id:
                                  type: string
                                  title: id
                                  description: The tax line's ID.
                                description:
                                  type: string
                                  title: description
                                  description: The tax line's description.
                                tax_rate_id:
                                  type: string
                                  title: tax_rate_id
                                  description: The tax line's tax rate id.
                                code:
                                  type: string
                                  title: code
                                  description: The tax line's code.
                                rate:
                                  type: number
                                  title: rate
                                  description: The tax line's rate.
                                provider_id:
                                  type: string
                                  title: provider_id
                                  description: The tax line's provider id.
                                created_at:
                                  type: string
                                  format: date-time
                                  title: created_at
                                  description: The tax line's created at.
                                updated_at:
                                  type: string
                                  format: date-time
                                  title: updated_at
                                  description: The tax line's updated at.
                            - type: object
                              description: The tax line's tax lines.
                              required:
                                - item
                              properties:
                                item:
                                  type: object
                                  description: The tax line's item.
                                  x-schemaName: StoreOrderLineItem
                      adjustments:
                        type: array
                        description: The item's adjustments.
                        items:
                          allOf:
                            - type: object
                              description: The adjustment's adjustments.
                              x-schemaName: BaseOrderLineItemAdjustment
                              required:
                                - item
                                - item_id
                                - id
                                - amount
                                - order_id
                                - created_at
                                - updated_at
                              properties:
                                item:
                                  type: object
                                  description: The adjustment's item.
                                  x-schemaName: BaseOrderLineItem
                                item_id:
                                  type: string
                                  title: item_id
                                  description: The adjustment's item id.
                                id:
                                  type: string
                                  title: id
                                  description: The adjustment's ID.
                                code:
                                  type: string
                                  title: code
                                  description: The adjustment's code.
                                amount:
                                  type: number
                                  title: amount
                                  description: The adjustment's amount.
                                order_id:
                                  type: string
                                  title: order_id
                                  description: The adjustment's order id.
                                description:
                                  type: string
                                  title: description
                                  description: The adjustment's description.
                                promotion_id:
                                  type: string
                                  title: promotion_id
                                  description: The adjustment's promotion id.
                                provider_id:
                                  type: string
                                  title: provider_id
                                  description: The adjustment's provider id.
                                created_at:
                                  type: string
                                  format: date-time
                                  title: created_at
                                  description: The adjustment's created at.
                                updated_at:
                                  type: string
                                  format: date-time
                                  title: updated_at
                                  description: The adjustment's updated at.
                            - type: object
                              description: The adjustment's adjustments.
                              required:
                                - item
                              properties:
                                item:
                                  type: object
                                  description: The adjustment's item.
                                  x-schemaName: StoreOrderLineItem
                      detail:
                        allOf:
                          - type: object
                            description: The item's detail.
                            x-schemaName: BaseOrderItemDetail
                            required:
                              - id
                              - item_id
                              - item
                              - quantity
                              - fulfilled_quantity
                              - delivered_quantity
                              - shipped_quantity
                              - return_requested_quantity
                              - return_received_quantity
                              - return_dismissed_quantity
                              - written_off_quantity
                              - metadata
                              - created_at
                              - updated_at
                            properties:
                              id:
                                type: string
                                title: id
                                description: The detail's ID.
                              item_id:
                                type: string
                                title: item_id
                                description: The detail's item id.
                              item:
                                type: object
                                description: The detail's item.
                                x-schemaName: BaseOrderLineItem
                              quantity:
                                type: number
                                title: quantity
                                description: The detail's quantity.
                              fulfilled_quantity:
                                type: number
                                title: fulfilled_quantity
                                description: The detail's fulfilled quantity.
                              delivered_quantity:
                                type: number
                                title: delivered_quantity
                                description: The detail's delivered quantity.
                              shipped_quantity:
                                type: number
                                title: shipped_quantity
                                description: The detail's shipped quantity.
                              return_requested_quantity:
                                type: number
                                title: return_requested_quantity
                                description: The detail's return requested quantity.
                              return_received_quantity:
                                type: number
                                title: return_received_quantity
                                description: The detail's return received quantity.
                              return_dismissed_quantity:
                                type: number
                                title: return_dismissed_quantity
                                description: The detail's return dismissed quantity.
                              written_off_quantity:
                                type: number
                                title: written_off_quantity
                                description: The detail's written off quantity.
                              metadata:
                                type: object
                                description: The detail's metadata.
                                externalDocs:
                                  url: https://docs.medusajs.com/api/store#manage-metadata
                                  description: Learn how to manage metadata
                              created_at:
                                type: string
                                format: date-time
                                title: created_at
                                description: The detail's created at.
                              updated_at:
                                type: string
                                format: date-time
                                title: updated_at
                                description: The detail's updated at.
                          - type: object
                            description: The item's detail.
                            required:
                              - item
                            properties:
                              item:
                                type: object
                                description: The detail's item.
                                x-schemaName: StoreOrderLineItem
                      title:
                        type: string
                        title: title
                        description: The item's title.
                      id:
                        type: string
                        title: id
                        description: The item's ID.
                      metadata:
                        type: object
                        description: The item's metadata.
                        externalDocs:
                          url: https://docs.medusajs.com/api/store#manage-metadata
                          description: Learn how to manage metadata
                      created_at:
                        type: string
                        format: date-time
                        title: created_at
                        description: The item's created at.
                      updated_at:
                        type: string
                        format: date-time
                        title: updated_at
                        description: The item's updated at.
                      item_total:
                        type: number
                        title: item_total
                        description: The item's item total.
                      item_subtotal:
                        type: number
                        title: item_subtotal
                        description: The item's item subtotal.
                      item_tax_total:
                        type: number
                        title: item_tax_total
                        description: The item's item tax total.
                      original_total:
                        type: number
                        title: original_total
                        description: The item's original total.
                      original_subtotal:
                        type: number
                        title: original_subtotal
                        description: The item's original subtotal.
                      original_tax_total:
                        type: number
                        title: original_tax_total
                        description: The item's original tax total.
                      total:
                        type: number
                        title: total
                        description: The item's total.
                      subtotal:
                        type: number
                        title: subtotal
                        description: The item's subtotal.
                      tax_total:
                        type: number
                        title: tax_total
                        description: The item's tax total.
                      discount_total:
                        type: number
                        title: discount_total
                        description: The item's discount total.
                      discount_tax_total:
                        type: number
                        title: discount_tax_total
                        description: The item's discount tax total.
                      subtitle:
                        type: string
                        title: subtitle
                        description: The item's subtitle.
                      thumbnail:
                        type: string
                        title: thumbnail
                        description: The item's thumbnail.
                      variant_id:
                        type: string
                        title: variant_id
                        description: The item's variant id.
                      product_id:
                        type: string
                        title: product_id
                        description: The item's product id.
                      product_title:
                        type: string
                        title: product_title
                        description: The item's product title.
                      product_description:
                        type: string
                        title: product_description
                        description: The item's product description.
                      product_subtitle:
                        type: string
                        title: product_subtitle
                        description: The item's product subtitle.
                      product_type:
                        type: string
                        title: product_type
                        description: The item's product type.
                      product_collection:
                        type: string
                        title: product_collection
                        description: The item's product collection.
                      product_handle:
                        type: string
                        title: product_handle
                        description: The item's product handle.
                      variant_sku:
                        type: string
                        title: variant_sku
                        description: The item's variant sku.
                      variant_barcode:
                        type: string
                        title: variant_barcode
                        description: The item's variant barcode.
                      variant_title:
                        type: string
                        title: variant_title
                        description: The item's variant title.
                      variant_option_values:
                        type: object
                        description: The item's variant option values.
                      requires_shipping:
                        type: boolean
                        title: requires_shipping
                        description: The item's requires shipping.
                      is_discountable:
                        type: boolean
                        title: is_discountable
                        description: The item's is discountable.
                      is_tax_inclusive:
                        type: boolean
                        title: is_tax_inclusive
                        description: The item's is tax inclusive.
                      compare_at_unit_price:
                        type: number
                        title: compare_at_unit_price
                        description: The item's compare at unit price.
                      unit_price:
                        type: number
                        title: unit_price
                        description: The item's unit price.
                      quantity:
                        type: number
                        title: quantity
                        description: The item's quantity.
                      refundable_total:
                        type: number
                        title: refundable_total
                        description: The item's refundable total.
                      refundable_total_per_unit:
                        type: number
                        title: refundable_total_per_unit
                        description: The item's refundable total per unit.
            description: The adjustment's details.
        detail:
          allOf:
            - $ref: '#/components/schemas/BaseOrderItemDetail'
            - type: object
              description: The item's detail.
              required:
                - item
              properties:
                item:
                  type: object
                  description: The detail's item.
                  x-schemaName: StoreOrderLineItem
                  required:
                    - detail
                    - title
                    - id
                    - metadata
                    - created_at
                    - updated_at
                    - item_total
                    - item_subtotal
                    - item_tax_total
                    - original_total
                    - original_subtotal
                    - original_tax_total
                    - total
                    - subtotal
                    - tax_total
                    - discount_total
                    - discount_tax_total
                    - subtitle
                    - thumbnail
                    - variant_id
                    - product_id
                    - product_title
                    - product_description
                    - product_subtitle
                    - product_type
                    - product_collection
                    - product_handle
                    - variant_sku
                    - variant_barcode
                    - variant_title
                    - variant_option_values
                    - requires_shipping
                    - is_discountable
                    - is_tax_inclusive
                    - unit_price
                    - quantity
                    - refundable_total
                    - refundable_total_per_unit
                  properties:
                    variant:
                      type: object
                      description: The item's variant.
                      x-schemaName: StoreProductVariant
                      required:
                        - options
                        - length
                        - title
                        - id
                        - created_at
                        - updated_at
                        - width
                        - weight
                        - height
                        - origin_country
                        - hs_code
                        - mid_code
                        - material
                        - deleted_at
                        - sku
                        - barcode
                        - ean
                        - upc
                        - allow_backorder
                        - manage_inventory
                      properties:
                        options:
                          type: array
                          description: The variant's options.
                          items:
                            type: object
                            description: The option's options.
                            x-schemaName: StoreProductOptionValue
                        product:
                          type: object
                          description: The variant's product.
                          x-schemaName: StoreProduct
                        length:
                          type: number
                          title: length
                          description: The variant's length.
                        title:
                          type: string
                          title: title
                          description: The variant's title.
                        id:
                          type: string
                          title: id
                          description: The variant's ID.
                        metadata:
                          type: object
                          description: The variant's metadata.
                          externalDocs:
                            url: https://docs.medusajs.com/api/store#manage-metadata
                            description: Learn how to manage metadata
                        created_at:
                          type: string
                          format: date-time
                          title: created_at
                          description: The variant's created at.
                        updated_at:
                          type: string
                          format: date-time
                          title: updated_at
                          description: The variant's updated at.
                        product_id:
                          type: string
                          title: product_id
                          description: The variant's product id.
                        width:
                          type: number
                          title: width
                          description: The variant's width.
                        weight:
                          type: number
                          title: weight
                          description: The variant's weight.
                        height:
                          type: number
                          title: height
                          description: The variant's height.
                        origin_country:
                          type: string
                          title: origin_country
                          description: The variant's origin country.
                        hs_code:
                          type: string
                          title: hs_code
                          description: The variant's hs code.
                        mid_code:
                          type: string
                          title: mid_code
                          description: The variant's mid code.
                        material:
                          type: string
                          title: material
                          description: The variant's material.
                        deleted_at:
                          type: string
                          format: date-time
                          title: deleted_at
                          description: The variant's deleted at.
                        sku:
                          type: string
                          title: sku
                          description: The variant's sku.
                        barcode:
                          type: string
                          title: barcode
                          description: The variant's barcode.
                        ean:
                          type: string
                          title: ean
                          description: The variant's ean.
                        upc:
                          type: string
                          title: upc
                          description: The variant's upc.
                        allow_backorder:
                          type: boolean
                          title: allow_backorder
                          description: The variant's allow backorder.
                        manage_inventory:
                          type: boolean
                          title: manage_inventory
                          description: The variant's manage inventory.
                        inventory_quantity:
                          type: number
                          title: inventory_quantity
                          description: The variant's inventory quantity.
                        variant_rank:
                          type: number
                          title: variant_rank
                          description: The variant's variant rank.
                        calculated_price:
                          type: object
                          description: The variant's calculated price.
                          x-schemaName: BaseCalculatedPriceSet
                    product:
                      type: object
                      description: The item's product.
                      x-schemaName: StoreProduct
                      required:
                        - variants
                        - options
                        - images
                        - length
                        - title
                        - status
                        - description
                        - id
                        - created_at
                        - updated_at
                        - subtitle
                        - thumbnail
                        - handle
                        - is_giftcard
                        - width
                        - weight
                        - height
                        - origin_country
                        - hs_code
                        - mid_code
                        - material
                        - collection_id
                        - type_id
                        - discountable
                        - external_id
                        - deleted_at
                      properties:
                        collection:
                          type: object
                          description: The product's collection.
                          x-schemaName: StoreCollection
                        categories:
                          type: array
                          description: The product's categories.
                          items:
                            type: object
                            description: The category's categories.
                            x-schemaName: StoreProductCategory
                        variants:
                          type: array
                          description: The product's variants.
                          items:
                            type: object
                            description: The variant's variants.
                            x-schemaName: StoreProductVariant
                        type:
                          type: object
                          description: The product's type.
                          x-schemaName: StoreProduct
                        tags:
                          type: array
                          description: The product's tags.
                          items:
                            type: object
                            description: The tag's tags.
                            x-schemaName: StoreProductTag
                        options:
                          type: array
                          description: The product's options.
                          items:
                            type: object
                            description: The option's options.
                            x-schemaName: StoreProductOption
                        images:
                          type: array
                          description: The product's images.
                          items:
                            type: object
                            description: The image's images.
                            x-schemaName: StoreProductImage
                        length:
                          type: number
                          title: length
                          description: The product's length.
                        title:
                          type: string
                          title: title
                          description: The product's title.
                        status:
                          type: string
                          description: The product's status.
                          enum:
                            - draft
                            - proposed
                            - published
                            - rejected
                        description:
                          type: string
                          title: description
                          description: The product's description.
                        id:
                          type: string
                          title: id
                          description: The product's ID.
                        metadata:
                          type: object
                          description: The product's metadata.
                          externalDocs:
                            url: https://docs.medusajs.com/api/store#manage-metadata
                            description: Learn how to manage metadata
                        created_at:
                          type: string
                          format: date-time
                          title: created_at
                          description: The product's created at.
                        updated_at:
                          type: string
                          format: date-time
                          title: updated_at
                          description: The product's updated at.
                        subtitle:
                          type: string
                          title: subtitle
                          description: The product's subtitle.
                        thumbnail:
                          type: string
                          title: thumbnail
                          description: The product's thumbnail.
                        handle:
                          type: string
                          title: handle
                          description: The product's handle.
                        is_giftcard:
                          type: boolean
                          title: is_giftcard
                          description: The product's is giftcard.
                        width:
                          type: number
                          title: width
                          description: The product's width.
                        weight:
                          type: number
                          title: weight
                          description: The product's weight.
                        height:
                          type: number
                          title: height
                          description: The product's height.
                        origin_country:
                          type: string
                          title: origin_country
                          description: The product's origin country.
                        hs_code:
                          type: string
                          title: hs_code
                          description: The product's hs code.
                        mid_code:
                          type: string
                          title: mid_code
                          description: The product's mid code.
                        material:
                          type: string
                          title: material
                          description: The product's material.
                        collection_id:
                          type: string
                          title: collection_id
                          description: The product's collection id.
                        type_id:
                          type: string
                          title: type_id
                          description: The product's type id.
                        discountable:
                          type: boolean
                          title: discountable
                          description: The product's discountable.
                        external_id:
                          type: string
                          title: external_id
                          description: The product's external id.
                        deleted_at:
                          type: string
                          format: date-time
                          title: deleted_at
                          description: The product's deleted at.
                    tax_lines:
                      type: array
                      description: The item's tax lines.
                      items:
                        allOf:
                          - type: object
                            description: The tax line's tax lines.
                            x-schemaName: BaseOrderLineItemTaxLine
                            required:
                              - item
                              - item_id
                              - total
                              - subtotal
                              - id
                              - code
                              - rate
                              - created_at
                              - updated_at
                            properties:
                              item:
                                type: object
                                description: The tax line's item.
                                x-schemaName: BaseOrderLineItem
                              item_id:
                                type: string
                                title: item_id
                                description: The tax line's item id.
                              total:
                                type: number
                                title: total
                                description: The tax line's total.
                              subtotal:
                                type: number
                                title: subtotal
                                description: The tax line's subtotal.
                              id:
                                type: string
                                title: id
                                description: The tax line's ID.
                              description:
                                type: string
                                title: description
                                description: The tax line's description.
                              tax_rate_id:
                                type: string
                                title: tax_rate_id
                                description: The tax line's tax rate id.
                              code:
                                type: string
                                title: code
                                description: The tax line's code.
                              rate:
                                type: number
                                title: rate
                                description: The tax line's rate.
                              provider_id:
                                type: string
                                title: provider_id
                                description: The tax line's provider id.
                              created_at:
                                type: string
                                format: date-time
                                title: created_at
                                description: The tax line's created at.
                              updated_at:
                                type: string
                                format: date-time
                                title: updated_at
                                description: The tax line's updated at.
                          - type: object
                            description: The tax line's tax lines.
                            required:
                              - item
                            properties:
                              item:
                                type: object
                                description: The tax line's item.
                                x-schemaName: StoreOrderLineItem
                    adjustments:
                      type: array
                      description: The item's adjustments.
                      items:
                        allOf:
                          - type: object
                            description: The adjustment's adjustments.
                            x-schemaName: BaseOrderLineItemAdjustment
                            required:
                              - item
                              - item_id
                              - id
                              - amount
                              - order_id
                              - created_at
                              - updated_at
                            properties:
                              item:
                                type: object
                                description: The adjustment's item.
                                x-schemaName: BaseOrderLineItem
                              item_id:
                                type: string
                                title: item_id
                                description: The adjustment's item id.
                              id:
                                type: string
                                title: id
                                description: The adjustment's ID.
                              code:
                                type: string
                                title: code
                                description: The adjustment's code.
                              amount:
                                type: number
                                title: amount
                                description: The adjustment's amount.
                              order_id:
                                type: string
                                title: order_id
                                description: The adjustment's order id.
                              description:
                                type: string
                                title: description
                                description: The adjustment's description.
                              promotion_id:
                                type: string
                                title: promotion_id
                                description: The adjustment's promotion id.
                              provider_id:
                                type: string
                                title: provider_id
                                description: The adjustment's provider id.
                              created_at:
                                type: string
                                format: date-time
                                title: created_at
                                description: The adjustment's created at.
                              updated_at:
                                type: string
                                format: date-time
                                title: updated_at
                                description: The adjustment's updated at.
                          - type: object
                            description: The adjustment's adjustments.
                            required:
                              - item
                            properties:
                              item:
                                type: object
                                description: The adjustment's item.
                                x-schemaName: StoreOrderLineItem
                    detail:
                      allOf:
                        - type: object
                          description: The item's detail.
                          x-schemaName: BaseOrderItemDetail
                          required:
                            - id
                            - item_id
                            - item
                            - quantity
                            - fulfilled_quantity
                            - delivered_quantity
                            - shipped_quantity
                            - return_requested_quantity
                            - return_received_quantity
                            - return_dismissed_quantity
                            - written_off_quantity
                            - metadata
                            - created_at
                            - updated_at
                          properties:
                            id:
                              type: string
                              title: id
                              description: The detail's ID.
                            item_id:
                              type: string
                              title: item_id
                              description: The detail's item id.
                            item:
                              type: object
                              description: The detail's item.
                              x-schemaName: BaseOrderLineItem
                            quantity:
                              type: number
                              title: quantity
                              description: The detail's quantity.
                            fulfilled_quantity:
                              type: number
                              title: fulfilled_quantity
                              description: The detail's fulfilled quantity.
                            delivered_quantity:
                              type: number
                              title: delivered_quantity
                              description: The detail's delivered quantity.
                            shipped_quantity:
                              type: number
                              title: shipped_quantity
                              description: The detail's shipped quantity.
                            return_requested_quantity:
                              type: number
                              title: return_requested_quantity
                              description: The detail's return requested quantity.
                            return_received_quantity:
                              type: number
                              title: return_received_quantity
                              description: The detail's return received quantity.
                            return_dismissed_quantity:
                              type: number
                              title: return_dismissed_quantity
                              description: The detail's return dismissed quantity.
                            written_off_quantity:
                              type: number
                              title: written_off_quantity
                              description: The detail's written off quantity.
                            metadata:
                              type: object
                              description: The detail's metadata.
                              externalDocs:
                                url: https://docs.medusajs.com/api/store#manage-metadata
                                description: Learn how to manage metadata
                            created_at:
                              type: string
                              format: date-time
                              title: created_at
                              description: The detail's created at.
                            updated_at:
                              type: string
                              format: date-time
                              title: updated_at
                              description: The detail's updated at.
                        - type: object
                          description: The item's detail.
                          required:
                            - item
                          properties:
                            item:
                              type: object
                              description: The detail's item.
                              x-schemaName: StoreOrderLineItem
                    title:
                      type: string
                      title: title
                      description: The item's title.
                    id:
                      type: string
                      title: id
                      description: The item's ID.
                    metadata:
                      type: object
                      description: The item's metadata.
                      externalDocs:
                        url: https://docs.medusajs.com/api/store#manage-metadata
                        description: Learn how to manage metadata
                    created_at:
                      type: string
                      format: date-time
                      title: created_at
                      description: The item's created at.
                    updated_at:
                      type: string
                      format: date-time
                      title: updated_at
                      description: The item's updated at.
                    item_total:
                      type: number
                      title: item_total
                      description: The item's item total.
                    item_subtotal:
                      type: number
                      title: item_subtotal
                      description: The item's item subtotal.
                    item_tax_total:
                      type: number
                      title: item_tax_total
                      description: The item's item tax total.
                    original_total:
                      type: number
                      title: original_total
                      description: The item's original total.
                    original_subtotal:
                      type: number
                      title: original_subtotal
                      description: The item's original subtotal.
                    original_tax_total:
                      type: number
                      title: original_tax_total
                      description: The item's original tax total.
                    total:
                      type: number
                      title: total
                      description: The item's total.
                    subtotal:
                      type: number
                      title: subtotal
                      description: The item's subtotal.
                    tax_total:
                      type: number
                      title: tax_total
                      description: The item's tax total.
                    discount_total:
                      type: number
                      title: discount_total
                      description: The item's discount total.
                    discount_tax_total:
                      type: number
                      title: discount_tax_total
                      description: The item's discount tax total.
                    subtitle:
                      type: string
                      title: subtitle
                      description: The item's subtitle.
                    thumbnail:
                      type: string
                      title: thumbnail
                      description: The item's thumbnail.
                    variant_id:
                      type: string
                      title: variant_id
                      description: The item's variant id.
                    product_id:
                      type: string
                      title: product_id
                      description: The item's product id.
                    product_title:
                      type: string
                      title: product_title
                      description: The item's product title.
                    product_description:
                      type: string
                      title: product_description
                      description: The item's product description.
                    product_subtitle:
                      type: string
                      title: product_subtitle
                      description: The item's product subtitle.
                    product_type:
                      type: string
                      title: product_type
                      description: The item's product type.
                    product_collection:
                      type: string
                      title: product_collection
                      description: The item's product collection.
                    product_handle:
                      type: string
                      title: product_handle
                      description: The item's product handle.
                    variant_sku:
                      type: string
                      title: variant_sku
                      description: The item's variant sku.
                    variant_barcode:
                      type: string
                      title: variant_barcode
                      description: The item's variant barcode.
                    variant_title:
                      type: string
                      title: variant_title
                      description: The item's variant title.
                    variant_option_values:
                      type: object
                      description: The item's variant option values.
                    requires_shipping:
                      type: boolean
                      title: requires_shipping
                      description: The item's requires shipping.
                    is_discountable:
                      type: boolean
                      title: is_discountable
                      description: The item's is discountable.
                    is_tax_inclusive:
                      type: boolean
                      title: is_tax_inclusive
                      description: The item's is tax inclusive.
                    compare_at_unit_price:
                      type: number
                      title: compare_at_unit_price
                      description: The item's compare at unit price.
                    unit_price:
                      type: number
                      title: unit_price
                      description: The item's unit price.
                    quantity:
                      type: number
                      title: quantity
                      description: The item's quantity.
                    refundable_total:
                      type: number
                      title: refundable_total
                      description: The item's refundable total.
                    refundable_total_per_unit:
                      type: number
                      title: refundable_total_per_unit
                      description: The item's refundable total per unit.
          description: The item's detail.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the item was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the item was updated.
        metadata:
          type: object
          description: The item's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        original_total:
          type: number
          title: original_total
          description: The item's total including taxes, excluding promotions.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The item's total excluding taxes, including promotions.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The total taxes of the item, excluding promotions.
        item_total:
          type: number
          title: item_total
          description: The total taxes of the item, including promotions.
        item_subtotal:
          type: number
          title: item_subtotal
          description: The item's total excluding taxes, including promotions.
        item_tax_total:
          type: number
          title: item_tax_total
          description: The total taxes of the item, including promotions.
        total:
          type: number
          title: total
          description: The item's total, including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The item's subtotal excluding taxes, including promotions.
        tax_total:
          type: number
          title: tax_total
          description: The tax total of the item including promotions.
        discount_total:
          type: number
          title: discount_total
          description: The total discount amount of the item.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The total taxes applied on the discounted amount.
        refundable_total:
          type: number
          title: refundable_total
          description: The total refundable amount of the item's total.
        refundable_total_per_unit:
          type: number
          title: refundable_total_per_unit
          description: The total refundable amount of the item's total for a single quantity.
        product_type_id:
          type: string
          title: product_type_id
          description: The ID of the associated product's type.
    StoreOrderResponse:
      type: object
      description: The order's details.
      x-schemaName: StoreOrderResponse
      required:
        - order
      properties:
        order:
          $ref: '#/components/schemas/StoreOrder'
    StoreOrderShippingMethod:
      type: object
      description: The shipping method's details.
      x-schemaName: StoreOrderShippingMethod
      required:
        - id
        - order_id
        - name
        - amount
        - is_tax_inclusive
        - shipping_option_id
        - data
        - metadata
        - original_total
        - original_subtotal
        - original_tax_total
        - total
        - subtotal
        - tax_total
        - discount_total
        - discount_tax_total
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The shipping method's ID.
        order_id:
          type: string
          title: order_id
          description: The ID of the order the shipping method belongs to.
        name:
          type: string
          title: name
          description: The shipping method's name.
        description:
          type: string
          title: description
          description: The shipping method's description.
        amount:
          type: number
          title: amount
          description: The shipping method's amount.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the shipping method's amount includes applied taxes.
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the shipping option this method was created from.
        data:
          type: object
          description: The shipping method's data, useful for fulfillment provider handling its fulfillment.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#data-property
        metadata:
          type: object
          description: The shipping method's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        tax_lines:
          type: array
          description: The shipping method's tax lines.
          items:
            allOf:
              - type: object
                description: The tax line's tax lines.
                x-schemaName: BaseOrderShippingMethodTaxLine
                required:
                  - shipping_method
                  - shipping_method_id
                  - total
                  - subtotal
                  - id
                  - code
                  - rate
                  - created_at
                  - updated_at
                properties:
                  shipping_method:
                    type: object
                    description: The tax line's shipping method.
                    x-schemaName: BaseOrderShippingMethod
                    required:
                      - id
                      - order_id
                      - name
                      - amount
                      - is_tax_inclusive
                      - shipping_option_id
                      - data
                      - metadata
                      - original_total
                      - original_subtotal
                      - original_tax_total
                      - total
                      - subtotal
                      - tax_total
                      - discount_total
                      - discount_tax_total
                      - created_at
                      - updated_at
                    properties:
                      id:
                        type: string
                        title: id
                        description: The shipping method's ID.
                      order_id:
                        type: string
                        title: order_id
                        description: The shipping method's order id.
                      name:
                        type: string
                        title: name
                        description: The shipping method's name.
                      description:
                        type: string
                        title: description
                        description: The shipping method's description.
                      amount:
                        type: number
                        title: amount
                        description: The shipping method's amount.
                      is_tax_inclusive:
                        type: boolean
                        title: is_tax_inclusive
                        description: The shipping method's is tax inclusive.
                      shipping_option_id:
                        type: string
                        title: shipping_option_id
                        description: The shipping method's shipping option id.
                      data:
                        type: object
                        description: The shipping method's data.
                      metadata:
                        type: object
                        description: The shipping method's metadata.
                        externalDocs:
                          url: https://docs.medusajs.com/api/store#manage-metadata
                          description: Learn how to manage metadata
                      tax_lines:
                        type: array
                        description: The shipping method's tax lines.
                        items:
                          type: object
                          description: The tax line's tax lines.
                          x-schemaName: BaseOrderShippingMethodTaxLine
                          required:
                            - shipping_method
                            - shipping_method_id
                            - total
                            - subtotal
                            - id
                            - code
                            - rate
                            - created_at
                            - updated_at
                          properties:
                            shipping_method:
                              type: object
                              description: The tax line's shipping method.
                              x-schemaName: BaseOrderShippingMethod
                            shipping_method_id:
                              type: string
                              title: shipping_method_id
                              description: The tax line's shipping method id.
                            total:
                              type: number
                              title: total
                              description: The tax line's total.
                            subtotal:
                              type: number
                              title: subtotal
                              description: The tax line's subtotal.
                            id:
                              type: string
                              title: id
                              description: The tax line's ID.
                            description:
                              type: string
                              title: description
                              description: The tax line's description.
                            tax_rate_id:
                              type: string
                              title: tax_rate_id
                              description: The tax line's tax rate id.
                            code:
                              type: string
                              title: code
                              description: The tax line's code.
                            rate:
                              type: number
                              title: rate
                              description: The tax line's rate.
                            provider_id:
                              type: string
                              title: provider_id
                              description: The tax line's provider id.
                            created_at:
                              type: string
                              format: date-time
                              title: created_at
                              description: The tax line's created at.
                            updated_at:
                              type: string
                              format: date-time
                              title: updated_at
                              description: The tax line's updated at.
                      adjustments:
                        type: array
                        description: The shipping method's adjustments.
                        items:
                          type: object
                          description: The adjustment's adjustments.
                          x-schemaName: BaseOrderShippingMethodAdjustment
                          required:
                            - shipping_method
                            - shipping_method_id
                            - id
                            - amount
                            - order_id
                            - created_at
                            - updated_at
                          properties:
                            shipping_method:
                              type: object
                              description: The adjustment's shipping method.
                              x-schemaName: BaseOrderShippingMethod
                            shipping_method_id:
                              type: string
                              title: shipping_method_id
                              description: The adjustment's shipping method id.
                            id:
                              type: string
                              title: id
                              description: The adjustment's ID.
                            code:
                              type: string
                              title: code
                              description: The adjustment's code.
                            amount:
                              type: number
                              title: amount
                              description: The adjustment's amount.
                            order_id:
                              type: string
                              title: order_id
                              description: The adjustment's order id.
                            description:
                              type: string
                              title: description
                              description: The adjustment's description.
                            promotion_id:
                              type: string
                              title: promotion_id
                              description: The adjustment's promotion id.
                            provider_id:
                              type: string
                              title: provider_id
                              description: The adjustment's provider id.
                            created_at:
                              type: string
                              format: date-time
                              title: created_at
                              description: The adjustment's created at.
                            updated_at:
                              type: string
                              format: date-time
                              title: updated_at
                              description: The adjustment's updated at.
                      original_total:
                        type: number
                        title: original_total
                        description: The shipping method's original total.
                      original_subtotal:
                        type: number
                        title: original_subtotal
                        description: The shipping method's original subtotal.
                      original_tax_total:
                        type: number
                        title: original_tax_total
                        description: The shipping method's original tax total.
                      total:
                        type: number
                        title: total
                        description: The shipping method's total.
                      detail:
                        type: object
                        description: The shipping method's detail.
                        x-schemaName: BaseOrderShippingDetail
                        required:
                          - id
                          - shipping_method_id
                          - shipping_method
                          - created_at
                          - updated_at
                        properties:
                          id:
                            type: string
                            title: id
                            description: The detail's ID.
                          shipping_method_id:
                            type: string
                            title: shipping_method_id
                            description: The detail's shipping method id.
                          shipping_method:
                            type: object
                            description: The detail's shipping method.
                            x-schemaName: BaseOrderShippingMethod
                          claim_id:
                            type: string
                            title: claim_id
                            description: The detail's claim id.
                          exchange_id:
                            type: string
                            title: exchange_id
                            description: The detail's exchange id.
                          return_id:
                            type: string
                            title: return_id
                            description: The detail's return id.
                          created_at:
                            type: string
                            format: date-time
                            title: created_at
                            description: The detail's created at.
                          updated_at:
                            type: string
                            format: date-time
                            title: updated_at
                            description: The detail's updated at.
                      subtotal:
                        type: number
                        title: subtotal
                        description: The shipping method's subtotal.
                      tax_total:
                        type: number
                        title: tax_total
                        description: The shipping method's tax total.
                      discount_total:
                        type: number
                        title: discount_total
                        description: The shipping method's discount total.
                      discount_tax_total:
                        type: number
                        title: discount_tax_total
                        description: The shipping method's discount tax total.
                      created_at:
                        type: string
                        format: date-time
                        title: created_at
                        description: The shipping method's created at.
                      updated_at:
                        type: string
                        format: date-time
                        title: updated_at
                        description: The shipping method's updated at.
                  shipping_method_id:
                    type: string
                    title: shipping_method_id
                    description: The tax line's shipping method id.
                  total:
                    type: number
                    title: total
                    description: The tax line's total.
                  subtotal:
                    type: number
                    title: subtotal
                    description: The tax line's subtotal.
                  id:
                    type: string
                    title: id
                    description: The tax line's ID.
                  description:
                    type: string
                    title: description
                    description: The tax line's description.
                  tax_rate_id:
                    type: string
                    title: tax_rate_id
                    description: The tax line's tax rate id.
                  code:
                    type: string
                    title: code
                    description: The tax line's code.
                  rate:
                    type: number
                    title: rate
                    description: The tax line's rate.
                  provider_id:
                    type: string
                    title: provider_id
                    description: The tax line's provider id.
                  created_at:
                    type: string
                    format: date-time
                    title: created_at
                    description: The tax line's created at.
                  updated_at:
                    type: string
                    format: date-time
                    title: updated_at
                    description: The tax line's updated at.
              - type: object
                description: The tax line's tax lines.
                required:
                  - shipping_method
                properties:
                  shipping_method:
                    type: object
                    description: The tax line's shipping method.
                    x-schemaName: StoreOrderShippingMethod
                    required:
                      - id
                      - order_id
                      - name
                      - amount
                      - is_tax_inclusive
                      - shipping_option_id
                      - data
                      - metadata
                      - original_total
                      - original_subtotal
                      - original_tax_total
                      - total
                      - subtotal
                      - tax_total
                      - discount_total
                      - discount_tax_total
                      - created_at
                      - updated_at
                    properties:
                      tax_lines:
                        type: array
                        description: The shipping method's tax lines.
                        items:
                          allOf:
                            - type: object
                              description: The tax line's tax lines.
                              x-schemaName: BaseOrderShippingMethodTaxLine
                              required:
                                - shipping_method
                                - shipping_method_id
                                - total
                                - subtotal
                                - id
                                - code
                                - rate
                                - created_at
                                - updated_at
                              properties:
                                shipping_method:
                                  type: object
                                  description: The tax line's shipping method.
                                  x-schemaName: BaseOrderShippingMethod
                                shipping_method_id:
                                  type: string
                                  title: shipping_method_id
                                  description: The tax line's shipping method id.
                                total:
                                  type: number
                                  title: total
                                  description: The tax line's total.
                                subtotal:
                                  type: number
                                  title: subtotal
                                  description: The tax line's subtotal.
                                id:
                                  type: string
                                  title: id
                                  description: The tax line's ID.
                                description:
                                  type: string
                                  title: description
                                  description: The tax line's description.
                                tax_rate_id:
                                  type: string
                                  title: tax_rate_id
                                  description: The tax line's tax rate id.
                                code:
                                  type: string
                                  title: code
                                  description: The tax line's code.
                                rate:
                                  type: number
                                  title: rate
                                  description: The tax line's rate.
                                provider_id:
                                  type: string
                                  title: provider_id
                                  description: The tax line's provider id.
                                created_at:
                                  type: string
                                  format: date-time
                                  title: created_at
                                  description: The tax line's created at.
                                updated_at:
                                  type: string
                                  format: date-time
                                  title: updated_at
                                  description: The tax line's updated at.
                            - type: object
                              description: The tax line's tax lines.
                              required:
                                - shipping_method
                              properties:
                                shipping_method:
                                  type: object
                                  description: The tax line's shipping method.
                                  x-schemaName: StoreOrderShippingMethod
                      adjustments:
                        type: array
                        description: The shipping method's adjustments.
                        items:
                          allOf:
                            - type: object
                              description: The adjustment's adjustments.
                              x-schemaName: BaseOrderShippingMethodAdjustment
                              required:
                                - shipping_method
                                - shipping_method_id
                                - id
                                - amount
                                - order_id
                                - created_at
                                - updated_at
                              properties:
                                shipping_method:
                                  type: object
                                  description: The adjustment's shipping method.
                                  x-schemaName: BaseOrderShippingMethod
                                shipping_method_id:
                                  type: string
                                  title: shipping_method_id
                                  description: The adjustment's shipping method id.
                                id:
                                  type: string
                                  title: id
                                  description: The adjustment's ID.
                                code:
                                  type: string
                                  title: code
                                  description: The adjustment's code.
                                amount:
                                  type: number
                                  title: amount
                                  description: The adjustment's amount.
                                order_id:
                                  type: string
                                  title: order_id
                                  description: The adjustment's order id.
                                description:
                                  type: string
                                  title: description
                                  description: The adjustment's description.
                                promotion_id:
                                  type: string
                                  title: promotion_id
                                  description: The adjustment's promotion id.
                                provider_id:
                                  type: string
                                  title: provider_id
                                  description: The adjustment's provider id.
                                created_at:
                                  type: string
                                  format: date-time
                                  title: created_at
                                  description: The adjustment's created at.
                                updated_at:
                                  type: string
                                  format: date-time
                                  title: updated_at
                                  description: The adjustment's updated at.
                            - type: object
                              description: The adjustment's adjustments.
                              required:
                                - shipping_method
                              properties:
                                shipping_method:
                                  type: object
                                  description: The adjustment's shipping method.
                                  x-schemaName: StoreOrderShippingMethod
                      detail:
                        allOf:
                          - type: object
                            description: The shipping method's detail.
                            x-schemaName: BaseOrderShippingDetail
                            required:
                              - id
                              - shipping_method_id
                              - shipping_method
                              - created_at
                              - updated_at
                            properties:
                              id:
                                type: string
                                title: id
                                description: The detail's ID.
                              shipping_method_id:
                                type: string
                                title: shipping_method_id
                                description: The detail's shipping method id.
                              shipping_method:
                                type: object
                                description: The detail's shipping method.
                                x-schemaName: BaseOrderShippingMethod
                              claim_id:
                                type: string
                                title: claim_id
                                description: The detail's claim id.
                              exchange_id:
                                type: string
                                title: exchange_id
                                description: The detail's exchange id.
                              return_id:
                                type: string
                                title: return_id
                                description: The detail's return id.
                              created_at:
                                type: string
                                format: date-time
                                title: created_at
                                description: The detail's created at.
                              updated_at:
                                type: string
                                format: date-time
                                title: updated_at
                                description: The detail's updated at.
                          - type: object
                            description: The shipping method's detail.
                            required:
                              - shipping_method
                            properties:
                              shipping_method:
                                type: object
                                description: The detail's shipping method.
                                x-schemaName: StoreOrderShippingMethod
                      id:
                        type: string
                        title: id
                        description: The shipping method's ID.
                      order_id:
                        type: string
                        title: order_id
                        description: The shipping method's order id.
                      name:
                        type: string
                        title: name
                        description: The shipping method's name.
                      description:
                        type: string
                        title: description
                        description: The shipping method's description.
                      amount:
                        type: number
                        title: amount
                        description: The shipping method's amount.
                      is_tax_inclusive:
                        type: boolean
                        title: is_tax_inclusive
                        description: The shipping method's is tax inclusive.
                      shipping_option_id:
                        type: string
                        title: shipping_option_id
                        description: The shipping method's shipping option id.
                      data:
                        type: object
                        description: The shipping method's data.
                      metadata:
                        type: object
                        description: The shipping method's metadata.
                        externalDocs:
                          url: https://docs.medusajs.com/api/store#manage-metadata
                          description: Learn how to manage metadata
                      original_total:
                        type: number
                        title: original_total
                        description: The shipping method's original total.
                      original_subtotal:
                        type: number
                        title: original_subtotal
                        description: The shipping method's original subtotal.
                      original_tax_total:
                        type: number
                        title: original_tax_total
                        description: The shipping method's original tax total.
                      total:
                        type: number
                        title: total
                        description: The shipping method's total.
                      subtotal:
                        type: number
                        title: subtotal
                        description: The shipping method's subtotal.
                      tax_total:
                        type: number
                        title: tax_total
                        description: The shipping method's tax total.
                      discount_total:
                        type: number
                        title: discount_total
                        description: The shipping method's discount total.
                      discount_tax_total:
                        type: number
                        title: discount_tax_total
                        description: The shipping method's discount tax total.
                      created_at:
                        type: string
                        format: date-time
                        title: created_at
                        description: The shipping method's created at.
                      updated_at:
                        type: string
                        format: date-time
                        title: updated_at
                        description: The shipping method's updated at.
            description: The tax line's details.
        adjustments:
          type: array
          description: The shipping method's adjustments.
          items:
            allOf:
              - type: object
                description: The adjustment's adjustments.
                x-schemaName: BaseOrderShippingMethodAdjustment
                required:
                  - shipping_method
                  - shipping_method_id
                  - id
                  - amount
                  - order_id
                  - created_at
                  - updated_at
                properties:
                  shipping_method:
                    type: object
                    description: The adjustment's shipping method.
                    x-schemaName: BaseOrderShippingMethod
                    required:
                      - id
                      - order_id
                      - name
                      - amount
                      - is_tax_inclusive
                      - shipping_option_id
                      - data
                      - metadata
                      - original_total
                      - original_subtotal
                      - original_tax_total
                      - total
                      - subtotal
                      - tax_total
                      - discount_total
                      - discount_tax_total
                      - created_at
                      - updated_at
                    properties:
                      id:
                        type: string
                        title: id
                        description: The shipping method's ID.
                      order_id:
                        type: string
                        title: order_id
                        description: The shipping method's order id.
                      name:
                        type: string
                        title: name
                        description: The shipping method's name.
                      description:
                        type: string
                        title: description
                        description: The shipping method's description.
                      amount:
                        type: number
                        title: amount
                        description: The shipping method's amount.
                      is_tax_inclusive:
                        type: boolean
                        title: is_tax_inclusive
                        description: The shipping method's is tax inclusive.
                      shipping_option_id:
                        type: string
                        title: shipping_option_id
                        description: The shipping method's shipping option id.
                      data:
                        type: object
                        description: The shipping method's data.
                      metadata:
                        type: object
                        description: The shipping method's metadata.
                        externalDocs:
                          url: https://docs.medusajs.com/api/store#manage-metadata
                          description: Learn how to manage metadata
                      tax_lines:
                        type: array
                        description: The shipping method's tax lines.
                        items:
                          type: object
                          description: The tax line's tax lines.
                          x-schemaName: BaseOrderShippingMethodTaxLine
                          required:
                            - shipping_method
                            - shipping_method_id
                            - total
                            - subtotal
                            - id
                            - code
                            - rate
                            - created_at
                            - updated_at
                          properties:
                            shipping_method:
                              type: object
                              description: The tax line's shipping method.
                              x-schemaName: BaseOrderShippingMethod
                            shipping_method_id:
                              type: string
                              title: shipping_method_id
                              description: The tax line's shipping method id.
                            total:
                              type: number
                              title: total
                              description: The tax line's total.
                            subtotal:
                              type: number
                              title: subtotal
                              description: The tax line's subtotal.
                            id:
                              type: string
                              title: id
                              description: The tax line's ID.
                            description:
                              type: string
                              title: description
                              description: The tax line's description.
                            tax_rate_id:
                              type: string
                              title: tax_rate_id
                              description: The tax line's tax rate id.
                            code:
                              type: string
                              title: code
                              description: The tax line's code.
                            rate:
                              type: number
                              title: rate
                              description: The tax line's rate.
                            provider_id:
                              type: string
                              title: provider_id
                              description: The tax line's provider id.
                            created_at:
                              type: string
                              format: date-time
                              title: created_at
                              description: The tax line's created at.
                            updated_at:
                              type: string
                              format: date-time
                              title: updated_at
                              description: The tax line's updated at.
                      adjustments:
                        type: array
                        description: The shipping method's adjustments.
                        items:
                          type: object
                          description: The adjustment's adjustments.
                          x-schemaName: BaseOrderShippingMethodAdjustment
                          required:
                            - shipping_method
                            - shipping_method_id
                            - id
                            - amount
                            - order_id
                            - created_at
                            - updated_at
                          properties:
                            shipping_method:
                              type: object
                              description: The adjustment's shipping method.
                              x-schemaName: BaseOrderShippingMethod
                            shipping_method_id:
                              type: string
                              title: shipping_method_id
                              description: The adjustment's shipping method id.
                            id:
                              type: string
                              title: id
                              description: The adjustment's ID.
                            code:
                              type: string
                              title: code
                              description: The adjustment's code.
                            amount:
                              type: number
                              title: amount
                              description: The adjustment's amount.
                            order_id:
                              type: string
                              title: order_id
                              description: The adjustment's order id.
                            description:
                              type: string
                              title: description
                              description: The adjustment's description.
                            promotion_id:
                              type: string
                              title: promotion_id
                              description: The adjustment's promotion id.
                            provider_id:
                              type: string
                              title: provider_id
                              description: The adjustment's provider id.
                            created_at:
                              type: string
                              format: date-time
                              title: created_at
                              description: The adjustment's created at.
                            updated_at:
                              type: string
                              format: date-time
                              title: updated_at
                              description: The adjustment's updated at.
                      original_total:
                        type: number
                        title: original_total
                        description: The shipping method's original total.
                      original_subtotal:
                        type: number
                        title: original_subtotal
                        description: The shipping method's original subtotal.
                      original_tax_total:
                        type: number
                        title: original_tax_total
                        description: The shipping method's original tax total.
                      total:
                        type: number
                        title: total
                        description: The shipping method's total.
                      detail:
                        type: object
                        description: The shipping method's detail.
                        x-schemaName: BaseOrderShippingDetail
                        required:
                          - id
                          - shipping_method_id
                          - shipping_method
                          - created_at
                          - updated_at
                        properties:
                          id:
                            type: string
                            title: id
                            description: The detail's ID.
                          shipping_method_id:
                            type: string
                            title: shipping_method_id
                            description: The detail's shipping method id.
                          shipping_method:
                            type: object
                            description: The detail's shipping method.
                            x-schemaName: BaseOrderShippingMethod
                          claim_id:
                            type: string
                            title: claim_id
                            description: The detail's claim id.
                          exchange_id:
                            type: string
                            title: exchange_id
                            description: The detail's exchange id.
                          return_id:
                            type: string
                            title: return_id
                            description: The detail's return id.
                          created_at:
                            type: string
                            format: date-time
                            title: created_at
                            description: The detail's created at.
                          updated_at:
                            type: string
                            format: date-time
                            title: updated_at
                            description: The detail's updated at.
                      subtotal:
                        type: number
                        title: subtotal
                        description: The shipping method's subtotal.
                      tax_total:
                        type: number
                        title: tax_total
                        description: The shipping method's tax total.
                      discount_total:
                        type: number
                        title: discount_total
                        description: The shipping method's discount total.
                      discount_tax_total:
                        type: number
                        title: discount_tax_total
                        description: The shipping method's discount tax total.
                      created_at:
                        type: string
                        format: date-time
                        title: created_at
                        description: The shipping method's created at.
                      updated_at:
                        type: string
                        format: date-time
                        title: updated_at
                        description: The shipping method's updated at.
                  shipping_method_id:
                    type: string
                    title: shipping_method_id
                    description: The adjustment's shipping method id.
                  id:
                    type: string
                    title: id
                    description: The adjustment's ID.
                  code:
                    type: string
                    title: code
                    description: The adjustment's code.
                  amount:
                    type: number
                    title: amount
                    description: The adjustment's amount.
                  order_id:
                    type: string
                    title: order_id
                    description: The adjustment's order id.
                  description:
                    type: string
                    title: description
                    description: The adjustment's description.
                  promotion_id:
                    type: string
                    title: promotion_id
                    description: The adjustment's promotion id.
                  provider_id:
                    type: string
                    title: provider_id
                    description: The adjustment's provider id.
                  created_at:
                    type: string
                    format: date-time
                    title: created_at
                    description: The adjustment's created at.
                  updated_at:
                    type: string
                    format: date-time
                    title: updated_at
                    description: The adjustment's updated at.
              - type: object
                description: The adjustment's adjustments.
                required:
                  - shipping_method
                properties:
                  shipping_method:
                    type: object
                    description: The adjustment's shipping method.
                    x-schemaName: StoreOrderShippingMethod
                    required:
                      - id
                      - order_id
                      - name
                      - amount
                      - is_tax_inclusive
                      - shipping_option_id
                      - data
                      - metadata
                      - original_total
                      - original_subtotal
                      - original_tax_total
                      - total
                      - subtotal
                      - tax_total
                      - discount_total
                      - discount_tax_total
                      - created_at
                      - updated_at
                    properties:
                      tax_lines:
                        type: array
                        description: The shipping method's tax lines.
                        items:
                          allOf:
                            - type: object
                              description: The tax line's tax lines.
                              x-schemaName: BaseOrderShippingMethodTaxLine
                              required:
                                - shipping_method
                                - shipping_method_id
                                - total
                                - subtotal
                                - id
                                - code
                                - rate
                                - created_at
                                - updated_at
                              properties:
                                shipping_method:
                                  type: object
                                  description: The tax line's shipping method.
                                  x-schemaName: BaseOrderShippingMethod
                                shipping_method_id:
                                  type: string
                                  title: shipping_method_id
                                  description: The tax line's shipping method id.
                                total:
                                  type: number
                                  title: total
                                  description: The tax line's total.
                                subtotal:
                                  type: number
                                  title: subtotal
                                  description: The tax line's subtotal.
                                id:
                                  type: string
                                  title: id
                                  description: The tax line's ID.
                                description:
                                  type: string
                                  title: description
                                  description: The tax line's description.
                                tax_rate_id:
                                  type: string
                                  title: tax_rate_id
                                  description: The tax line's tax rate id.
                                code:
                                  type: string
                                  title: code
                                  description: The tax line's code.
                                rate:
                                  type: number
                                  title: rate
                                  description: The tax line's rate.
                                provider_id:
                                  type: string
                                  title: provider_id
                                  description: The tax line's provider id.
                                created_at:
                                  type: string
                                  format: date-time
                                  title: created_at
                                  description: The tax line's created at.
                                updated_at:
                                  type: string
                                  format: date-time
                                  title: updated_at
                                  description: The tax line's updated at.
                            - type: object
                              description: The tax line's tax lines.
                              required:
                                - shipping_method
                              properties:
                                shipping_method:
                                  type: object
                                  description: The tax line's shipping method.
                                  x-schemaName: StoreOrderShippingMethod
                      adjustments:
                        type: array
                        description: The shipping method's adjustments.
                        items:
                          allOf:
                            - type: object
                              description: The adjustment's adjustments.
                              x-schemaName: BaseOrderShippingMethodAdjustment
                              required:
                                - shipping_method
                                - shipping_method_id
                                - id
                                - amount
                                - order_id
                                - created_at
                                - updated_at
                              properties:
                                shipping_method:
                                  type: object
                                  description: The adjustment's shipping method.
                                  x-schemaName: BaseOrderShippingMethod
                                shipping_method_id:
                                  type: string
                                  title: shipping_method_id
                                  description: The adjustment's shipping method id.
                                id:
                                  type: string
                                  title: id
                                  description: The adjustment's ID.
                                code:
                                  type: string
                                  title: code
                                  description: The adjustment's code.
                                amount:
                                  type: number
                                  title: amount
                                  description: The adjustment's amount.
                                order_id:
                                  type: string
                                  title: order_id
                                  description: The adjustment's order id.
                                description:
                                  type: string
                                  title: description
                                  description: The adjustment's description.
                                promotion_id:
                                  type: string
                                  title: promotion_id
                                  description: The adjustment's promotion id.
                                provider_id:
                                  type: string
                                  title: provider_id
                                  description: The adjustment's provider id.
                                created_at:
                                  type: string
                                  format: date-time
                                  title: created_at
                                  description: The adjustment's created at.
                                updated_at:
                                  type: string
                                  format: date-time
                                  title: updated_at
                                  description: The adjustment's updated at.
                            - type: object
                              description: The adjustment's adjustments.
                              required:
                                - shipping_method
                              properties:
                                shipping_method:
                                  type: object
                                  description: The adjustment's shipping method.
                                  x-schemaName: StoreOrderShippingMethod
                      detail:
                        allOf:
                          - type: object
                            description: The shipping method's detail.
                            x-schemaName: BaseOrderShippingDetail
                            required:
                              - id
                              - shipping_method_id
                              - shipping_method
                              - created_at
                              - updated_at
                            properties:
                              id:
                                type: string
                                title: id
                                description: The detail's ID.
                              shipping_method_id:
                                type: string
                                title: shipping_method_id
                                description: The detail's shipping method id.
                              shipping_method:
                                type: object
                                description: The detail's shipping method.
                                x-schemaName: BaseOrderShippingMethod
                              claim_id:
                                type: string
                                title: claim_id
                                description: The detail's claim id.
                              exchange_id:
                                type: string
                                title: exchange_id
                                description: The detail's exchange id.
                              return_id:
                                type: string
                                title: return_id
                                description: The detail's return id.
                              created_at:
                                type: string
                                format: date-time
                                title: created_at
                                description: The detail's created at.
                              updated_at:
                                type: string
                                format: date-time
                                title: updated_at
                                description: The detail's updated at.
                          - type: object
                            description: The shipping method's detail.
                            required:
                              - shipping_method
                            properties:
                              shipping_method:
                                type: object
                                description: The detail's shipping method.
                                x-schemaName: StoreOrderShippingMethod
                      id:
                        type: string
                        title: id
                        description: The shipping method's ID.
                      order_id:
                        type: string
                        title: order_id
                        description: The shipping method's order id.
                      name:
                        type: string
                        title: name
                        description: The shipping method's name.
                      description:
                        type: string
                        title: description
                        description: The shipping method's description.
                      amount:
                        type: number
                        title: amount
                        description: The shipping method's amount.
                      is_tax_inclusive:
                        type: boolean
                        title: is_tax_inclusive
                        description: The shipping method's is tax inclusive.
                      shipping_option_id:
                        type: string
                        title: shipping_option_id
                        description: The shipping method's shipping option id.
                      data:
                        type: object
                        description: The shipping method's data.
                      metadata:
                        type: object
                        description: The shipping method's metadata.
                        externalDocs:
                          url: https://docs.medusajs.com/api/store#manage-metadata
                          description: Learn how to manage metadata
                      original_total:
                        type: number
                        title: original_total
                        description: The shipping method's original total.
                      original_subtotal:
                        type: number
                        title: original_subtotal
                        description: The shipping method's original subtotal.
                      original_tax_total:
                        type: number
                        title: original_tax_total
                        description: The shipping method's original tax total.
                      total:
                        type: number
                        title: total
                        description: The shipping method's total.
                      subtotal:
                        type: number
                        title: subtotal
                        description: The shipping method's subtotal.
                      tax_total:
                        type: number
                        title: tax_total
                        description: The shipping method's tax total.
                      discount_total:
                        type: number
                        title: discount_total
                        description: The shipping method's discount total.
                      discount_tax_total:
                        type: number
                        title: discount_tax_total
                        description: The shipping method's discount tax total.
                      created_at:
                        type: string
                        format: date-time
                        title: created_at
                        description: The shipping method's created at.
                      updated_at:
                        type: string
                        format: date-time
                        title: updated_at
                        description: The shipping method's updated at.
            description: The adjustment's adjustments.
        original_total:
          type: number
          title: original_total
          description: The shipping method's total including taxes, excluding promotions.
        original_subtotal:
          type: number
          title: original_subtotal
          description: The shipping method's total excluding taxes, including promotions.
        original_tax_total:
          type: number
          title: original_tax_total
          description: The shipping method's total taxes excluding promotions.
        total:
          type: number
          title: total
          description: The shipping method's total including taxes and promotions.
        subtotal:
          type: number
          title: subtotal
          description: The shipping method's total excluding taxes, including promotions.
        tax_total:
          type: number
          title: tax_total
          description: The shipping method's tax total including promotions.
        discount_total:
          type: number
          title: discount_total
          description: The total discounts applied on the shipping method.
        discount_tax_total:
          type: number
          title: discount_tax_total
          description: The taxes applied on the discount amount.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the shipping method was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the shipping method was updated.
        detail:
          allOf:
            - $ref: '#/components/schemas/BaseOrderShippingDetail'
            - type: object
              description: The shipping method's detail.
              required:
                - shipping_method
              properties:
                shipping_method:
                  type: object
                  description: The detail's shipping method.
                  x-schemaName: StoreOrderShippingMethod
                  required:
                    - id
                    - order_id
                    - name
                    - amount
                    - is_tax_inclusive
                    - shipping_option_id
                    - data
                    - metadata
                    - original_total
                    - original_subtotal
                    - original_tax_total
                    - total
                    - subtotal
                    - tax_total
                    - discount_total
                    - discount_tax_total
                    - created_at
                    - updated_at
                  properties:
                    tax_lines:
                      type: array
                      description: The shipping method's tax lines.
                      items:
                        allOf:
                          - type: object
                            description: The tax line's tax lines.
                            x-schemaName: BaseOrderShippingMethodTaxLine
                            required:
                              - shipping_method
                              - shipping_method_id
                              - total
                              - subtotal
                              - id
                              - code
                              - rate
                              - created_at
                              - updated_at
                            properties:
                              shipping_method:
                                type: object
                                description: The tax line's shipping method.
                                x-schemaName: BaseOrderShippingMethod
                              shipping_method_id:
                                type: string
                                title: shipping_method_id
                                description: The tax line's shipping method id.
                              total:
                                type: number
                                title: total
                                description: The tax line's total.
                              subtotal:
                                type: number
                                title: subtotal
                                description: The tax line's subtotal.
                              id:
                                type: string
                                title: id
                                description: The tax line's ID.
                              description:
                                type: string
                                title: description
                                description: The tax line's description.
                              tax_rate_id:
                                type: string
                                title: tax_rate_id
                                description: The tax line's tax rate id.
                              code:
                                type: string
                                title: code
                                description: The tax line's code.
                              rate:
                                type: number
                                title: rate
                                description: The tax line's rate.
                              provider_id:
                                type: string
                                title: provider_id
                                description: The tax line's provider id.
                              created_at:
                                type: string
                                format: date-time
                                title: created_at
                                description: The tax line's created at.
                              updated_at:
                                type: string
                                format: date-time
                                title: updated_at
                                description: The tax line's updated at.
                          - type: object
                            description: The tax line's tax lines.
                            required:
                              - shipping_method
                            properties:
                              shipping_method:
                                type: object
                                description: The tax line's shipping method.
                                x-schemaName: StoreOrderShippingMethod
                    adjustments:
                      type: array
                      description: The shipping method's adjustments.
                      items:
                        allOf:
                          - type: object
                            description: The adjustment's adjustments.
                            x-schemaName: BaseOrderShippingMethodAdjustment
                            required:
                              - shipping_method
                              - shipping_method_id
                              - id
                              - amount
                              - order_id
                              - created_at
                              - updated_at
                            properties:
                              shipping_method:
                                type: object
                                description: The adjustment's shipping method.
                                x-schemaName: BaseOrderShippingMethod
                              shipping_method_id:
                                type: string
                                title: shipping_method_id
                                description: The adjustment's shipping method id.
                              id:
                                type: string
                                title: id
                                description: The adjustment's ID.
                              code:
                                type: string
                                title: code
                                description: The adjustment's code.
                              amount:
                                type: number
                                title: amount
                                description: The adjustment's amount.
                              order_id:
                                type: string
                                title: order_id
                                description: The adjustment's order id.
                              description:
                                type: string
                                title: description
                                description: The adjustment's description.
                              promotion_id:
                                type: string
                                title: promotion_id
                                description: The adjustment's promotion id.
                              provider_id:
                                type: string
                                title: provider_id
                                description: The adjustment's provider id.
                              created_at:
                                type: string
                                format: date-time
                                title: created_at
                                description: The adjustment's created at.
                              updated_at:
                                type: string
                                format: date-time
                                title: updated_at
                                description: The adjustment's updated at.
                          - type: object
                            description: The adjustment's adjustments.
                            required:
                              - shipping_method
                            properties:
                              shipping_method:
                                type: object
                                description: The adjustment's shipping method.
                                x-schemaName: StoreOrderShippingMethod
                    detail:
                      allOf:
                        - type: object
                          description: The shipping method's detail.
                          x-schemaName: BaseOrderShippingDetail
                          required:
                            - id
                            - shipping_method_id
                            - shipping_method
                            - created_at
                            - updated_at
                          properties:
                            id:
                              type: string
                              title: id
                              description: The detail's ID.
                            shipping_method_id:
                              type: string
                              title: shipping_method_id
                              description: The detail's shipping method id.
                            shipping_method:
                              type: object
                              description: The detail's shipping method.
                              x-schemaName: BaseOrderShippingMethod
                            claim_id:
                              type: string
                              title: claim_id
                              description: The detail's claim id.
                            exchange_id:
                              type: string
                              title: exchange_id
                              description: The detail's exchange id.
                            return_id:
                              type: string
                              title: return_id
                              description: The detail's return id.
                            created_at:
                              type: string
                              format: date-time
                              title: created_at
                              description: The detail's created at.
                            updated_at:
                              type: string
                              format: date-time
                              title: updated_at
                              description: The detail's updated at.
                        - type: object
                          description: The shipping method's detail.
                          required:
                            - shipping_method
                          properties:
                            shipping_method:
                              type: object
                              description: The detail's shipping method.
                              x-schemaName: StoreOrderShippingMethod
                    id:
                      type: string
                      title: id
                      description: The shipping method's ID.
                    order_id:
                      type: string
                      title: order_id
                      description: The shipping method's order id.
                    name:
                      type: string
                      title: name
                      description: The shipping method's name.
                    description:
                      type: string
                      title: description
                      description: The shipping method's description.
                    amount:
                      type: number
                      title: amount
                      description: The shipping method's amount.
                    is_tax_inclusive:
                      type: boolean
                      title: is_tax_inclusive
                      description: The shipping method's is tax inclusive.
                    shipping_option_id:
                      type: string
                      title: shipping_option_id
                      description: The shipping method's shipping option id.
                    data:
                      type: object
                      description: The shipping method's data.
                    metadata:
                      type: object
                      description: The shipping method's metadata.
                      externalDocs:
                        url: https://docs.medusajs.com/api/store#manage-metadata
                        description: Learn how to manage metadata
                    original_total:
                      type: number
                      title: original_total
                      description: The shipping method's original total.
                    original_subtotal:
                      type: number
                      title: original_subtotal
                      description: The shipping method's original subtotal.
                    original_tax_total:
                      type: number
                      title: original_tax_total
                      description: The shipping method's original tax total.
                    total:
                      type: number
                      title: total
                      description: The shipping method's total.
                    subtotal:
                      type: number
                      title: subtotal
                      description: The shipping method's subtotal.
                    tax_total:
                      type: number
                      title: tax_total
                      description: The shipping method's tax total.
                    discount_total:
                      type: number
                      title: discount_total
                      description: The shipping method's discount total.
                    discount_tax_total:
                      type: number
                      title: discount_tax_total
                      description: The shipping method's discount tax total.
                    created_at:
                      type: string
                      format: date-time
                      title: created_at
                      description: The shipping method's created at.
                    updated_at:
                      type: string
                      format: date-time
                      title: updated_at
                      description: The shipping method's updated at.
          description: Details of changes to a shipping method.
    StorePaymentCollection:
      type: object
      description: The payment collection's details.
      x-schemaName: StorePaymentCollection
      required:
        - payment_providers
        - id
        - currency_code
        - amount
        - status
      properties:
        id:
          type: string
          title: id
          description: The payment collection's ID.
        currency_code:
          type: string
          title: currency_code
          description: The payment collection's currency code.
        amount:
          type: number
          title: amount
          description: The total amount to be paid.
        authorized_amount:
          type: number
          title: authorized_amount
          description: The total authorized amount of the collection's payments.
        captured_amount:
          type: number
          title: captured_amount
          description: The total captured amount of the collection's payments.
        refunded_amount:
          type: number
          title: refunded_amount
          description: The total refunded amount of the collection's payments.
        completed_at:
          type: string
          format: date-time
          title: completed_at
          description: The date the payment collection was completed.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the payment collection was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the payment collection was updated.
        metadata:
          type: object
          description: The payment collection's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        status:
          type: string
          description: The payment collection's status.
          enum:
            - canceled
            - not_paid
            - awaiting
            - authorized
            - partially_authorized
        payment_providers:
          type: array
          description: The payment provider used to process the collection's payments and sessions.
          items:
            $ref: '#/components/schemas/StorePaymentProvider'
        payment_sessions:
          type: array
          description: The payment collection's payment sessions.
          items:
            $ref: '#/components/schemas/StorePaymentSession'
        payments:
          type: array
          description: The payment collection's payments.
          items:
            $ref: '#/components/schemas/BasePayment'
    StorePaymentCollectionResponse:
      type: object
      description: The payment collection's details.
      x-schemaName: StorePaymentCollectionResponse
      required:
        - payment_collection
      properties:
        payment_collection:
          $ref: '#/components/schemas/StorePaymentCollection'
    StorePaymentProvider:
      type: object
      description: The payment provider's details
      x-schemaName: StorePaymentProvider
      required:
        - id
      properties:
        id:
          type: string
          title: id
          description: The payment provider's ID.
    StorePaymentSession:
      type: object
      description: The payment session's details.
      x-schemaName: StorePaymentSession
      properties:
        id:
          type: string
          title: id
          description: The payment session's ID.
        amount:
          type: number
          title: amount
          description: The payment session's amount.
        currency_code:
          type: string
          title: currency_code
          description: The payment session's currency code.
          example: usd
        provider_id:
          type: string
          title: provider_id
          description: The ID of the payment provider processing this session.
        data:
          type: object
          description: The payment session's data, useful for the payment provider processing the payment.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/payment/payment-session#data-property
        context:
          type: object
          description: The context around the payment, such as the customer's details.
          example:
            customer:
              id: cus_123
        status:
          type: string
          description: The payment session's status.
          enum:
            - authorized
            - captured
            - canceled
            - pending
            - requires_more
            - error
        authorized_at:
          type: string
          title: authorized_at
          description: The date the payment session was authorized.
          format: date-time
        payment_collection:
          type: object
        payment:
          $ref: '#/components/schemas/BasePayment'
      required:
        - id
        - amount
        - currency_code
        - provider_id
        - data
        - status
    StorePrice:
      type: object
      description: The price's details.
      x-schemaName: StorePrice
      required:
        - id
        - currency_code
        - amount
        - min_quantity
        - max_quantity
      properties:
        id:
          type: string
          title: id
          description: The price's ID.
        currency_code:
          type: string
          title: currency_code
          description: The price's ISO 2 currency code.
          example: usd
        amount:
          type: number
          title: amount
          description: The price's amount.
        min_quantity:
          type: number
          title: min_quantity
          description: The minimum quantity required in the cart for the price to apply.
        max_quantity:
          type: number
          title: max_quantity
          description: The maximum quantity required in the cart for the price to apply.
        price_rules:
          type: array
          description: The price's rules.
          items:
            $ref: '#/components/schemas/StorePriceRule'
    StorePriceRule:
      type: object
      description: The price rule's details.
      x-schemaName: StorePriceRule
      required:
        - id
        - attribute
        - operator
        - value
      properties:
        id:
          type: string
          title: id
          description: The price rule's ID.
        attribute:
          type: string
          title: attribute
          description: The price rule's attribute.
        operator:
          type: string
          description: The price rule's operator.
          enum:
            - gt
            - lt
            - eq
            - lte
            - gte
        value:
          type: string
          title: value
          description: The price rule's value.
    StoreProduct:
      type: object
      description: The product's details.
      x-schemaName: StoreProduct
      required:
        - variants
        - options
        - images
        - length
        - title
        - status
        - description
        - id
        - created_at
        - updated_at
        - subtitle
        - thumbnail
        - handle
        - is_giftcard
        - width
        - weight
        - height
        - origin_country
        - hs_code
        - mid_code
        - material
        - collection_id
        - type_id
        - discountable
        - external_id
        - deleted_at
      properties:
        categories:
          type: array
          description: The product's categories.
          items:
            type: object
        type:
          $ref: '#/components/schemas/StoreProductType'
        length:
          type: number
          title: length
          description: The product's length.
        title:
          type: string
          title: title
          description: The product's title.
        status:
          type: string
          description: The product's status.
          enum:
            - draft
            - proposed
            - published
            - rejected
        options:
          type: array
          description: The product's options.
          items:
            $ref: '#/components/schemas/StoreProductOption'
        description:
          type: string
          title: description
          description: The product's description.
        id:
          type: string
          title: id
          description: The product's ID.
        metadata:
          type: object
          description: The product's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the product was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the product was updated.
        variants:
          type: array
          description: The product's variants.
          items:
            $ref: '#/components/schemas/StoreProductVariant'
        handle:
          type: string
          title: handle
          description: The product's handle.
        subtitle:
          type: string
          title: subtitle
          description: The product's subtitle.
        is_giftcard:
          type: boolean
          title: is_giftcard
          description: Whether the product is a gift card.
        thumbnail:
          type: string
          title: thumbnail
          description: The product's thumbnail URL.
        width:
          type: number
          title: width
          description: The product's width.
        weight:
          type: number
          title: weight
          description: The product's weight.
        height:
          type: number
          title: height
          description: The product's height.
        origin_country:
          type: string
          title: origin_country
          description: The product's origin country.
        hs_code:
          type: string
          title: hs_code
          description: The product's HS code.
        mid_code:
          type: string
          title: mid_code
          description: The product's MID code.
        material:
          type: string
          title: material
          description: The product's material.
        collection:
          $ref: '#/components/schemas/StoreCollection'
        collection_id:
          type: string
          title: collection_id
          description: The ID of the collection that the product belongs to.
        type_id:
          type: string
          title: type_id
          description: The ID of the product's type.
        tags:
          type: array
          description: The product's tags.
          items:
            $ref: '#/components/schemas/StoreProductTag'
        images:
          type: array
          description: The product's images.
          items:
            $ref: '#/components/schemas/StoreProductImage'
        discountable:
          type: boolean
          title: discountable
          description: Whether the product can be discounted.
        external_id:
          type: string
          title: external_id
          description: The ID of the product in an external service or system.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the product was deleted.
    StoreProductCategory:
      type: object
      description: The category's details.
      x-schemaName: StoreProductCategory
      required:
        - id
        - name
        - description
        - handle
        - rank
        - parent_category_id
        - parent_category
        - category_children
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The category's ID.
        name:
          type: string
          title: name
          description: The category's name.
        description:
          type: string
          title: description
          description: The category's description.
        handle:
          type: string
          title: handle
          description: The category's handle.
        rank:
          type: number
          title: rank
          description: The category's rank.
        parent_category_id:
          type: string
          title: parent_category_id
          description: The ID of the category's parent.
        parent_category:
          type: object
        category_children:
          type: array
          description: The category's children.
          items:
            type: object
        metadata:
          type: object
          description: The category's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the category was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the category was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the category was deleted.
        products:
          type: array
          description: The category's products.
          items:
            $ref: '#/components/schemas/StoreProduct'
    StoreProductCategoryListResponse:
      type: object
      description: The paginated list of product categories.
      x-schemaName: StoreProductCategoryListResponse
      required:
        - limit
        - offset
        - count
        - product_categories
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        product_categories:
          type: array
          description: The list of product categories.
          items:
            $ref: '#/components/schemas/StoreProductCategory'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    StoreProductCategoryResponse:
      type: object
      description: The product category's details.
      x-schemaName: StoreProductCategoryResponse
      required:
        - product_category
      properties:
        product_category:
          $ref: '#/components/schemas/StoreProductCategory'
    StoreProductImage:
      type: object
      description: The image's details.
      x-schemaName: StoreProductImage
      required:
        - id
        - url
        - rank
      properties:
        id:
          type: string
          title: id
          description: The image's ID.
        url:
          type: string
          title: url
          description: The image's URL.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the image was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the image was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the image was deleted.
        metadata:
          type: object
          description: The image's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        rank:
          type: number
          title: rank
          description: The image's rank among its sibling images
    StoreProductListResponse:
      type: object
      description: The paginated list of products.
      x-schemaName: StoreProductListResponse
      allOf:
        - type: object
          description: Pagination details
          required:
            - limit
            - offset
            - count
          properties:
            limit:
              type: number
              title: limit
              description: The maximum number of items returned.
            offset:
              type: number
              title: offset
              description: The number of items skipped before retrieving the returned items.
            count:
              type: number
              title: count
              description: The total count of items.
            estimate_count:
              type: number
              title: estimate_count
              description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
              x-featureFlag: index_engine
        - type: object
          description: The list of products.
          required:
            - products
          properties:
            products:
              type: array
              description: The list of products.
              items:
                $ref: '#/components/schemas/StoreProduct'
    StoreProductOption:
      type: object
      description: The product option's details.
      x-schemaName: StoreProductOption
      properties:
        id:
          type: string
          title: id
          description: The option's ID.
        title:
          type: string
          title: title
          description: The option's title.
        product:
          type: object
        product_id:
          type: string
          title: product_id
          description: The ID of the product this option belongs to.
        values:
          type: array
          description: The option's values.
          items:
            $ref: '#/components/schemas/StoreProductOptionValue'
        metadata:
          type: object
          description: The option's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the product option was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the product option was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the product option was deleted.
      required:
        - title
        - id
    StoreProductOptionValue:
      type: object
      description: The product option value's details.
      x-schemaName: StoreProductOptionValue
      required:
        - value
        - id
      properties:
        id:
          type: string
          title: id
          description: The value's ID.
        value:
          type: string
          title: value
          description: The value.
        option:
          type: object
        option_id:
          type: string
          title: option_id
          description: The ID of the option this value belongs to.
        metadata:
          type: object
          description: The value's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the value was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the value was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the value was deleted.
    StoreProductResponse:
      type: object
      description: The product's details.
      x-schemaName: StoreProductResponse
      required:
        - product
      properties:
        product:
          $ref: '#/components/schemas/StoreProduct'
    StoreProductTag:
      type: object
      description: The tag's details.
      x-schemaName: StoreProductTag
      properties:
        id:
          type: string
          title: id
          description: The tag's ID.
        value:
          type: string
          title: value
          description: The tag's value.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the tag was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the tag was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the tag was deleted.
        metadata:
          type: object
          description: The tag's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
      required:
        - id
        - value
        - created_at
        - updated_at
    StoreProductTagListResponse:
      type: object
      description: The paginated list of product tags.
      x-schemaName: StoreProductTagListResponse
      required:
        - limit
        - offset
        - count
        - product_tags
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items to skip before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items available.
        product_tags:
          type: array
          description: The list of product tags.
          items:
            $ref: '#/components/schemas/StoreProductTag'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    StoreProductTagResponse:
      type: object
      description: The product tag's details.
      x-schemaName: StoreProductTagResponse
      required:
        - product_tag
      properties:
        product_tag:
          $ref: '#/components/schemas/StoreProductTag'
    StoreProductType:
      type: object
      description: The product type's details.
      x-schemaName: StoreProductType
      required:
        - id
        - value
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The product type's ID.
        metadata:
          type: object
          description: The product type's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the product type was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the product type was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the product type was deleted.
        value:
          type: string
          title: value
          description: The type's value.
    StoreProductTypeListResponse:
      type: object
      description: The paginated list of product types.
      x-schemaName: StoreProductTypeListResponse
      required:
        - limit
        - offset
        - count
        - product_types
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items to skip before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items available.
        product_types:
          type: array
          description: The list of product types.
          items:
            $ref: '#/components/schemas/StoreProductType'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    StoreProductTypeResponse:
      type: object
      description: The product type's details.
      x-schemaName: StoreProductTypeResponse
      required:
        - product_type
      properties:
        product_type:
          $ref: '#/components/schemas/StoreProductType'
    StoreProductVariant:
      type: object
      description: The variant's details.
      x-schemaName: StoreProductVariant
      properties:
        options:
          type: array
          description: The variant's options.
          items:
            $ref: '#/components/schemas/StoreProductOptionValue'
        product:
          type: object
        length:
          type: number
          title: length
          description: The variant's length.
        title:
          type: string
          title: title
          description: The variant's title.
        metadata:
          type: object
          description: The variant's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        id:
          type: string
          title: id
          description: The variant's ID.
        width:
          type: number
          title: width
          description: The variant's width.
        weight:
          type: number
          title: weight
          description: The variant's weight.
        height:
          type: number
          title: height
          description: The variant's height.
        origin_country:
          type: string
          title: origin_country
          description: The variant's origin country.
        hs_code:
          type: string
          title: hs_code
          description: The variant's HS code.
        mid_code:
          type: string
          title: mid_code
          description: The variant's MID code.
        material:
          type: string
          title: material
          description: The variant's material.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the variant was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the variant was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the variant was deleted.
        product_id:
          type: string
          title: product_id
          description: The ID of the product this variant belongs to.
        sku:
          type: string
          title: sku
          description: The variant's SKU.
        barcode:
          type: string
          title: barcode
          description: The variant's barcode.
        ean:
          type: string
          title: ean
          description: The variant's EAN.
        upc:
          type: string
          title: upc
          description: The variant's UPC.
        allow_backorder:
          type: boolean
          title: allow_backorder
          description: Whether the variant can be ordered even if it's not in stock.
        manage_inventory:
          type: boolean
          title: manage_inventory
          description: Whether Medusa manages the variant's inventory. If disabled, the variant is always considered in stock.
          externalDocs:
            url: https://docs.medusajs.com/resources/storefront-development/products/inventory
            description: 'Storefront guide: How to retrieve a product variant''s inventory details.'
        inventory_quantity:
          type: number
          title: inventory_quantity
          description: The variant's inventory quantity. This property is only available if you pass `+variants.inventory_quantity` in the `fields` query parameter.
          externalDocs:
            url: https://docs.medusajs.com/resources/storefront-development/products/inventory
            description: 'Storefront guide: How to retrieve a product variant''s inventory details.'
        variant_rank:
          type: number
          title: variant_rank
          description: The variant's rank among its siblings.
        calculated_price:
          $ref: '#/components/schemas/BaseCalculatedPriceSet'
        thumbnail:
          type: string
          title: thumbnail
          description: The variant's thumbnail.
        images:
          type: array
          description: The variant's images.
          items:
            $ref: '#/components/schemas/BaseProductImage'
      required:
        - options
        - title
        - length
        - id
        - created_at
        - updated_at
        - thumbnail
        - width
        - weight
        - height
        - origin_country
        - hs_code
        - mid_code
        - material
        - images
        - deleted_at
        - manage_inventory
        - allow_backorder
        - ean
        - upc
        - barcode
        - sku
    StoreRegion:
      type: object
      description: The region's details.
      x-schemaName: StoreRegion
      required:
        - id
        - name
        - currency_code
      properties:
        id:
          type: string
          title: id
          description: The region's ID.
        name:
          type: string
          title: name
          description: The region's name.
        currency_code:
          type: string
          title: currency_code
          description: The region's currency code.
          example: usd
        automatic_taxes:
          type: boolean
          title: automatic_taxes
          description: Whether taxes are calculated automatically during checkout for carts that belong to this region.
        countries:
          type: array
          description: The region's countries.
          items:
            $ref: '#/components/schemas/BaseRegionCountry'
        payment_providers:
          type: array
          description: The region's payment providers.
          items:
            $ref: '#/components/schemas/AdminPaymentProvider'
        metadata:
          type: object
          description: The region's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the region was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the region was updated.
    StoreRegionCountry:
      type: object
      description: The country's details.
      x-schemaName: StoreRegionCountry
      required:
        - id
      properties:
        id:
          type: string
          title: id
          description: The country's ID.
        iso_2:
          type: string
          title: iso_2
          description: The country's ISO 2.
          example: us
        iso_3:
          type: string
          title: iso_3
          description: The country's ISO 3.
          example: usa
        num_code:
          type: string
          title: num_code
          description: The country's num code.
          example: 840
        name:
          type: string
          title: name
          description: The country's name.
        display_name:
          type: string
          title: display_name
          description: The country's display name.
    StoreRemoveGiftCardFromCart:
      type: object
      description: The details to remove a gift card from the cart.
      x-schemaName: StoreRemoveGiftCardFromCart
      required:
        - code
      properties:
        code:
          type: string
          title: code
          description: The gift card code to remove from the cart.
    StoreRequestOrderTransfer:
      type: object
      description: The details of requesting the order transfer.
      x-schemaName: StoreRequestOrderTransfer
      properties:
        description:
          type: string
          title: description
          description: The transfer's description, which can be shown to the other customer receiving the request.
    StoreReturn:
      type: object
      description: The return's details.
      x-schemaName: StoreReturn
      required:
        - items
        - id
        - display_id
        - created_at
        - order_id
        - canceled_at
        - received_at
      properties:
        items:
          type: array
          description: The return's items.
          items:
            $ref: '#/components/schemas/StoreReturnItem'
        status:
          type: string
          description: The return's status.
          enum:
            - received
            - canceled
            - requested
            - open
            - partially_received
        id:
          type: string
          title: id
          description: The return's ID.
        display_id:
          type: number
          title: display_id
          description: The return's display ID.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the return was created.
        order_id:
          type: string
          title: order_id
          description: The ID of the order this return belongs to.
        location_id:
          type: string
          title: location_id
          description: The ID of the location the return items are being returned to.
        canceled_at:
          type: string
          title: canceled_at
          description: The date the return was canceled.
        exchange_id:
          type: string
          title: exchange_id
          description: The ID of the associated exchange.
        claim_id:
          type: string
          title: claim_id
          description: The ID of the associated claim.
        refund_amount:
          type: number
          title: refund_amount
          description: The amount to be refunded.
        received_at:
          type: string
          title: received_at
          description: The date the return items were received.
    StoreReturnItem:
      type: object
      description: The return item's details.
      x-schemaName: StoreReturnItem
      required:
        - id
        - quantity
        - received_quantity
        - damaged_quantity
        - item_id
        - return_id
      properties:
        id:
          type: string
          title: id
          description: The item's ID.
        quantity:
          type: number
          title: quantity
          description: The item's quantity.
        received_quantity:
          type: number
          title: received_quantity
          description: The item's received quantity.
        damaged_quantity:
          type: number
          title: damaged_quantity
          description: The item's damaged quantity.
        reason_id:
          type: string
          title: reason_id
          description: The ID of the item's reason.
        note:
          type: string
          title: note
          description: A note with more details on why the item is returned.
        item_id:
          type: string
          title: item_id
          description: The ID of the item in the order.
        return_id:
          type: string
          title: return_id
          description: The ID of the return this item belongs to.
        metadata:
          type: object
          description: The item's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
    StoreReturnReason:
      type: object
      description: The return reason's details.
      x-schemaName: StoreReturnReason
      required:
        - id
        - value
        - label
        - created_at
        - updated_at
      properties:
        id:
          type: string
          title: id
          description: The return reason's ID.
        value:
          type: string
          title: value
          description: The return reason's value.
        label:
          type: string
          title: label
          description: The return reason's label.
        description:
          type: string
          title: description
          description: The return reason's description.
        metadata:
          type: object
          description: The return reason's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the return reason was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the return reason was updated.
    StoreReturnReasonResponse:
      type: object
      description: The return reason's details.
      x-schemaName: StoreReturnReasonResponse
      required:
        - return_reason
      properties:
        return_reason:
          $ref: '#/components/schemas/StoreReturnReason'
    StoreReturnResponse:
      type: object
      description: The return's details.
      x-schemaName: StoreReturnResponse
      required:
        - return
      properties:
        return:
          $ref: '#/components/schemas/StoreReturn'
    StoreShippingOption:
      type: object
      description: The shipping option's details.
      x-schemaName: StoreShippingOption
      required:
        - id
        - name
        - price_type
        - service_zone_id
        - provider_id
        - provider
        - shipping_option_type_id
        - type
        - shipping_profile_id
        - amount
        - is_tax_inclusive
        - data
        - metadata
      properties:
        id:
          type: string
          title: id
          description: The shipping option's ID.
        name:
          type: string
          title: name
          description: The shipping option's name.
        price_type:
          type: string
          description: The shipping option's price type. If it's `flat`, the price is fixed and is set in the `prices` property. If it's `calculated`, the price is calculated on checkout by the associated fulfillment provider.
          enum:
            - flat
            - calculated
        service_zone_id:
          type: string
          title: service_zone_id
          description: The ID of the service zone the shipping option belongs to.
        provider_id:
          type: string
          title: provider_id
          description: The ID of the fulfillment provider handling this option.
        provider:
          $ref: '#/components/schemas/BaseFulfillmentProvider'
        shipping_option_type_id:
          type: string
          title: shipping_option_type_id
          description: The ID of the shipping option's type.
        type:
          $ref: '#/components/schemas/StoreShippingOptionType'
        shipping_profile_id:
          type: string
          title: shipping_profile_id
          description: The ID of the associated shipping profile.
        amount:
          type: number
          title: amount
          description: The shipping option's amount.
        is_tax_inclusive:
          type: boolean
          title: is_tax_inclusive
          description: Whether the amount includes taxes.
        data:
          type: object
          description: The shipping option's data, useful for the provider handling fulfillment.
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/fulfillment/shipping-option#data-property
        metadata:
          type: object
          description: The shipping option's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
    StoreShippingOptionListResponse:
      type: object
      description: The list of shipping options.
      x-schemaName: StoreShippingOptionListResponse
      required:
        - shipping_options
      properties:
        shipping_options:
          type: array
          description: The list of shipping options.
          items:
            allOf:
              - $ref: '#/components/schemas/StoreCartShippingOption'
              - type: object
                description: The shipping option's details.
                required:
                  - service_zone
                properties:
                  service_zone:
                    type: object
                    description: The shipping option's service zone.
                    required:
                      - id
                      - fulfillment_set_id
                      - fulfillment_set
                    properties:
                      id:
                        type: string
                        title: id
                        description: The service zone's ID.
                      fulfillment_set_id:
                        type: string
                        title: fulfillment_set_id
                        description: The ID of the service zone's fulfillment set.
                      fulfillment_set:
                        type: object
                        description: The service zone's fulfillment set.
                        required:
                          - id
                          - type
                          - location
                        properties:
                          id:
                            type: string
                            title: id
                            description: The fulfillment set's ID.
                          type:
                            type: string
                            title: type
                            description: The fulfillment set's type.
                          location:
                            type: object
                            description: The fulfillment set's location details.
                            required:
                              - id
                              - address
                            properties:
                              id:
                                type: string
                                title: id
                                description: The location's ID.
                              address:
                                type: object
                                description: The location's address.
                                x-schemaName: StoreFulfillmentAddress
                                required:
                                  - id
                                  - company
                                  - address_1
                                  - address_2
                                  - city
                                  - country_code
                                  - province
                                  - postal_code
                                  - phone
                                  - metadata
                                  - created_at
                                  - updated_at
                                  - deleted_at
                                properties:
                                  id:
                                    type: string
                                    title: id
                                    description: The address's ID.
                                  company:
                                    type: string
                                    title: company
                                    description: The address's company.
                                  address_1:
                                    type: string
                                    title: address_1
                                    description: The first line of the address.
                                  address_2:
                                    type: string
                                    title: address_2
                                    description: The second line of the address.
                                  city:
                                    type: string
                                    title: city
                                    description: The address's city.
                                  country_code:
                                    type: string
                                    title: country_code
                                    description: The address's country code.
                                    example: us
                                  province:
                                    type: string
                                    title: province
                                    description: The address's province.
                                  postal_code:
                                    type: string
                                    title: postal_code
                                    description: The address's postal code.
                                  phone:
                                    type: string
                                    title: phone
                                    description: The address's phone.
                                  metadata:
                                    type: object
                                    description: The address's metadata. Can hold custom key-value pairs.
                                  created_at:
                                    type: string
                                    format: date-time
                                    title: created_at
                                    description: The date the address was created.
                                  updated_at:
                                    type: string
                                    format: date-time
                                    title: updated_at
                                    description: The date the address was updated.
                                  deleted_at:
                                    type: string
                                    format: date-time
                                    title: deleted_at
                                    description: The date the address was deleted.
            description: The shipping option's details.
    StoreShippingOptionResponse:
      type: object
      description: The shipping option's details.
      x-schemaName: StoreShippingOptionResponse
      required:
        - shipping_option
      properties:
        shipping_option:
          $ref: '#/components/schemas/StoreCartShippingOption'
    StoreShippingOptionType:
      type: object
      description: The shipping option type's details.
      x-schemaName: StoreShippingOptionType
      required:
        - id
        - label
        - description
        - code
        - shipping_option_id
        - created_at
        - updated_at
        - deleted_at
      properties:
        id:
          type: string
          title: id
          description: The type's ID.
        label:
          type: string
          title: label
          description: The type's label.
        description:
          type: string
          title: description
          description: The type's description.
        code:
          type: string
          title: code
          description: The type's code.
        shipping_option_id:
          type: string
          title: shipping_option_id
          description: The ID of the associated shipping option.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the type was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the type was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the type was deleted.
    StoreStoreCreditAccount:
      type: object
      description: The store credit account's details.
      x-schemaName: StoreStoreCreditAccount
      required:
        - customer
        - id
        - currency_code
        - credits
        - debits
        - balance
        - metadata
        - created_at
        - updated_at
      properties:
        customer:
          $ref: '#/components/schemas/StoreCustomer'
        id:
          type: string
          title: id
          description: The store credit account's ID.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that the store credit account belongs to.
        currency_code:
          type: string
          title: currency_code
          description: The store credit account's currency code.
          example: usd
        credits:
          type: number
          title: credits
          description: The account's credits.
        debits:
          type: number
          title: debits
          description: The account's debits.
        balance:
          type: number
          title: balance
          description: The store credit account's balance.
        metadata:
          type: object
          description: The store credit account's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the store credit account was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the store credit account was updated.
        code:
          type: string
          title: code
          description: The store credit account's code.
    StoreStoreCreditAccountResponse:
      type: object
      description: The store credit account's details.
      x-schemaName: StoreStoreCreditAccountResponse
      required:
        - store_credit_account
      properties:
        store_credit_account:
          $ref: '#/components/schemas/StoreStoreCreditAccount'
    StoreStoreCreditAccountsResponse:
      type: object
      description: The paginated list of store credit accounts.
      x-schemaName: StoreStoreCreditAccountsResponse
      required:
        - limit
        - offset
        - count
        - store_credit_accounts
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of store credit accounts to return.
        offset:
          type: number
          title: offset
          description: The number of store credit accounts to skip before retrieving the results.
        count:
          type: number
          title: count
          description: The total number of store credit accounts available.
        store_credit_accounts:
          type: array
          description: The list of store credit accounts.
          items:
            $ref: '#/components/schemas/StoreStoreCreditAccount'
        estimate_count:
          type: number
          title: estimate_count
          description: The store credit account's estimate count.
          x-featureFlag: index_engine
    StoreUpdateCustomer:
      type: object
      description: The details to update in the customer.
      x-schemaName: StoreUpdateCustomer
      properties:
        company_name:
          type: string
          title: company_name
          description: The customer's company name.
        first_name:
          type: string
          title: first_name
          description: The customer's first name.
        last_name:
          type: string
          title: last_name
          description: The customer's last name.
        phone:
          type: string
          title: phone
          description: The customer's phone.
        metadata:
          type: object
          description: The customer's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
    StoreUpdateCustomerAddress:
      type: object
      description: The properties to update in the address.
      properties:
        first_name:
          type: string
          title: first_name
          description: The customer's first name.
        last_name:
          type: string
          title: last_name
          description: The customer's last name.
        phone:
          type: string
          title: phone
          description: The customer's phone.
        company:
          type: string
          title: company
          description: The address's company.
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        city:
          type: string
          title: city
          description: The address's city.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
        province:
          type: string
          title: province
          description: The address's ISO 3166-2 province code. Must be lower-case.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        address_name:
          type: string
          title: address_name
          description: The address's name.
        is_default_shipping:
          type: boolean
          title: is_default_shipping
          description: Whether the address is used by default for shipping during checkout.
        is_default_billing:
          type: boolean
          title: is_default_billing
          description: Whether the address is used by default for billing during checkout.
        metadata:
          type: object
          description: Holds custom key-value pairs.
      x-schemaName: StoreUpdateCustomerAddress
    UpdateAddress:
      type: object
      description: The details to update in the address.
      x-schemaName: UpdateAddress
      required:
        - id
      properties:
        id:
          type: string
          title: id
          description: The ID of an existing address to update.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that this address belongs to.
        company:
          type: string
          title: company
          description: The address's company.
        first_name:
          type: string
          title: first_name
          description: The address's first name.
        last_name:
          type: string
          title: last_name
          description: The address's last name.
        address_1:
          type: string
          title: address_1
          description: The address's first line.
        address_2:
          type: string
          title: address_2
          description: The address's second line.
        city:
          type: string
          title: city
          description: The address's city.
        country_code:
          type: string
          title: country_code
          description: The address's country code.
          example: usd
        province:
          type: string
          title: province
          description: The address's ISO 3166-2 province code. Must be lower-case.
          example: us-ca
          externalDocs:
            url: https://en.wikipedia.org/wiki/ISO_3166-2
            description: Learn more about ISO 3166-2
        postal_code:
          type: string
          title: postal_code
          description: The address's postal code.
        phone:
          type: string
          title: phone
          description: The address's phone.
        metadata:
          type: object
          description: The address's metadata, can hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
    UpdateCartData:
      type: object
      description: The details to update in a cart.
      x-schemaName: UpdateCartData
      properties:
        region_id:
          type: string
          title: region_id
          description: The ID of the associated region. This can affect the prices and currency code of the cart.
        customer_id:
          type: string
          title: customer_id
          description: The ID of the customer that the cart belongs to.
        sales_channel_id:
          type: string
          title: sales_channel_id
          description: The ID of the associated sales channel. Only products available in this channel can be added to the cart.
        email:
          type: string
          title: email
          description: The email of the customer that the cart belongs to.
          format: email
        currency_code:
          type: string
          title: currency_code
          description: The cart's currency code.
          example: usd
        shipping_address_id:
          type: string
          title: shipping_address_id
          description: The ID of the cart's shipping address.
        billing_address_id:
          type: string
          title: billing_address_id
          description: The ID of the cart's billing address.
        billing_address:
          oneOf:
            - $ref: '#/components/schemas/CreateAddress'
            - $ref: '#/components/schemas/UpdateAddress'
        shipping_address:
          oneOf:
            - $ref: '#/components/schemas/CreateAddress'
            - $ref: '#/components/schemas/UpdateAddress'
        metadata:
          type: object
          description: The cart's metadata, ca hold custom key-value pairs.
          externalDocs:
            url: https://docs.medusajs.com/api/store#manage-metadata
            description: Learn how to manage metadata
    WorkflowExecutionContext:
      type: object
      description: The workflow execution's context.
      x-schemaName: WorkflowExecutionContext
      required:
        - compensate
        - errors
      properties:
        data:
          type: object
          description: The context's data.
          properties:
            invoke:
              type: object
              description: The step's invokation details.
              required:
                - output
              additionalProperties:
                type: object
                properties:
                  output:
                    type: object
                    description: The invokation's details.
                    required:
                      - output
                      - compensateInput
                    properties:
                      output:
                        description: the step's output
                      compensateInput:
                        description: the compensation function's input.
            payload:
              description: the payload of the transaction.
          required:
            - invoke
        compensate:
          type: object
          description: The context's compensate.
        errors:
          type: array
          description: The context's errors.
          items:
            type: object
            description: The error's details.
            properties:
              error:
                type: object
                description: The error's details.
              action:
                type: string
                title: action
                description: The error's action.
              handlerType:
                type: string
                title: handlerType
                description: The error's handler type.
            required:
              - error
              - action
              - handlerType
  responses:
    default_error:
      description: Default Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: unknown_error
            message: An unknown error occurred.
            type: unknown_error
    invalid_state_error:
      description: Invalid State Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: unknown_error
            message: The request conflicted with another request. You may retry the request with the provided Idempotency-Key.
            type: QueryRunnerAlreadyReleasedError
    invalid_request_error:
      description: Invalid Request Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: invalid_request_error
            message: Discount with code TEST already exists.
            type: duplicate_error
    not_found_error:
      description: Not Found Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Entity with id 1 was not found
            type: not_found
    400_error:
      description: Client Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            not_allowed:
              $ref: '#/components/examples/not_allowed_error'
            invalid_data:
              $ref: '#/components/examples/invalid_data_error'
    500_error:
      description: Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            database:
              $ref: '#/components/examples/database_error'
            unexpected_state:
              $ref: '#/components/examples/unexpected_state_error'
            invalid_argument:
              $ref: '#/components/examples/invalid_argument_error'
            default_error:
              $ref: '#/components/examples/default_error'
    unauthorized:
      description: User is not authorized. Must log in first
      content:
        text/plain:
          schema:
            type: string
            default: Unauthorized
            example: Unauthorized
    incorrect_credentials:
      description: User does not exist or incorrect credentials
      content:
        text/plain:
          schema:
            type: string
            default: Unauthorized
            example: Unauthorized
  examples:
    not_allowed_error:
      summary: Not Allowed Error
      value:
        message: Discount must be set to dynamic
        type: not_allowed
    invalid_data_error:
      summary: Invalid Data Error
      value:
        message: first_name must be a string
        type: invalid_data
    multiple_errors:
      summary: Multiple Errors
      value:
        message: Provided request body contains errors. Please check the data and retry the request
        errors:
          - message: first_name must be a string
            type: invalid_data
          - message: Discount must be set to dynamic
            type: not_allowed
    database_error:
      summary: Database Error
      value:
        code: api_error
        message: An error occured while hashing password
        type: database_error
    unexpected_state_error:
      summary: Unexpected State Error
      value:
        message: cart.total must be defined
        type: unexpected_state
    invalid_argument_error:
      summary: Invalid Argument Error
      value:
        message: cart.total must be defined
        type: unexpected_state
    default_error:
      summary: Default Error
      value:
        code: unknown_error
        message: An unknown error occurred.
        type: unknown_error
  securitySchemes:
    api_token:
      type: http
      x-displayName: API Token
      scheme: bearer
    jwt_token:
      type: http
      x-displayName: JWT Token
      scheme: bearer
    cookie_auth:
      type: apiKey
      in: cookie
      name: connect.sid
      x-displayName: Cookie Session ID
    reset_password:
      type: http
      x-displayName: Reset Password Token
      scheme: bearer
      x-is-auth: false
